Questa pagina descrive come richiamare le previsioni utilizzando le funzioni degli spazi dei nomi public
e google_ml
. L'estensione google_ml_integration
include funzioni di previsione per questi spazi dei nomi.
Puoi utilizzare la funzione ml_predict_row()
nello schema public
con qualsiasi modello generico ospitato in Vertex AI senza registrare l'endpoint. La funzione google_ml.predict_row()
nello schema google_ml
può essere utilizzata con qualsiasi modello registrato con la gestione degli endpoint del modello.
Per richiamare le previsioni, seleziona uno dei seguenti schemi.
Prima di iniziare
Per consentire ad AlloyDB di richiamare le previsioni:
- Puoi richiamare le previsioni nelle regioni in cui è disponibile l'IA generativa su Vertex AI. Per un elenco delle regioni, consulta Località dell'AI generativa su Vertex AI.
- Connettiti al database utilizzando
psql
o AlloyDB per PostgreSQL Studio. - 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 richiamare le previsioni da un database AlloyDB, devi configurare AlloyDB per funzionare con Vertex AI. Per saperne di più, consulta Integrare il database con Vertex AI.
- Devi disporre di un modello Vertex AI attivo con un endpoint attivo a cui hai l'autorizzazione Identity and Access Management (IAM) per accedere. AlloyDB non supporta gli endpoint privati per ottenere previsioni online.
Concedi le autorizzazioni agli utenti del database per eseguire la funzione di previsione per richiamare le previsioni:
\c DB_NAME; GRANT EXECUTE ON FUNCTION ml_predict_row 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
Richiamare le previsioni online
Utilizza la funzione SQL ml_predict_row()
per richiamare le previsioni online
sui tuoi dati.
Il formato dell'argomento iniziale della funzione dipende dal fatto che il modello ML che vuoi utilizzare si trovi in Vertex AI Model Garden o sia un endpoint in esecuzione in un progetto Google Cloud .
Utilizzare un modello in Vertex AI Model Garden
Per richiamare una previsione online utilizzando un modello ML in esecuzione in Vertex AI Model Garden, utilizza la seguente sintassi per la funzione SQL google_ml.predict_row()
:
SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID', '{ CONTENTS }');
Sostituisci quanto segue:
PROJECT_ID
: l'ID del tuo progetto Google CloudREGION_ID
: l'ID della regione Google Cloud in cui si trova il modello, ad esempious-central1
per gemini-proMODEL_ID
: l'ID del modello ML da utilizzare, ad esempio gemini-proCONTENTS
: gli input della chiamata di previsione, in formato JSON
Se il modello di ML è archiviato nello stesso progetto e nella stessa regione del cluster AlloyDB, puoi abbreviare il primo argomento di questa funzione:
SELECT ml_predict_row('publishers/google/models/MODEL_ID', '{ CONTENTS }');
Per informazioni sui messaggi di risposta JSON del modello, consulta Riferimento al modello di base di AI generativa.
Per alcuni esempi, consulta Esempi di invocazioni.
Utilizzare un endpoint del modello Vertex AI
Per richiamare una previsione online utilizzando un endpoint del modello Vertex AI, utilizza la seguente sintassi per la funzione SQL ml_predict_row()
:
SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/endpoints/ENDPOINT_ID', '{ CONTENTS }');
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto Google Cloud in cui si trova il modelloREGION_ID
: l'ID della regione Google Cloud in cui si trova il modello, ad esempious-central1
ENDPOINT_ID
: l'ID dell'endpoint del modelloCONTENTS
: gli input della chiamata di previsione, in formato JSON
Se l'endpoint si trova nello stesso progetto e nella stessa regione del cluster AlloyDB, puoi abbreviare il primo argomento di questa funzione:
SELECT ml_predict_row('endpoints/ENDPOINT_ID', '{ CONTENTS }');
Per informazioni sui messaggi di risposta JSON del modello, consulta PredictResponse.
Esempi di invocazioni
Il seguente esempio utilizza gemini-pro, disponibile in Model Garden, per generare testo in base a un breve prompt fornito come argomento letterale
a ml_predict_row()
:
SELECT
json_array_elements(ml_predict_row('publishers/google/models/gemini-1.5-pro:streamGenerateContent',
'{ "contents": [ { "role": "user", "parts": [ { "text": "For TPCH database schema as mentioned here https://www.tpc.org/TPC_Documents_Current_Versions/pdf/TPC-H_v3.0.1.pdf , generate a SQL query to find all supplier names which are located in the India nation."
} ] } ] }'))-> 'candidates' -> 0 -> 'content' -> 'parts' -> 0 -> 'text';
La risposta è un oggetto JSON. Per ulteriori informazioni sul formato dell'oggetto, consulta Corpo della risposta.
L'esempio successivo modifica quello precedente nei seguenti modi:
L'esempio utilizza come input i contenuti della colonna
messages.message
del database corrente.L'esempio mostra l'utilizzo della funzione
json_build_object()
come aiuto per formattare i parametri della funzione.
select ml_predict_row('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.5-pro:generateContent', json_build_object('contents', json_build_object('text', message))) from messages;
L'oggetto JSON restituito ora contiene una voce nella matrice predictions
per ogni riga della tabella messages
.
Poiché la risposta è un oggetto JSON, puoi estrarre campi specifici utilizzando l'operatore freccia PostgreSQL:
select ml_predict_row('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.5-pro:generateContent', json_build_object('contents', json_build_object('text', message)))->'predictions'->0->'content' FROM messages;
Per altri argomenti di esempio per ml_predict_row()
, consulta la guida rapida all'utilizzo dell'API Vertex AI.