Questo documento spiega come eseguire ricerche di somiglianza vettoriale in AlloyDB per PostgreSQL
utilizzando l'estensione pgvector. La ricerca di similarità vettoriale, nota anche come ricerca del vicino più prossimo, consente di trovare i punti dati nei tuoi dati più simili a un determinato vettore di query.
Puoi eseguire query sul tuo database AlloyDB per trovare vettori semanticamente simili dopo
aver archiviato e indicizzato gli embedding. Utilizza le funzionalità di query pgvector per trovare i
vicini più prossimi per un vettore di incorporamento.
Per saperne di più sull'archiviazione degli embedding vettoriali e sulla creazione di un indice, consulta Archivia gli embedding vettoriali e Crea indici.
Esegui una ricerca di similarità con input vettoriale
Per eseguire una ricerca di similarità, specifica la tabella, la colonna di incorporamento, la funzione di distanza, l'incorporamento target 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ù vicini per un vettore di incorporamento, puoi eseguire la seguente query di esempio, in cui imposti la stessa funzione di distanza che hai utilizzato 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 incorporamenti 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 interno:
<#>Distanza coseno:
<=>
EMBEDDING: il vettore di embedding di cui vuoi trovare i vicini semantici memorizzati più vicini.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 Query.
Eseguire una ricerca per similarità utilizzando pgvector con l'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 più simili
dal punto di vista semantico. L'estensione PostgreSQL pgvector è
personalizzata per AlloyDB e viene chiamata vector. Applichi
il vettore a uno degli operatori di pgvector vicini più prossimi, ad esempio
<=> per la distanza del 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 da interrogare.Se utilizzi Vertex AI Model Garden, specifica
text-embedding-005come ID modello. Questi sono i modelli basati su cloud che AlloyDB può utilizzare per gli incorporamenti di testo. Per ulteriori informazioni, consulta la sezione Incorporamenti di testo.Facoltativo:
VERSION_TAG: il tag della versione del modello da interrogare. Aggiungi il prefisso@al tag.Se utilizzi uno dei modelli in inglese
text-embedding-005con Vertex AI, specifica uno dei tag di versione, ad esempiotext-embedding-005, elencati in Versioni del modello.Google consiglia vivamente di specificare sempre il tag della versione. Se non specifichi il tag della versione, AlloyDB utilizza l'ultima versione del modello, il che potrebbe portare a risultati imprevisti.
TEXT: il testo da tradurre in un vector embedding.
Per accelerare la ricerca KNN filtrata, puoi utilizzare il motore colonnare AlloyDB. Per saperne di più, consulta Accelerare la ricerca vettoriale filtrata (anteprima) e Configurare il motore colonnare.
Passaggi successivi
- Eseguire il tutorial sulla ricerca vettoriale
- 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.