Questa pagina mostra come utilizzare AlloyDB Omni come strumento di modello linguistico di grandi dimensioni (LLM) e generare vector embedding basati su un LLM.
Per ulteriori informazioni sull'utilizzo dei modelli di ML con AlloyDB Omni, consulta Crea applicazioni di AI generativa.
AlloyDB Omni ti consente di utilizzare un LLM ospitato da Vertex AI per tradurre una stringa di testo in un incorporamento, ovvero la rappresentazione del modello del significato semantico del testo dato come vettore numerico. Per ulteriori informazioni sul supporto di Vertex AI per gli incorporamenti di testo, consulta Incorporamenti di testo.
Prima di iniziare
Per consentire ad AlloyDB Omni di generare incorporamenti, assicurati di soddisfare i seguenti requisiti:
Limitazioni regionali
Puoi generare incorporamenti nelle regioni in cui è disponibile l'AI generativa su Vertex AI. Per un elenco delle regioni, consulta Località dell'AI generativa su Vertex AI .
Per AlloyDB Omni, assicurati che sia il cluster AlloyDB Omni sia il modello Vertex AI su cui esegui la query si trovino nella stessa regione.
Estensione del database richiesta
Assicurati che l'estensione
google_ml_integration
sia installata sul tuo database AlloyDB Omni.CREATE EXTENSION IF NOT EXISTS google_ml_integration;
Questa estensione è inclusa in AlloyDB Omni. Puoi installarlo su qualsiasi database del cluster.
Imposta il flag di database
google_ml_integration.enable_model_support
suoff
.
Configurare l'accesso al modello
Prima di poter generare embedding da un database AlloyDB Omni, devi configurare AlloyDB Omni in modo che funzioni con un modello di embedding di testo.
Per utilizzare il modello text-embedding-005
basato sul cloud, devi
integrare il tuo database con
con Vertex AI.
Concedere agli utenti del database l'accesso per generare incorporamenti
Concedi l'autorizzazione agli utenti del database per eseguire la funzione embedding
per eseguire le previsioni:
Connetti un client
psql
all'istanza principale del cluster, come descritto in Connettere un clientpsql
a un'istanza.Al prompt dei comandi psql, connettiti al database e concedi le autorizzazioni:
\c DB_NAME GRANT EXECUTE ON FUNCTION 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
Generare un incorporamento
AlloyDB Omni fornisce una funzione che consente di tradurre il testo in un
vector embedding. Puoi quindi archiviare l'embedding nel database come dati vettoriali e, facoltativamente, utilizzare le funzioni pgvector
per basare le query su di esso.
Per generare un incorporamento utilizzando AlloyDB Omni, utilizza la funzione embedding()
fornita dall'estensione google_ml_integration
:
SELECT embedding( 'MODEL_IDVERSION_TAG', 'TEXT');
Sostituisci quanto segue:
MODEL_ID
: l'ID del modello da interrogare.Se utilizzi Vertex AI Model Garden, specifica
text-embedding-005
come ID modello. Questi sono i modelli basati su cloud che AlloyDB Omni può utilizzare per gli incorporamenti di testo. Per ulteriori informazioni, vedi 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
con 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 di versione, AlloyDB utilizza sempre la versione più recente del modello, il che potrebbe portare a risultati imprevisti.
TEXT
: il testo da tradurre in un embedding vettoriale.
L'esempio seguente utilizza la versione 005
dei modelli in inglese text-embedding
per generare un embedding
basato su una stringa letterale fornita:
SELECT embedding('text-embedding-005', 'AlloyDB is a managed, cloud-hosted SQL database service.');
Memorizzare gli incorporamenti
Gli incorporamenti generati utilizzando l'google_ml_integration
estensione vengono implementati come array di valori real
.
Questi incorporamenti generati vengono passati come input per le funzioni di estensione pgvector
.
Per memorizzare questo valore in una tabella, aggiungi una colonna real[]
:
ALTER TABLE TABLE ADD COLUMN EMBEDDING_COLUMN real[DIMENSIONS];
Dopo aver creato una colonna per archiviare gli incorporamenti, puoi compilarla in base ai valori già archiviati in un'altra colonna della stessa tabella:
UPDATE TABLE SET EMBEDDING_COLUMN = embedding('MODEL_IDVERSION_TAG', SOURCE_TEXT_COLUMN);
Sostituisci quanto segue:
TABLE
: il nome della tabellaEMBEDDING_COLUMN
: il nome della colonna di incorporamento
MODEL_ID
: l'ID del modello da interrogare.Se utilizzi Vertex AI Model Garden, specifica
text-embedding-005
come ID modello. Questi sono i modelli basati su cloud che AlloyDB Omni può utilizzare per gli incorporamenti di testo. Per ulteriori informazioni, vedi 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
con 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 di versione, AlloyDB utilizza sempre la versione più recente del modello, il che potrebbe portare a risultati imprevisti.
SOURCE_TEXT_COLUMN
: il nome della colonna in cui è memorizzato il testo da tradurre in incorporamenti
Eseguire la ricerca di somiglianze
Puoi anche utilizzare la funzione embedding()
per tradurre il
testo in un vettore. Applichi il vettore all'operatore del vicino più prossimo pgvector
, <->
, per trovare le righe del database con gli incorporamenti semanticamente più simili.
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 google_ml_integration;
CREATE EXTENSION IF NOT EXISTS vector;
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN::vector
<-> embedding('MODEL_IDVERSION_TAG', 'TEXT')::vector
LIMIT ROW_COUNT
Utilizzare i tag della versione del modello per evitare errori
Google consiglia vivamente di utilizzare sempre una versione stabile del modello di incorporamento scelto. Per la maggior parte dei modelli, ciò significa impostare in modo esplicito un tag di versione.
Chiamare la funzione embedding()
senza specificare il tag di versione del modello è sintatticamente valido, ma anche soggetto a errori.
Se ometti il tag della versione quando utilizzi un modello in Vertex AI Model Garden, Vertex AI utilizza la versione più recente del modello. Potrebbe non essere l'ultima versione stabile. Per ulteriori informazioni sulle versioni del modello Vertex AI disponibili, consulta Versioni del modello.
Una determinata versione del modello Vertex AI restituisce sempre la stessa
risposta embedding()
a un determinato input di testo. Se non specifichi le versioni del modello nelle chiamate a embedding()
, una nuova versione del modello pubblicata può modificare bruscamente il vettore restituito per un determinato input, causando errori o altri comportamenti imprevisti nelle tue applicazioni.
Per evitare questi problemi, specifica sempre la versione del modello.
Risoluzione dei problemi
ERRORE: Modello non trovato per model_id
Messaggio di errore
Quando provi a generare un embedding utilizzando la funzione embedding()
o google_ml.embedding()
, si verifica il seguente errore:
ERROR: 'Model not found for model_id:
Correzione consigliata
Esegui l'upgrade dell'estensione
google_ml_integration
e riprova a generare gli incorporamenti.ALTER EXTENSION IF NOT EXISTS google_ml_integration UPDATE;
Puoi anche eliminare l'estensione e poi ricrearla.
DROP extension google_ml_integration; CREATE EXTENSION google_ml_integration;
Se generi incorporamenti utilizzando la funzione
google_ml.embedding()
, assicurati che il modello sia registrato e di utilizzare ilmodel_id
corretto nella query.