Questa pagina mostra come richiamare le previsioni online da un database AlloyDB per PostgreSQL.
AlloyDB ti consente di ottenere previsioni online nel codice SQL chiamando la funzione ml_predict_row(). Per saperne di più sull'utilizzo dei modelli di machine learning (ML) con AlloyDB, consulta Creare applicazioni di AI generativa.
Prima di iniziare
Prima di poter richiamare le previsioni online da un database AlloyDB, devi preparare il database e selezionare un modello ML appropriato.
Preparare il database
Concedi l'autorizzazione agli utenti del database per eseguire la funzione
ml_predict_row()per eseguire le previsioni:Connetti un client
psqlall'istanza principale del cluster, come descritto in Connettere un client psql a un' istanza.Al prompt dei comandi psql, connettiti al database e concedi le autorizzazioni:
\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 autorizzazioni.
USER_NAME: il nome dell'utente a cui devono essere concesse le autorizzazioni.
Selezionare un modello ML
Quando chiami la funzione ml_predict_row(), devi specificare la posizione di un modello ML.
Il modello che specifichi può essere uno dei seguenti:
Un modello in esecuzione in Vertex AI Model Garden.
La funzione
ml_predict_row()supporta la chiamata delle previsioni solo su modelli tabulari o personalizzati.Un modello Vertex AI con un endpoint attivo a cui hai l'autorizzazione di Identity and Access Management (IAM) per accedere.
AlloyDB non supporta gli endpoint privati per ottenere previsioni online.
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 Google Cloud progetto.
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 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 Google Cloud progettoREGION_ID: l'ID della Google Cloud regione in cui si trova il modello, ad esempious-central1per gemini-proMODEL_ID: l'ID del modello ML da utilizzare, ad esempio gemini-proCONTENTS: gli input alla 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 esempi, consulta Esempi di chiamate.
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 Google Cloud progetto in cui si trova il modelloREGION_ID: l'ID della Google Cloud regione in cui si trova il modello, ad esempious-central1ENDPOINT_ID: l'ID dell'endpoint del modelloCONTENTS: gli input alla 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-pro,
disponibile in Model Garden, per generare testo in base a un breve prompt
fornito come argomento letterale a ml_predict_row():
select ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:generateContent', '{
"contents": [{
"role": "user",
"parts": [{
"text": "What is AlloyDB?"
}]
}]
}');
La risposta è un oggetto JSON. Per saperne di più sul formato dell' oggetto, consulta Corpo della risposta.
L'esempio successivo modifica il precedente nei seguenti modi:
L'esempio utilizza come input i contenuti della colonna
messages.messagedel database corrente.L'esempio mostra l'utilizzo della funzione the
json_build_object()function come ausilio per la formattazione dei parametri della funzione.
select ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:generateContent', json_build_object('contents', json_build_object('text', message))) from messages;
L'oggetto JSON restituito ora contiene una voce nell'array 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.0-pro:generateContent', json_build_object('contents', json_build_object('text', message)))->'predictions'->0->'content' FROM messages;