L'estensione google_ml_integration
include funzioni di incorporamento in due spazi dei nomi diversi: public
e google_ml
. Questa pagina descrive come generare incorporamenti di testo utilizzando le funzioni di questi spazi dei nomi.
La funzione embedding()
nello schema public
può essere utilizzata con qualsiasi modello di embedding Vertex AI senza registrare l'endpoint. Se vuoi trasmettere informazioni personalizzate come il tipo di attività, registra l'endpoint e poi utilizza la funzione google_ml.embedding()
nello schema google_ml
. Per saperne di più sulla registrazione di un endpoint, vedi Registrare un modello.
Come funzionano gli incorporamenti
Immagina un database in esecuzione su AlloyDB con le seguenti caratteristiche:
Il database contiene una tabella,
items
. Ogni riga di questa tabella descrive un articolo venduto dalla tua attività.La tabella
items
contiene una colonna,complaints
. Questa colonnaTEXT
memorizza i reclami degli acquirenti registrati per ogni articolo.Il database si integra con Model Garden di Vertex AI, consentendogli di accedere ai modelli in inglese
gemini-embedding-001
.
Anche se questo database memorizza i reclami relativi agli articoli, questi vengono memorizzati come testo normale, il che rende difficile eseguire query. Ad esempio, per vedere quali articoli hanno ricevuto il maggior numero di reclami da clienti che hanno ricevuto un colore errato della merce, puoi eseguire query SQL ordinarie sulla tabella, che cercano varie corrispondenze di parole chiave. Tuttavia, questo approccio corrisponde solo alle righe che contengono queste parole chiave esatte.
Ad esempio, una query SQL di base come SELECT * FROM item WHERE complaints LIKE
"%wrong color%"
non restituisce una riga il cui campo complaints
contiene solo
The picture shows a blue one, but the one I received was red
.
Le query SQL che utilizzano incorporamenti basati su LLM possono contribuire a restituire risposte semanticamente simili per queste query. Applicando gli incorporamenti, puoi eseguire query sulla tabella in questo esempio per gli elementi i cui reclami hanno una somiglianza semantica con un prompt di testo specifico, ad esempio It was the
wrong color
.
Per generare gli embedding, seleziona uno dei seguenti schemi.
Prima di iniziare
Per consentire ad AlloyDB di generare incorporamenti:
- Connettiti al database utilizzando
psql
o AlloyDB per PostgreSQL Studio come utentepostgres
. - Verifica che l'estensione
google_ml_integration
sia installata. - Verifica che il flag
google_ml_integration.enable_model_support
sia impostato suon
. - Prima di poter generare embedding da un database AlloyDB, devi configurare AlloyDB per funzionare con Vertex AI. Per saperne di più, consulta Integrare il database con Vertex AI.
Concedi le autorizzazioni agli utenti del database per eseguire la funzione di incorporamento per generare incorporamenti:
\c DB_NAME; GRANT EXECUTE ON FUNCTION google_ml.embedding TO USER_NAME;
Sostituisci quanto segue:
DB_NAME: il nome del database su cui devono essere concessi i permessi
USER_NAME: il nome dell'utente a cui devono essere concessi i permessi
Genera embedding
Utilizza la funzione SQL google_ml.embedding()
per chiamare i modelli di text embedding.
Per chiamare il modello e generare gli incorporamenti, esegui la seguente query:
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
content => 'CONTENT');
Sostituisci quanto segue:
MODEL_ID
: l'ID modello qualificato, ad esempiogemini-embedding-001
.CONTENT
: il testo da tradurre in un vector embedding.
Esempi per la generazione di embedding
In questa sezione sono elencati alcuni esempi per la generazione di embedding utilizzando l'endpoint del modello registrato.
Modelli di embedding Gemini
Per generare embedding per un endpoint del modello gemini-embedding-001
registrato, esegui la seguente istruzione:
SELECT
google_ml.embedding(
model_id => 'gemini-embedding-001',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
Se il cluster AlloyDB e l'endpoint Vertex AI si trovano in progetti diversi, imposta model_id
sul percorso qualificato dell'endpoint, ad esempio projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/gemini-embedding-001
.
Per generare embedding per un endpoint del modello gemini-embedding-001
registrato, esegui la seguente istruzione:
SELECT
google_ml.embedding(
model_id => 'gemini-embedding-001',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
Modello di embedding OpenAI
Per generare embedding per un endpoint del modello text-embedding-ada-002
registrato di OpenAI, esegui la seguente istruzione:
SELECT
google_ml.embedding(
model_id => 'text-embedding-ada-002',
content => 'e-mail spam');
Per generare embedding per gli endpoint dei modelli text-embedding-3-small
o text-embedding-3-large
registrati di OpenAI, esegui la seguente istruzione:
SELECT
google_ml.embedding(
model_id => 'text-embedding-3-small',
content => 'Vector embeddings in AI');
Passaggi successivi
- Esegui ricerche di similarità vettoriale.
- Scopri come creare un assistente per lo shopping intelligente con AlloyDB, pgvector e la gestione degli endpoint del modello.
- Crea indici e vettori di query.
- Scopri un esempio di workflow di incorporamento.