Un database vettoriale memorizza i documenti insieme ai loro embedding e risponde alle query con una ricerca dei vicini più prossimi nello spazio vettoriale. Poiché la ricerca esatta dei vicini più prossimi è costosa su larga scala, questi sistemi si affidano a metodi approssimati come l'indice a grafo HNSW di Malkov e Yashunin (2018) e a librerie di ricerca accelerate da GPU come FAISS (Johnson et al., 2017).
Il risultato è un recupero semantico in meno di un secondo su milioni di passaggi di testo: il livello di archiviazione che rende praticabile la retrieval-augmented generation.
A cosa serve un database vettoriale?
Un database tradizionale trova le righe che corrispondono esattamente a un valore; un database vettoriale trova gli elementi vicini per significato. Una ricerca come "come reimposto la password" può restituire un articolo di assistenza intitolato "Recuperare l'accesso all'account" anche se i due testi non hanno quasi parole in comune. Per questo i database vettoriali sono la spina dorsale di:
- Ricerca semantica su centri assistenza, wiki e archivi di documenti
- Chatbot RAG che rispondono a partire da documenti privati
- Raccomandazioni: "contenuti simili" per prodotti, articoli o brani musicali
- Rilevamento di duplicati e quasi-duplicati
- Ricerca per similarità di immagini e audio
Come funziona un database vettoriale
- 1Embedding e archiviazione. Ogni elemento viene convertito in un embedding da un modello di embedding e memorizzato con il contenuto originale e i metadati.
- 2Indicizzazione. I vettori vengono organizzati in un indice approssimato come HNSW, che sacrifica un po' di accuratezza in cambio di grandi guadagni di velocità.
- 3Query. La query viene trasformata in embedding con lo stesso modello e il database trova i vettori più vicini secondo una misura di similarità come la similarità del coseno.
- 4Filtro e restituzione. La maggior parte dei sistemi combina la ricerca per similarità con filtri sui metadati (data, autore, permessi) e restituisce le corrispondenze migliori, spesso passate a un reranker.
Database vettoriale e database tradizionale a confronto
| Database tradizionale | Database vettoriale | |
|---|---|---|
| Corrispondenza su | Valori esatti e parole chiave | Vicinanza di significato |
| Query | SQL o ricerche per chiave | Un embedding della domanda |
| Indice | B-tree o indice invertito | Indice per la ricerca approssimata dei vicini più prossimi (ad es. HNSW) |
| Risultato | Tutte le righe corrispondenti | I top-k elementi più simili, ordinati per rilevanza |
Le opzioni vanno dai database vettoriali dedicati come Pinecone, Weaviate, Milvus, Qdrant e Chroma alle estensioni per la ricerca vettoriale su database esistenti, come pgvector per PostgreSQL. Per molti team aggiungere la ricerca vettoriale a un database che usano già è più semplice che gestire un sistema separato.