Cosa sono i database vettoriali e come funzionano
I database vettoriali sono un tipo di database che memorizza i dati come vettori ad alta dimensione, che sono rappresentazioni matematiche di caratteristiche o attributi.
Questi vettori vengono generalmente generati applicando una sorta di funzione di incorporamento ai dati grezzi, come testo, immagini, audio, video e altri.
I database vettoriali possono essere definiti come uno strumento che indicizza e memorizza incorporamenti di vettori per un rapido recupero e ricerca di similarità, con funzionalità come il filtraggio dei metadati e il ridimensionamento orizzontale.
9 minuti
Crescente Interesse degli investitori
Nelle ultime settimane, c’è stato un aumento dell’interesse degli investitori per i database vettoriali. Dall’inizio del 2023 abbiamo notato che:
- la startup del database vettoriale Weaviate ha ottenuto $ 50 milioni in finanziamenti di serie B;
- Pinecone ha raccolto $ 100 milioni in finanziamenti di serie B con una valutazione di $ 750 milioni;
- Chroma , progetto open source , ha raccolto 18 milioni di dollari per il suo database di incorporamenti;
Vediamo più nel dettaglio cosa sono i database vettoriali.
Vettori come rappresentazione dei dati
I database vettoriali fanno molto affidamento sull’incorporamento di vettori, un tipo di rappresentazione dei dati che porta al suo interno le informazioni semantiche fondamentali per l’intelligenza artificiale per acquisire comprensione e mantenere una memoria a lungo termine a cui attingere durante l’esecuzione di attività complesse.
Incorporamenti vettoriali
Gli incorporamenti vettoriali sono come una mappa, ma invece di mostrarci dove sono le cose nel mondo, ci mostrano dove sono le cose in qualcosa chiamato spazio vettoriale. Lo spazio vettoriale è una specie di grande parco giochi in cui ogni cosa ha il suo posto dove giocare. Immagina di avere un gruppo di animali: un gatto, un cane, un uccello e un pesce. Possiamo creare un incorporamento vettoriale per ogni immagine assegnandole una posizione speciale nel parco giochi. Il gatto potrebbe essere in un angolo, il cane dall’altra parte. L’uccello potrebbe essere nel cielo e il pesce potrebbe essere nello stagno. Questo posto è uno spazio multidimensionale. Ogni dimensione corrisponde a diversi aspetti di essi, ad esempio, i pesci hanno le pinne, gli uccelli hanno le ali, i gatti ei cani hanno le gambe. Un altro aspetto di loro può essere che il pesce appartiene all’acqua, gli uccelli principalmente al cielo e gatti e cani a terra. Una volta che abbiamo questi vettori, possiamo usare tecniche matematiche per raggrupparli in base alla loro somiglianza. Sulla base delle informazioni in nostro possesso,
Quindi, gli incorporamenti vettoriali sono come una mappa che ci aiuta a trovare la somiglianza tra le cose nello spazio vettoriale. Proprio come una mappa ci aiuta a orientarci nel mondo, gli incorporamenti di vettori ci aiutano a orientarci nel parco giochi dei vettori.
L’idea chiave è che gli incorporamenti che sono semanticamente simili tra loro hanno una distanza minore tra loro. Per scoprire quanto sono simili, possiamo usare le funzioni di distanza vettoriale come la distanza euclidea, la distanza del coseno, ecc.
Database vettoriali vs librerie vettoriali
Le librerie vettoriali memorizzano gli incorporamenti di vettori negli indici in memoria, al fine di eseguire ricerche di somiglianza. Le librerie vettoriali hanno le seguenti caratteristiche/limitazioni:
- Memorizza solo vettori : le librerie vettoriali memorizzano solo incorporamenti di vettori e non gli oggetti associati da cui sono stati generati. Ciò significa che, quando eseguiamo una query, una libreria vettoriale risponderà con i vettori e gli ID oggetto pertinenti. Questo è limitante poiché le informazioni effettive sono memorizzate nell’oggetto e non nell’id. Per risolvere questo problema, dovremmo archiviare gli oggetti nella memoria secondaria. Possiamo quindi utilizzare gli ID restituiti dalla query e abbinarli agli oggetti per comprendere i risultati.
- I dati dell’indice sono immutabili : gli indici prodotti dalle librerie vettoriali sono immutabili. Ciò significa che una volta che abbiamo importato i nostri dati e costruito l’indice, non possiamo apportare alcuna modifica (nessun nuovo inserimento, cancellazione o modifica). Per apportare modifiche al nostro indice, dovremo ricostruirlo da zero
- Query durante la limitazione dell’importazione : la maggior parte delle librerie vettoriali non può essere interrogata durante l’importazione dei dati. È necessario importare prima tutti i nostri oggetti dati. Quindi l’indice viene creato dopo che gli oggetti sono stati importati. Questo può essere un problema per le applicazioni che richiedono l’importazione di milioni o addirittura miliardi di oggetti.
Sono disponibili molte librerie di ricerca vettoriale: FAISS di Facebook, Annoy di Spotify e ScaNN di Google. FAISS utilizza il metodo di clustering, Annoy utilizza gli alberi e ScaNN utilizza la compressione vettoriale. C’è un compromesso sulle prestazioni per ciascuno, che possiamo scegliere in base alla nostra applicazione e alla misura delle prestazioni.
CRUD
La caratteristica principale che distingue i database vettoriali dalle librerie vettoriali è la possibilità di archiviare, aggiornare ed eliminare i dati. I database vettoriali hanno il supporto CRUD completo (creazione, lettura, aggiornamento ed eliminazione) che risolve i limiti di una libreria vettoriale.
- Archivia vettori e oggetti : i database possono archiviare sia gli oggetti dati che i vettori. Poiché entrambi sono memorizzati, possiamo combinare la ricerca vettoriale con filtri strutturati. I filtri ci consentono di assicurarci che i vicini più vicini corrispondano al filtro dei metadati.
- Mutabilità : poiché i database vettoriali supportano completamente CRUD, possiamo facilmente aggiungere, rimuovere o aggiornare le voci nel nostro indice dopo che è stato creato. Ciò è particolarmente utile quando si lavora con dati che cambiano continuamente.
- Ricerca in tempo reale : a differenza delle librerie vettoriali, i database ci consentono di interrogare e modificare i nostri dati durante il processo di importazione. Man mano che carichiamo milioni di oggetti, i dati importati rimangono completamente accessibili e operativi, quindi non è necessario attendere il completamento dell’importazione per iniziare a lavorare su ciò che è già presente.
In breve, un database vettoriale fornisce una soluzione superiore per la gestione degli incorporamenti di vettori affrontando i limiti degli indici vettoriali autonomi come discusso nei punti precedenti.
Ma cosa rende i database vettoriali superiori ai database tradizionali ?
Database vettoriali vs database tradizionali
I database tradizionali sono progettati per archiviare e recuperare dati strutturati utilizzando modelli relazionali, il che significa che sono ottimizzati per query basate su colonne e righe di dati. Sebbene sia possibile archiviare incorporamenti di vettori in database tradizionali, questi database non sono ottimizzati per operazioni vettoriali e non possono eseguire ricerche di similarità o altre operazioni complesse su set di dati di grandi dimensioni in modo efficiente.
Questo perché i database tradizionali utilizzano tecniche di indicizzazione basate su tipi di dati semplici, come stringhe o numeri. Queste tecniche di indicizzazione non sono adatte per dati vettoriali, che hanno un’elevata dimensionalità e richiedono tecniche di indicizzazione specializzate come indici invertiti o alberi spaziali.
Inoltre, i database tradizionali non sono progettati per gestire le grandi quantità di dati non strutturati o semi-strutturati spesso associati agli incorporamenti vettoriali. Ad esempio, un’immagine o un file audio può contenere milioni di punti dati, che i database tradizionali non sono in grado di gestire in modo efficiente.
I database vettoriali, d’altra parte, sono specificamente progettati per archiviare e recuperare dati vettoriali e sono ottimizzati per ricerche di similarità e altre operazioni complesse su set di dati di grandi dimensioni. Usano tecniche e algoritmi di indicizzazione specializzati progettati per funzionare con dati ad alta dimensione, rendendoli molto più efficienti dei database tradizionali per l’archiviazione e il recupero di incorporamenti di vettori.
Ora che hai letto così tanto sui database vettoriali, ti starai chiedendo, come funzionano? Diamo un’occhiata.
Come funziona un database vettoriale?
Sappiamo tutti come funzionano i database relazionali: memorizzano stringhe, numeri e altri tipi di dati scalari in righe e colonne. D’altra parte, un database vettoriale opera su vettori, quindi il modo in cui è ottimizzato e interrogato è piuttosto diverso.
Nei database tradizionali, di solito eseguiamo query per le righe nel database in cui il valore di solito corrisponde esattamente alla nostra query. Nei database vettoriali, applichiamo una metrica di somiglianza per trovare un vettore che sia il più simile alla nostra query.
Un database vettoriale utilizza una combinazione di diversi algoritmi che partecipano tutti alla ricerca del vicino più vicino (ANN). Questi algoritmi ottimizzano la ricerca tramite hashing, quantizzazione o ricerca basata su grafici.
Questi algoritmi sono assemblati in una pipeline che fornisce un recupero rapido e accurato dei vicini di un vettore interrogato. Poiché il database vettoriale fornisce risultati approssimativi, i principali compromessi che consideriamo sono tra precisione e velocità. Più preciso è il risultato, più lenta sarà la query. Tuttavia, un buon sistema può fornire una ricerca ultraveloce con una precisione quasi perfetta.
- Indicizzazione : il database dei vettori indicizza i vettori utilizzando un algoritmo come PQ, LSH o HNSW. Questo passaggio associa i vettori a una struttura di dati che consentirà una ricerca più rapida.
- Query : il database vettoriale confronta il vettore di query indicizzato con i vettori indicizzati nel set di dati per trovare i vicini più vicini (applicando una metrica di somiglianza utilizzata da tale indice)
- Post-elaborazione : in alcuni casi, il database vettoriale recupera i vicini più vicini finali dal set di dati e li post-elabora per restituire i risultati finali. Questo passaggio può includere la riclassificazione dei vicini più vicini utilizzando una diversa misura di somiglianza.
Vantaggi
I database vettoriali sono un potente strumento per la ricerca di similarità e altre operazioni complesse su grandi insiemi di dati, che non possono essere eseguite efficacemente utilizzando i database tradizionali. Per costruire un database vettoriale funzionale, gli incorporamenti sono essenziali, in quanto catturano il significato semantico dei dati e consentono accurate ricerche di similarità. A differenza delle librerie vettoriali, i database vettoriali sono progettati per adattarsi al nostro caso d’uso, rendendoli ideali per le applicazioni in cui le prestazioni e la scalabilità sono fondamentali. Con l’ascesa dell’apprendimento automatico e dell’intelligenza artificiale, i database vettoriali stanno diventando sempre più importanti per un’ampia gamma di applicazioni, inclusi i sistemi di raccomandazione, la ricerca di immagini, la somiglianza semantica e l’elenco potrebbe continuare. Poiché il campo continua ad evolversi, possiamo aspettarci di vedere applicazioni ancora più innovative dei database vettoriali in futuro.