Panoramica delle opzioni di distribuzione di Milvus
Milvus è un database vettoriale scalabile e altamente performante. Supporta casi d'uso di dimensioni molto diverse, dalle demo eseguite localmente in Jupyter Notebook ai cluster Kubernetes su larga scala che gestiscono decine di miliardi di vettori. Attualmente esistono tre opzioni di distribuzione di Milvus: Milvus Lite, Milvus Standalone e Milvus Distributed.
Milvus Lite
Milvus Lite è una libreria Python che può essere importata nelle applicazioni. Essendo una versione leggera di Milvus, è ideale per la prototipazione rapida in Jupyter Notebook o per l'esecuzione su dispositivi intelligenti con risorse limitate. Milvus Lite supporta le stesse API delle altre distribuzioni di Milvus. Il codice lato client che interagisce con Milvus Lite può funzionare anche con le istanze Milvus in altre modalità di distribuzione.
Per integrare Milvus Lite nelle vostre applicazioni, eseguite pip install pymilvus
per installarlo e usate l'istruzione MilvusClient("./demo.db")
per istanziare un database vettoriale con un file locale che conserva tutti i dati. Per maggiori dettagli, fate riferimento a Eseguire Milvus Lite.
Milvus Standalone
Milvus Standalone è un'installazione su server a macchina singola. Tutti i componenti di Milvus Standalone sono racchiusi in un'unica immagine Docker, il che rende comoda la distribuzione. Se avete un carico di lavoro di produzione ma preferite non usare Kubernetes, l'esecuzione di Milvus Standalone su una singola macchina con memoria sufficiente è una buona opzione. Inoltre, Milvus Standalone supporta l'alta disponibilità attraverso la replica master-slave.
Milvus distribuito
Milvus Distributed può essere distribuito su cluster Kubernetes. Questa distribuzione presenta un'architettura cloud-native, in cui il carico di ingestione e le query di ricerca sono gestite separatamente da nodi isolati, consentendo la ridondanza dei componenti critici. Offre la massima scalabilità e disponibilità, nonché la flessibilità di personalizzare le risorse allocate in ogni componente. Milvus Distributed è la scelta migliore per gli utenti aziendali che gestiscono sistemi di ricerca vettoriale su larga scala in produzione.
Scegliere la distribuzione giusta per il proprio caso d'uso
La scelta di una modalità di distribuzione dipende in genere dalla fase di sviluppo dell'applicazione:
Per una rapida prototipazione
Se desiderate realizzare rapidamente qualcosa come prototipo o a scopo di apprendimento, ad esempio demo di Retrieval Augmented Generation (RAG), chatbot AI, ricerca multimodale, Milvus Lite stesso o una combinazione di Milvus Lite e Milvus Standalone è adatto. È possibile utilizzare Milvus Lite nei notebook per la prototipazione rapida ed esplorare vari approcci, come le diverse strategie di chunking in RAG. Potreste voler distribuire l'applicazione costruita con Milvus Lite in una produzione su piccola scala per servire utenti reali, o per convalidare l'idea su insiemi di dati più grandi, ad esempio più di qualche milione di vettori. Milvus Standalone è appropriato. La logica applicativa di Milvus Lite può ancora essere condivisa, poiché tutte le distribuzioni di Milvus hanno la stessa API lato client. I dati memorizzati in Milvus Lite possono anche essere trasferiti a Milvus Standalone con uno strumento a riga di comando.
Distribuzione di produzione su piccola scala
Per la produzione in fase iniziale, quando il progetto sta ancora cercando di adattarsi al mercato del prodotto e l'agilità è più importante della scalabilità, Milvus Standalone è la scelta migliore. È in grado di scalare fino a 100 milioni di vettori, se le risorse della macchina sono sufficienti, e richiede molto meno DevOps rispetto al mantenimento di un cluster K8s.
Distribuzione di produzione su larga scala
Quando la vostra azienda cresce rapidamente e la scala dei dati supera la capacità di un singolo server, è il momento di prendere in considerazione Milvus Distributed. Potete continuare a usare Milvus Standalone per l'ambiente di sviluppo o di staging per la sua convenienza e gestire il cluster K8s che esegue Milvus Distributed. In questo modo si può arrivare a decine di miliardi di vettori, oltre a garantire la flessibilità necessaria per adattare le dimensioni dei nodi ai carichi di lavoro specifici, come ad esempio i casi di alta lettura e scrittura poco frequente o di alta scrittura e bassa lettura.
Ricerca locale sui dispositivi edge
Per le ricerche private o sensibili sui dispositivi edge, è possibile implementare Milvus Lite sul dispositivo senza affidarsi a un servizio basato su cloud per la ricerca di testo o immagini. Questo è adatto a casi come la ricerca di documenti proprietari o il rilevamento di oggetti sul dispositivo.
La scelta della modalità di distribuzione di Milvus dipende dalla fase e dalla scala del progetto. Milvus offre una soluzione flessibile e potente per diverse esigenze, dalla prototipazione rapida alla distribuzione aziendale su larga scala.
- Milvus Lite è consigliato per insiemi di dati più piccoli, fino a pochi milioni di vettori.
- Milvus Standalone è adatto a insiemi di dati di medie dimensioni, fino a 100 milioni di vettori.
- Milvus Distributed è progettato per implementazioni su larga scala, in grado di gestire insiemi di dati da 100 milioni a decine di miliardi di vettori.
Selezionare l'opzione di distribuzione per il proprio caso d'uso
Confronto sulle funzionalità
Caratteristiche | Milvus Lite | Milvus Standalone | Milvus distribuito |
---|---|---|---|
SDK / Client Lirary | Python gRPC | Python Go Java Node.js C# RESTful | Python Java Go Node.js C# RESTful |
Tipi di dati | Vettore denso Vettore sparso Vettore binario Booleano Intero Punto mobile VarChar Array JSON | Dense Vector Sparse Vector Binary Vector Boolean Integer Floating Point VarChar Array JSON | Vettore denso Vettore sparso Vettore binario Booleano Intero Punto flottante VarChar Array JSON |
Capacità di ricerca | Ricerca vettoriale (ANN Search) Filtraggio dei metadati Ricerca per intervallo Query scalare Ottenere entità per chiave primaria Ricerca ibrida | Ricerca vettoriale (ANN Search) Filtraggio dei metadati Ricerca per intervallo Query scalare Ottenere entità per chiave primaria Ricerca ibrida | Ricerca vettoriale (ricerca ANN) Filtraggio dei metadati Ricerca per intervallo Query scalare Ottenere entità per chiave primaria Ricerca ibrida |
Operazioni CRUD | ✔️ | ✔️ | ✔️ |
Gestione avanzata dei dati | N/D | Controllo di accesso Partizione Chiave di partizione | Controllo degli accessi Partizione Chiave di partizione Raggruppamento fisico delle risorse |
Livelli di coerenza | Forte | Forte Stallo limitato Sessione Eventuale | Forte Stallo limitato Sessione Eventuale |