Cos'è il Database di Vettori Milvus?
Milvus è stato creato nel 2019 con l'obiettivo principale di memorizzare, indicizzare e gestire vettori di embedding su larga scala generati da reti neurali profonde e altri modelli di apprendimento automatico (ML).
È un database appositamente progettato per gestire query di vettori di input, in grado di indicizzare vettori su una scala di decine di miliardi. A differenza dei database relazionali esistenti che trattano principalmente modelli predefiniti e dati strutturati, Milvus è progettato sin dall'inizio per gestire vettori di embedding derivati da dati non strutturati.
Con l'espansione continua di Internet, i dati non strutturati sono diventati sempre più comuni, tra cui email, documenti, dati dei sensori IoT, foto su Facebook, strutture proteiche e altro ancora. Per consentire ai computer di comprendere e processare dati non strutturati, è necessario trasformare tali dati in vettori utilizzando tecniche di embedding. Milvus memorizza e indica questi vettori. Milvus può analizzare la distanza di similarità tra due vettori calcolando la loro distanza di similarità, deducendo la loro correlazione. Se due vettori di embedding sono molto simili, indica che le origini dei dati originali sono anche simili.
Flusso di lavoro di Milvus:
Concetti Chiave
Se non sei familiare con il mondo dei database vettoriali e della ricerca di similarità, potresti trovare utili i seguenti concetti chiave.
Scopri di più sui termini Milvus.
Dati Non Strutturati
I dati non strutturati, tra cui immagini, video, audio e linguaggio naturale, si riferiscono a informazioni che non seguono un modello predefinito o una struttura organizzativa. Questo tipo di dati rappresenta circa l'80% dei dati globali e può essere trasformato in vettori utilizzando vari modelli di intelligenza artificiale (IA) e apprendimento automatico (ML).
Vettori di Embedding
I vettori di embedding sono le astrazioni delle caratteristiche dei dati non strutturati (come email, dati dei sensori IoT, foto su Instagram, strutture proteiche, ecc.). Dal punto di vista matematico, i vettori di embedding sono costituiti da numeri in virgola mobile o array binari. Le moderne tecniche di embedding vengono utilizzate per trasformare i dati non strutturati in vettori di embedding.
Ricerca di Similarità tra Vettori
La ricerca di similarità tra vettori coinvolge il confronto di un vettore con un database per trovare il vettore più simile al vettore di query. Utilizzare algoritmi di ricerca approssimata del vicino più prossimo (ANN) può accelerare il processo di ricerca. Se due vettori di embedding sono molto simili, indica che la fonte dati originale è anche simile.
Perché Scegliere Milvus?
- Elevate prestazioni per la ricerca di vettori su set di dati su larga scala.
- Supporto della community incentrato sullo sviluppatore con supporto multi-lingua e strumenti.
- Garantisce scalabilità e alta affidabilità nel cloud, mantenendo la stabilità anche in caso di guasti.
- Consente la ricerca mista combinando il filtraggio scalare con la ricerca di similarità tra vettori.
Quali Indici e Metriche Standard Sono Supportati?
Gli indici sono le unità organizzative dei dati. Prima di cercare o interrogare le entità inserite, è necessario dichiarare il tipo di indice e la metrica standard di similarità. Se non si specifica il tipo di indice, Milvus utilizzerà di default la ricerca a forza bruta.
Tipi di Indice
Milvus supporta la maggior parte dei tipi di indice vettoriali per la ricerca approssimata del vicino più prossimo (ANNS), tra cui:
- FLAT: Adatto per scenari che cercano risultati di ricerca completamente accurati e precisi su set di dati su piccola scala (milioni).
- IVF_FLAT: Basato sull'indice di quantizzazione, adatto per scenari che cercano un equilibrio ideale tra precisione e velocità di interrogazione. Esiste anche una versione GPU chiamata GPU_IVF_FLAT.
- IVF_SQ8: Basato sull'indice di quantizzazione, adatto per scenari che cercano una significativa riduzione della memoria su disco, CPU e GPU a causa di risorse molto limitate.
- IVF_PQ: Basato sull'indice di quantizzazione, adatto per scenari che perseguono elevate velocità di interrogazione anche a discapito della precisione. Esiste anche una versione GPU chiamata GPU_IVF_PQ.
- HNSW: Basato sull'indice del grafo, adatto per scenari con requisiti molto elevati di efficienza di ricerca.
Per informazioni più dettagliate, consultare l'Indice Vettoriale.
Metriche di Similarità
In Milvus, le metriche di similarità vengono utilizzate per misurare la similarità tra vettori. Scegliere una buona metrica di distanza può migliorare significativamente le prestazioni di classificazione e clustering. A seconda della forma dei dati di input, vengono scelte metriche di similarità specifiche per ottenere le migliori prestazioni.
Le metriche comuni utilizzate per gli embedding a virgola mobile sono:
- Distanza euclidea (L2): Questa metrica è comunemente utilizzata nel campo della visione artificiale.
- Prodotto interno (IP): Questa metrica è comunemente utilizzata nel campo del processamento del linguaggio naturale.
Le metriche comuni utilizzate per gli embedding binari sono:
- Distanza di Hamming: Questa metrica è comunemente utilizzata nel campo del processamento del linguaggio naturale.
- Similarità di Jaccard: Questa metrica è comunemente utilizzata per la ricerca di similarità molecolare.
Applicazioni di esempio
Milvus rende semplice aggiungere la ricerca di similarità alle tue applicazioni. Le applicazioni di esempio di Milvus includono:
- Ricerca di similarità delle immagini: rende le immagini ricercabili e restituisce istantaneamente le immagini più simili da un grande database.
- Ricerca di similarità dei video: convertendo i frame chiave in vettori e poi inserendo i risultati in Milvus, può cercare e raccomandare miliardi di video in tempo quasi reale.
- Ricerca di similarità dell'audio: interroga rapidamente grandi quantità di dati audio, come discorsi, musica, effetti sonori e suoni simili.
- Sistemi di raccomandazione: raccomanda informazioni o prodotti basati sul comportamento e sulle esigenze dell'utente.
- Sistemi di domande e risposte: chatbot interattivi di domande e risposte digitali che possono rispondere automaticamente alle domande dell'utente.
- Classificazione delle sequenze di DNA: classifica accuratamente i geni in millisecondi confrontando sequenze di DNA simili.
- Motori di ricerca di testo: aiuta gli utenti a trovare le informazioni che stanno cercando confrontando le parole chiave con un database di testo.
Concetto di design di Milvus
Come database vettoriale basato su cloud, Milvus separa lo storage dal calcolo nel suo design. Per migliorare l'elasticità e la flessibilità, tutti i componenti in Milvus sono privi di stato.
Il sistema è diviso in quattro livelli:
- Livello di accesso: composto da un gruppo di proxy privi di stato che fungono da livello front-end del sistema e da punti finali per gli utenti.
- Servizio di coordinamento: questo servizio assegna compiti ai nodi lavoratore e funge da hub centrale del sistema.
- Nodi lavoratore: questi nodi agiscono come braccia e gambe del sistema, seguendo le istruzioni del servizio di coordinamento ed eseguendo comandi DML/DDL attivati dagli utenti in modo non intelligente.
- Archiviazione: è il fulcro del sistema responsabile della persistenza dei dati. Include archiviazione dei metadati, agenti di log e archiviazione degli oggetti.
.
Strumenti per sviluppatori
Milvus fornisce un ricco set di API e strumenti per lo sviluppo e l'operazione.
Accesso API
Milvus fornisce librerie client avvolte attorno all'API di Milvus, che possono essere utilizzate per inserire, eliminare e interrogare dati in modo programmatico dal codice dell'applicazione:
- PyMilvus
- Node.js SDK
- Go SDK
- Java SDK
Strumenti dell'ecosistema Milvus
L'ecosistema Milvus offre diversi strumenti utili, tra cui:
- Milvus CLI
- Attu: un sistema di gestione grafica per Milvus.
- MilvusDM (Migrazione dei dati di Milvus): un tool open-source specifico per l'importazione ed esportazione dei dati con Milvus.
- Strumento di pianificazione della capacità di Milvus: aiuta a stimare la dimensione del file grezzo necessaria, la dimensione della memoria e la dimensione del disco stabile attraverso vari tipi di indice.
Limitazioni di Milvus
Milvus si impegna a fornire il miglior database vettoriale per guidare le applicazioni AI e le ricerche di similarità vettoriale. Tuttavia, il team sta lavorando continuamente per introdurre più funzionalità e strumenti ottimali per migliorare l'esperienza dell'utente. Questa pagina elenca alcune limitazioni note che gli utenti possono incontrare nell'uso di Milvus.
Lunghezza dei nomi delle risorse
Risorsa | Limite |
---|---|
Collezione | 255 caratteri |
Campo | 255 caratteri |
Indice | 255 caratteri |
Partizione | 255 caratteri |
Regole di denominazione
I nomi delle risorse possono essere composti da numeri, lettere e trattini bassi (_). I nomi devono iniziare con una lettera o un trattino basso.
Numero di risorse
Risorsa | Limite |
---|---|
Collezione | 65.536 |
Connessioni/Agenti | 65.536 |
Numero di risorse nelle collezioni
Risorsa | Limite |
---|---|
Partizione | 4.096 |
Shard | 64 |
Campo | 64 |
Indice | 1 |
Entità | Illimitato |
Lunghezza della stringa
Tipo di dato | Limite |
---|---|
VARCHAR | 65.535 |
Dimensione del vettore
Attributo | Limite |
---|---|
Dimensione | 32.768 |
Input e output per ogni RPC
Operazione | Limite |
---|---|
Operazione di inserimento | 512 MB |
Operazione di ricerca | 512 MB |
Operazione di interrogazione | 512 MB |
Limitazione del carico
Nella versione attuale, i dati da caricare devono essere entro il 90% delle risorse di memoria totale di tutti i nodi di interrogazione al fine di riservare risorse di memoria per il motore di esecuzione.
Limitazione di Ricerca
Vettore | Limite |
---|---|
topk (numero di risultati più simili da restituire) |
16.384 |
nq (numero di richieste di ricerca) |
16.384 |