🚀 Prova Zilliz Cloud, la versione completamente gestita di Milvus, gratuitamente—sperimenta prestazioni 10 volte più veloci! Prova Ora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Introduzione all'SDK e all'API Milvus Python

Introduzione all'SDK e all'API Milvus Python

  • Engineering
March 21, 2022
Xuan Yang

Cover image 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.

Interaction 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.

CreatePartitionRequest Richiesta di creazione di partizione

Si veda un esempio di protocollo nel repository GitHub di PyMilvus alla riga 19.

Example Esempio

La definizione di CreatePartitionRequest si trova qui.

Definition 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.

common.proto comune.proto

schema.proto

schema.proto definisce lo schema nei parametri. Il seguente esempio di codice è un esempio di CollectionSchema.

schema.proto 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:

  1. Opera direttamente sugli oggetti.
  2. Isola la logica del servizio e i dettagli dell'accesso ai dati.
  3. 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.

Control Connection 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 Started

Like the article? Spread the word

Continua a Leggere