Introduzione all'SDK e all'API Milvus Python
Immagine di copertina
Di Xuan Yang
Sfondo
La figura seguente illustra l'interazione tra gli SDK e Milvus attraverso gRPC. Immaginiamo che Milvus sia una scatola nera. I buffer di protocollo sono utilizzati per definire le interfacce del server e la struttura delle informazioni che trasportano. Pertanto, tutte le operazioni nella scatola nera Milvus sono definite dalle API di protocollo.
Interazione
API di protocollo Milvus
L'API di protocollo Milvus è costituita da milvus.proto
, common.proto
, e schema.proto
, che sono file di Protocol Buffers con il suffisso .proto
. Per garantire il corretto funzionamento, gli SDK devono interagire con Milvus con questi file Protocol Buffers.
milvus.proto
milvus.proto
è il componente fondamentale dell'API di protocollo di Milvus, perché definisce l'interfaccia MilvusService
, che definisce ulteriormente tutte le interfacce RPC di Milvus.
Il seguente esempio di codice mostra l'interfaccia CreatePartitionRequest
. Ha due parametri principali di tipo stringa collection_name
e partition_name
, in base ai quali è possibile avviare una richiesta di creazione di partizione.
Richiesta di creazione di partizione
Si veda un esempio di protocollo nel repository GitHub di PyMilvus alla riga 19.
Esempio
La definizione di CreatePartitionRequest
si trova qui.
Definizione
I collaboratori che desiderano sviluppare una funzione di Milvus o un SDK in un linguaggio di programmazione diverso sono invitati a trovare tutte le interfacce che Milvus offre tramite RPC.
comune.proto
common.proto
definisce i tipi comuni di informazioni, tra cui ErrorCode
, e Status
.
comune.proto
schema.proto
schema.proto
definisce lo schema nei parametri. Il seguente esempio di codice è un esempio di CollectionSchema
.
schema.proto
milvus.proto
, common.proto
e schema.proto
insieme costituiscono l'API di Milvus, rappresentando tutte le operazioni che possono essere chiamate tramite RPC.
Se si scava nel codice sorgente e si osserva attentamente, si scopre che quando si chiamano interfacce come create_index
, in realtà si chiamano più interfacce RPC come describe_collection
e describe_index
. Molte delle interfacce esterne di Milvus sono una combinazione di più interfacce RPC.
Avendo compreso i comportamenti di RPC, è possibile sviluppare nuove funzionalità per Milvus attraverso una combinazione. Siete più che invitati a usare la vostra immaginazione e creatività e a contribuire alla comunità di Milvus.
PyMilvus 2.0
Mappatura relazionale degli oggetti (ORM)
In poche parole, il termine Object-relational mapping (ORM) si riferisce al fatto che quando si opera su un oggetto locale, tali operazioni hanno effetto sull'oggetto corrispondente sul server. L'API in stile ORM di PyMilvus presenta le seguenti caratteristiche:
- Opera direttamente sugli oggetti.
- Isola la logica del servizio e i dettagli dell'accesso ai dati.
- Nasconde la complessità dell'implementazione ed è possibile eseguire gli stessi script su diverse istanze di Milvus, indipendentemente dal loro approccio di distribuzione o dalla loro implementazione.
API in stile ORM
L'essenza dell'API in stile ORM risiede nel controllo della connessione a Milvus. Ad esempio, è possibile specificare alias per più server Milvus e connettersi o disconnettersi da essi semplicemente con i loro alias. È anche possibile eliminare l'indirizzo del server locale e controllare determinati oggetti tramite una connessione specifica.
Controllo della connessione
Un'altra caratteristica dell'API in stile ORM è che, dopo l'astrazione, tutte le operazioni possono essere eseguite direttamente sugli oggetti, comprese le raccolte, le partizioni e gli indici.
È possibile astrarre un oggetto collezione ottenendo un oggetto esistente o creandone uno nuovo. È anche possibile assegnare una connessione Milvus a oggetti specifici utilizzando gli alias di connessione, in modo da poter operare su questi oggetti localmente.
Per creare un oggetto partizione, è possibile crearlo con il suo oggetto collezione genitore, oppure è possibile farlo come quando si crea un oggetto collezione. Questi metodi possono essere utilizzati anche per un oggetto indice.
Nel caso in cui questi oggetti partizione o indice esistano, è possibile ottenerli attraverso l'oggetto collezione padre.
Informazioni sulla serie Deep Dive
Con l'annuncio ufficiale della disponibilità generale di Milvus 2.0, abbiamo organizzato questa serie di blog Milvus Deep Dive per fornire un'interpretazione approfondita dell'architettura e del codice sorgente di Milvus. Gli argomenti trattati in questa serie di blog includono:
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word