Questa pagina descrive la ricerca vettoriale e il suo funzionamento in Spanner.
La ricerca vettoriale è una funzionalità integrata ad alte prestazioni che consente la ricerca semantica e la corrispondenza di somiglianze su dati vettoriali ad alta dimensionalità. Memorizzando e indicizzando gli incorporamenti vettoriali direttamente nel database transazionale, Spanner elimina la necessità di database vettoriali separati e pipeline ETL complesse.
Concetti fondamentali
Questa sezione introduce i seguenti concetti chiave della ricerca vettoriale:
- Vector embedding
- Metodi di ricerca (KNN e ANN)
- Funzioni di distanza
Vector embedding
I vector embedding sono rappresentazioni numeriche ad alta dimensione di dati non strutturati. Vengono generate dai dati non strutturati utilizzando modelli di machine learning. Ad esempio, puoi utilizzare l'API Vertex AI text embedding per generare, archiviare e aggiornare gli embedding di testo per i dati archiviati in Spanner.
Metodi di ricerca
Spanner supporta due metodi per trovare vettori simili:
K-Nearest Neighbor (KNN): Esegue una ricerca esatta calcolando la distanza tra la query e ogni vettore nel set di dati. Fornisce un richiamo più accurato, ma è costoso dal punto di vista computazionale per set di dati di grandi dimensioni.
Approximate Nearest Neighbor (ANN): Utilizza un indice vettoriale (basato sull'algoritmo ScaNN di Google) per trovare rapidamente le corrispondenze in un numero elevato di vettori. Sacrifica una piccola quantità di accuratezza (richiamo) per guadagnare in velocità e scalabilità.
Funzionalità chiave
Scalabilità: supporta miliardi di vettori per la ricerca ANN non partizionata o trilioni di vettori per i carichi di lavoro KNN partizionati.
Motore e database AI unificati: utilizza la funzione GoogleSQL
ML.PREDICTo PostgreSQLspanner.ML_PREDICT_ROWper generare incorporamenti dai modelli Vertex AI direttamente all'interno del flusso di query.Filtro in linea: combina in modo efficiente la ricerca vettoriale con i filtri dei metadati strutturati (ad esempio, "Trova immagini simili in cui categoria = 'scarpe' e prezzo < 100") senza perdere prestazioni.
Integrazione di LangChain: il supporto integrato per LangChain consente di creare applicazioni di Retrieval-Augmented Generation (RAG) utilizzando Spanner come archivio vettoriale.
Funzionalità di ricerca ibrida
La ricerca vettoriale è più efficace se combinata con altre funzionalità dei dati di Spanner:
| Combinazione | Vantaggio |
|---|---|
| Ricerca vettoriale con filtro SQL | Combina in modo efficiente la ricerca vettoriale con i filtri (ad esempio, "Trova immagini simili in cui la categoria è "scarpe" e il prezzo è inferiore a 100"). |
| Ricerca vettoriale + ricerca a testo intero | Combina la somiglianza semantica con la precisione delle parole chiave utilizzando la fusione reciproca del ranking (RRF) per una pertinenza della ricerca superiore. |
| Vettore + grafico | Utilizza la ricerca vettoriale per trovare punti di ingresso (nodi) pertinenti in un grafico delle proprietà e poi attraversare relazioni complesse. |
Passaggi successivi
- Scopri di più su Spanner AI.
- Scopri di più su come ottenere gli embedding di testo di Vertex AI.
- Scopri di più su come eseguire la ricerca K-Nearest Neighbor (KNN).
- Scopri di più su come eseguire la ricerca del vicino più prossimo approssimato (ANN).