L'estensione google_ml_integration include funzioni di embedding in due spazi dei nomi diversi: public e google_ml. Questa pagina descrive come generare text embedding utilizzando le funzioni di questi spazi dei nomi.
La funzione embedding() nello schema public può essere utilizzata con qualsiasi modello di embedding di Gemini Enterprise Agent Platform senza registrare l'endpoint. Se vuoi passare informazioni personalizzate come il tipo di attività, registra l'endpoint e poi utilizza la google_ml.embedding() funzione nello schema google_ml. Per saperne di più sulla registrazione di un endpoint, consulta Registrare un modello.
Come funzionano gli embedding
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
itemscontiene una colonna,complaints. Questa colonnaTEXTmemorizza i reclami degli acquirenti registrati su ogni articolo.Il database si integra con Model Garden, consentendo l'accesso ai modelli in inglese
gemini-embedding-001.
Anche se questo database memorizza i reclami sugli articoli, questi vengono memorizzati come testo normale, il che rende difficile l'esecuzione di query. Ad esempio, per vedere quali articoli hanno il maggior numero di reclami da parte dei clienti che hanno ricevuto il colore sbagliato della merce, puoi eseguire query SQL normali sulla tabella, che cercano varie corrispondenze di parole chiave. Tuttavia, questo approccio corrisponde solo alle righe che contengono esattamente queste parole chiave.
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 gli embedding basati su LLM possono aiutare a restituire risposte semanticamente simili per queste query. Applicando gli embedding, puoi eseguire query sulla tabella in questo esempio per gli articoli i cui reclami hanno una somiglianza semantica con un prompt di testo specificato, ad esempio It was the
wrong color.
Per la generazione di embedding di base, seleziona uno dei seguenti schemi.
Prima di iniziare
Per consentire ad AlloyDB di generare embedding:
- Connettiti al database utilizzando
psqlo AlloyDB per PostgreSQL Studio come utentepostgres. Verifica che l'estensione
google_ml_integrationsia installata.Per controllare la versione dell'estensione con il seguente comando:
SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';Se devi aggiornare l'estensione, utilizza il comando
ALTER EXTENSION google_ml_integration UPDATE;.Prima di poter generare embedding da un database AlloyDB, devi configurare AlloyDB in modo che funzioni con Agent Platform. Per saperne di più, consulta Integrare il database con Agent Platform.
Concedi le autorizzazioni agli utenti del database per generare embedding.
Per generare embedding, concedi l'autorizzazione
EXECUTEalla funzionegoogle_ml.embeddingall'utente:\c 'DB_NAME'; GRANT EXECUTE ON FUNCTION google_ml.embedding TO 'USER_NAME';Sostituisci quanto segue:
DB_NAME: il nome del database su cui vengono concesse le autorizzazioni.
USER_NAME: il nome dell'utente a cui vengono concesse le autorizzazioni.
Generare embedding
Utilizza la funzione SQL google_ml.embedding() per chiamare i modelli di text embedding.
Per chiamare il modello e generare embedding, 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 di 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 di Gemini Enterprise Agent Platform si trovano in progetti diversi, segui questi passaggi:
Esegui la seguente istruzione
CALL.CALL google_ml.create_model( model_id => 'gemini-embedding-001', model_request_url => 'https://REGION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/gemini-embedding-001:predict', model_provider => 'google', model_type => 'text_embedding', model_auth_type => 'alloydb_service_agent_iam', model_in_transform_fn => 'google_ml.vertexai_text_embedding_input_transform', model_out_transform_fn => 'google_ml.vertexai_text_embedding_output_transform' );Per generare embedding per un endpoint del modello
gemini-embedding-001registrato, 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 registrato text-embedding-ada-002di 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 somiglianze vettoriali.
- Scopri come creare un assistente per lo shopping intelligente con AlloyDB, pgvector e la gestione degli endpoint dei modelli.
- Crea indici ed esegui query sui vettori.
- Scopri un flusso di lavoro di embedding di esempio.