La ricerca di similarità vettoriale, nota anche come ricerca del vicino più prossimo, in AlloyDB per PostgreSQL consente di trovare le righe nel database che sono semanticamente più simili a un vettore di query. Dopo aver archiviato e indicizzato gli embedding, puoi utilizzare gli operatori e le funzioni di distanza pgvector per eseguire query sul database AlloyDB per trovare i vicini più prossimi.
Per saperne di più sull'archiviazione dei vector embedding e sulla creazione di un indice, consulta Archiviare i vector embedding e Creare indici rispettivamente.
Eseguire una ricerca di similarità con input vettoriale
Per eseguire una ricerca di similarità, specifica la tabella, la colonna di embedding, la funzione di distanza, l'embedding di destinazione e il numero di righe da restituire. Puoi anche utilizzare la funzione embedding() per tradurre il testo in un vettore e poi confrontare il vettore con gli embedding archiviati utilizzando gli operatori pgvector.
Per trovare i vicini semantici più prossimi per un vettore di embedding, puoi eseguire la seguente query di esempio, in cui imposti la stessa funzione di distanza utilizzata durante la creazione dell'indice.
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN DISTANCE_FUNCTION_QUERY ['EMBEDDING']
LIMIT ROW_COUNT
Sostituisci quanto segue:
TABLE: la tabella contenente l'embedding a cui confrontare il testo.EMBEDDING_COLUMN: la colonna contenente gli embedding archiviati.DISTANCE_FUNCTION_QUERY: la funzione di distanza da utilizzare con questa query. Scegli una delle seguenti opzioni in base alla funzione di distanza utilizzata durante la creazione dell'indice:Distanza L2:
<->Prodotto scalare:
<#>Distanza coseno:
<=>
EMBEDDING: il vettore di embedding di cui vuoi trovare i vicini semantici archiviati più prossimi.ROW_COUNT: il numero di righe da restituire.Specifica
1se vuoi solo la corrispondenza migliore.
Per ulteriori informazioni su altri esempi di query, consulta la sezione Esecuzione di query.
Eseguire una ricerca di similarità utilizzando pgvector con input di testo
Puoi anche utilizzare la funzione embedding() per
tradurre il testo in un vettore e per trovare le righe del database con gli embedding semanticamente
più simili. L'estensione pgvector di PostgreSQL è
personalizzata per AlloyDB e viene chiamata vector. Applica
il vettore a uno degli operatori del vicino più prossimo pgvector, ad esempio
<=> per la distanza coseno.
Poiché embedding() restituisce un array real, devi eseguire il cast esplicito della
chiamata embedding() a vector per utilizzare questi valori con gli operatori pgvector.
CREATE EXTENSION IF NOT EXISTS vector;
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN::vector
<=> google_ml.embedding('MODEL_IDVERSION_TAG', 'TEXT')
LIMIT ROW_COUNT
Sostituisci quanto segue:
MODEL_ID: l'ID del modello su cui eseguire la query.Se utilizzi il Model Garden, specifica
text-embedding-005come ID modello. Questi sono i modelli basati su cloud che AlloyDB può utilizzare per gli embedding di testo. Per saperne di più, consulta la sezione Embedding di testo.- (Facoltativo)
VERSION_TAG: il tag di versione del modello su cui eseguire la query. Anteponi il tag con@.Se utilizzi uno dei modelli in inglese
text-embedding-005con Gemini Enterprise Agent Platform, specifica uno dei tag di versione, ad esempiotext-embedding-005, elencati in Versioni del modello.Google consiglia vivamente di specificare sempre il tag di versione. Se non specifichi il tag di versione, AlloyDB utilizza la versione più recente del modello, il che potrebbe portare a risultati imprevisti.
TABLE: la tabella su cui eseguire la query.EMBEDDING_COLUMN: la colonna contenente gli embedding archiviati.TEXT: il testo da tradurre in un vector embedding.ROW_COUNT: il numero di righe da restituire.
Per accelerare la ricerca KNN filtrata, puoi utilizzare il motore colonnare di AlloyDB. Per saperne di più, consulta la sezione Accelerare la ricerca vettoriale filtrata (anteprima) e Configurare il motore colonnare.
Passaggi successivi
- Eseguire il tutorial su Vector Search
- Ottimizzare il rendimento delle query vettoriali
- Metriche dell'indice vettoriale
- Scopri come creare un assistente per lo shopping intelligente con AlloyDB, pgvector e la gestione degli endpoint del modello.
- Scopri di più sul riferimento per la gestione degli endpoint del modello.