Cosa contiene Milvus 1.0?
Milvus.jpeg
Milvus è un database vettoriale open-source progettato per gestire enormi insiemi di dati vettoriali da milioni, miliardi o addirittura trilioni. Milvus ha ampie applicazioni che spaziano dalla scoperta di nuovi farmaci, alla computer vision, alla guida autonoma, ai motori di raccomandazione, ai chatbot e molto altro ancora.
Nel marzo 2021 Zilliz, l'azienda che sta dietro a Milvus, ha rilasciato la prima versione della piattaforma con supporto a lungo termine: Milvus v1.0. Dopo mesi di test approfonditi, una versione stabile e pronta per la produzione del database vettoriale più famoso al mondo è pronta per il primo giorno. Questo articolo del blog illustra alcuni fondamenti di Milvus e le caratteristiche principali della versione v1.0.
Distribuzioni di Milvus
Milvus è disponibile nelle distribuzioni per sola CPU e per GPU. La prima si affida esclusivamente alla CPU per la creazione di indici e la ricerca; la seconda consente la ricerca ibrida con CPU e GPU e la creazione di indici che accelerano ulteriormente Milvus. Ad esempio, utilizzando la distribuzione ibrida, la CPU può essere utilizzata per la ricerca e la GPU per la creazione dell'indice, migliorando ulteriormente l'efficienza delle query.
Entrambe le distribuzioni di Milvus sono disponibili in Docker. È possibile compilare Milvus da Docker (se il sistema operativo lo supporta) o compilare Milvus dal codice sorgente su Linux (altri sistemi operativi non sono supportati).
Incorporare i vettori
I vettori sono memorizzati in Milvus come entità. Ogni entità ha un campo ID vettore e un campo vettore. Milvus v1.0 supporta solo ID vettoriali interi. Quando si crea una collezione in Milvus, gli ID dei vettori possono essere generati automaticamente o definiti manualmente. Milvus garantisce che gli ID vettoriali generati automaticamente siano unici, tuttavia gli ID definiti manualmente possono essere duplicati all'interno di Milvus. Se si definiscono manualmente gli ID, è responsabilità dell'utente assicurarsi che tutti gli ID siano unici.
Partizioni
Milvus supporta la creazione di partizioni in una raccolta. In situazioni in cui i dati vengono inseriti regolarmente e i dati storici non sono significativi (ad esempio, dati in streaming), le partizioni possono essere utilizzate per accelerare la ricerca di similarità vettoriale. Una raccolta può avere fino a 4.096 partizioni. Specificando una ricerca vettoriale all'interno di una specifica partizione, si restringe la ricerca e si può ridurre significativamente il tempo di interrogazione, in particolare per le raccolte che contengono più di un trilione di vettori.
Ottimizzazione dell'algoritmo dell'indice
Milvus si basa su numerose librerie di indici ampiamente diffuse, tra cui Faiss, NMSLIB e Annoy. Milvus è molto più di un wrapper di base per queste librerie di indici. Ecco alcuni dei principali miglioramenti apportati alle librerie sottostanti:
- Ottimizzazione delle prestazioni degli indici IVF utilizzando l'algoritmo k-means di Elkan.
- Ottimizzazione della ricerca FLAT.
- Supporto dell'indice ibrido IVF_SQ8H, che può ridurre le dimensioni dei file di indice fino al 75% senza sacrificare la precisione dei dati. IVF_SQ8H si basa su IVF_SQ8, con un richiamo identico ma una velocità di interrogazione molto maggiore. È stato progettato specificamente per Milvus per sfruttare la capacità di elaborazione parallela delle GPU e il potenziale di sinergia tra la co-processazione CPU/GPU.
- Compatibilità dinamica del set di istruzioni.
Ricerca, creazione di indici e altre ottimizzazioni di Milvus
Le seguenti ottimizzazioni sono state apportate a Milvus per migliorare le prestazioni di ricerca e creazione di indici.
- Le prestazioni di ricerca sono ottimizzate quando il numero di query (nq) è inferiore al numero di thread della CPU.
- Milvus combina le richieste di ricerca di un client che hanno lo stesso topK e gli stessi parametri di ricerca.
- La costruzione dell'indice viene sospesa quando arrivano le richieste di ricerca.
- Milvus precarica automaticamente le collezioni in memoria all'avvio.
- È possibile assegnare più dispositivi GPU per accelerare la ricerca di similarità vettoriale.
Metriche di distanza
Milvus è un database vettoriale costruito per alimentare la ricerca di similarità vettoriale. La piattaforma è stata costruita pensando alle applicazioni MLOps e AI di livello produttivo. Milvus supporta un'ampia gamma di metriche di distanza per il calcolo della somiglianza, come la distanza euclidea (L2), il prodotto interno (IP), la distanza di Jaccard, Tanimoto, la distanza di Hamming, la sovrastruttura e la sottostruttura. Le ultime due metriche sono comunemente utilizzate nella ricerca molecolare e nella scoperta di nuovi farmaci da parte dell'intelligenza artificiale.
Registrazione
Milvus supporta la rotazione dei log. Nel file di configurazione del sistema, milvus.yaml, è possibile impostare la dimensione di un singolo file di log, il numero di file di log e l'output del log su stdout.
Soluzione distribuita
Mishards, un middleware di sharding di Milvus, è la soluzione distribuita per Milvus. Con un nodo di scrittura e un numero illimitato di nodi di lettura, Mishards libera il potenziale computazionale del cluster di server. Le sue caratteristiche includono l'inoltro delle richieste, la suddivisione lettura/scrittura, lo scaling dinamico/orizzontale e altro ancora.
Monitoraggio
Milvus è compatibile con Prometheus, un toolkit open-source per il monitoraggio e gli avvisi di sistema. Milvus aggiunge il supporto per Pushgateway in Prometheus, rendendo possibile a Prometheus l'acquisizione di metriche batch di breve durata. Il sistema di monitoraggio e di avvisi funziona come segue:
- Il server Milvus invia dati metrici personalizzati a Pushgateway.
- Pushgateway assicura che i dati metrici effimeri siano inviati in modo sicuro a Prometheus.
- Prometheus continua a prelevare i dati da Pushgateway.
- Alertmanager è utilizzato per impostare la soglia di allarme per i diversi indicatori e inviare avvisi via e-mail o messaggio.
Gestione dei metadati
Milvus utilizza SQLite per la gestione dei metadati per impostazione predefinita. SQLite è implementato in Milvus e non richiede alcuna configurazione. In un ambiente di produzione, si consiglia di utilizzare MySQL per la gestione dei metadati.
Impegnatevi con la nostra comunità open-source:
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word