L'estensione google_ml_integration in AlloyDB per PostgreSQL consente di richiamare le previsioni online dai modelli di machine learning direttamente nelle query SQL.
Puoi chiamare la funzione ml_predict_row() nello schema public per i modelli generici ospitati in Gemini Enterprise Agent Platform senza registrare un endpoint oppure chiamare la funzione google_ml.predict_row() nello schema google_ml per i modelli registrati con la gestione degli endpoint dei modelli.
Per richiamare le previsioni, seleziona uno dei seguenti schemi.
Prima di iniziare
Per consentire ad AlloyDB di richiamare le previsioni, segui questi passaggi:
- Puoi richiamare le previsioni nelle regioni in cui è disponibile l'AI generativa su Agent Platform. Per un elenco delle regioni, consulta Deployment ed endpoint.
- Connettiti al database utilizzando
psqlo AlloyDB Studio. - Verifica che l'estensione
google_ml_integrationsia installata. - Verifica che il flag
google_ml_integration.enable_model_supportsia impostato suon. - Prima di poter richiamare le previsioni da un database AlloyDB, devi configurare AlloyDB in modo che funzioni con Agent Platform. Per saperne di più, consulta Integra il database con Agent Platform.
- Devi disporre di un modello Agent Platform attivo con un endpoint attivo per cui disponi dell'autorizzazione di accesso Identity and Access Management (IAM). AlloyDB non supporta gli endpoint privati per ottenere previsioni online.
Concedi agli utenti del database le autorizzazioni 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 concesse le autorizzazioniUSER_NAME: il nome dell'utente a cui devono essere concesse le autorizzazioni
Richiama 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 Model Garden o sia un endpoint in esecuzione in un progetto Google Cloud .
Utilizza un modello in Model Garden
Per richiamare una previsione online utilizzando un modello ML in esecuzione in 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', '{"instances": [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-central1per gemini-2.5-flashMODEL_ID: l'ID del modello di ML da utilizzare, ad esempio gemini-2.5-flashCONTENTS: gli input della chiamata di previsione, in formato JSON
Se il modello 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 il Riferimento del modello di base dell'AI generativa.
Per alcuni esempi, consulta Esempi di chiamate.
Utilizza un endpoint del modello Agent Platform
Per richiamare una previsione online utilizzando un endpoint del modello della piattaforma agente, 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-central1ENDPOINT_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 chiamate
L'esempio seguente utilizza gemini-2.5-flash, 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-2.5-flash: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 seguente modifica l'esempio precedente nei seguenti modi:
L'esempio utilizza i contenuti della colonna
messages.messagedel database corrente come input.L'esempio mostra l'utilizzo della funzione
json_build_object()come ausilio per la formattazione dei parametri della funzione.
SELECT
ml_predict_row(
'projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent',
json_build_object(
'contents',
json_build_object(
'role', 'user',
'parts', json_build_object('text', message)
)
)
)
FROM messages;
L'oggetto JSON restituito contiene un array candidates per ogni riga della tabella messages.
Poiché la risposta è un oggetto JSON, puoi estrarre campi specifici utilizzando l'operatore freccia di PostgreSQL:
SELECT
ml_predict_row(
'projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent',
json_build_object(
'contents',
json_build_object(
'role', 'user',
'parts', json_build_object('text', message)
)
)
) -> 'candidates' -> 0 -> 'content' -> 'parts' -> 0 -> 'text'
FROM messages;
Per altri esempi di argomenti per ml_predict_row(), consulta la Guida rapida all'utilizzo dell'API Agent Platform.
Passaggi successivi
- Scopri come creare un assistente per lo shopping intelligente con AlloyDB, pgvector e la gestione degli endpoint dei modelli.
- Scopri di più sul riferimento per la gestione degli endpoint del modello.