Esta página mostra como invocar previsões on-line de um banco de dados do AlloyDB para PostgreSQL.
O AlloyDB permite receber previsões on-line no
código SQL chamando a função google_ml.predict_row()
. Para mais informações sobre como usar modelos de machine learning (ML) com o AlloyDB, consulte Criar aplicativos de IA
generativa.
Antes de começar
Antes de invocar previsões on-line de um banco de dados do AlloyDB, prepare seu banco de dados e selecione um modelo de ML apropriado.
Preparar o banco de dados
Configure a integração entre o banco de dados e a Vertex AI.
Conceda permissão para que os usuários do banco de dados executem a função
google_ml.predict_row()
para executar previsões:Conecte um cliente
psql
à instância principal do cluster, conforme descrito em Conectar um cliente psql a uma instância.No prompt de comando psql, conecte-se ao banco de dados e conceda permissões:
\c DB_NAME GRANT EXECUTE ON FUNCTION google_ml.predict_row TO USER_NAME;
Substitua:
DB_NAME: o nome do banco de dados em que as permissões precisam ser concedidas
USER_NAME: o nome do usuário para quem as permissões serão concedidas
Selecionar um modelo de ML
Ao chamar a função google_ml.predict_row()
, você precisa especificar o local de um modelo de ML.
O modelo especificado pode ser um destes:
Um modelo executado no Model Garden da Vertex AI.
A função
google_ml.predict_row()
é compatível com a invocação de previsões apenas em modelos tabulares ou personalizados.Um modelo da Vertex AI com um endpoint ativo a que você tem permissão de Identity and Access Management (IAM).
O AlloyDB não oferece suporte a endpoints particulares para receber previsões on-line.
Invocar previsões on-line
Use a função SQL google_ml.predict_row()
para invocar previsões on-line
nos seus dados.
O formato do argumento inicial da função depende se o modelo de ML que você quer usar está no Model Garden da Vertex AI ou é um endpoint em execução em um projeto Google Cloud .
Usar um modelo no Model Garden da Vertex AI
Para invocar uma previsão on-line usando um modelo de ML em execução no Model Garden
da Vertex AI, use a seguinte sintaxe para a função SQL google_ml.predict_row()
:
SELECT google_ml.predict_row('projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID', '{ CONTENTS }');
Substitua:
PROJECT_ID
: o ID do projeto Google CloudREGION_ID
: o ID da região Google Cloud em que o modelo está localizado. Por exemplo,us-central1
para gemini-proMODEL_ID
: o ID do modelo de ML a ser usado, por exemplo, gemini-proCONTENTS
: as entradas para a chamada de previsão, no formato JSON
Se o modelo de ML estiver armazenado no mesmo projeto e região do cluster do AlloyDB, você poderá abreviar o primeiro argumento dessa função:
SELECT google_ml.predict_row('publishers/google/models/MODEL_ID', '{ CONTENTS }');
Para informações sobre as mensagens de resposta JSON do modelo, consulte Referência do modelo básico de IA generativa.
Para conferir exemplos, consulte Exemplos de invocações.
Usar um endpoint de modelo da Vertex AI
Para invocar uma previsão on-line usando um endpoint de modelo da Vertex AI, use a seguinte sintaxe para a função SQL google_ml.predict_row()
:
SELECT google_ml.predict_row('projects/PROJECT_ID/locations/REGION_ID/endpoints/ENDPOINT_ID', '{ CONTENTS }');
Substitua:
PROJECT_ID
: o ID do projeto Google Cloud em que o modelo está localizadoREGION_ID
: o ID da região Google Cloud em que o modelo está localizado, por exemplo,us-central1
ENDPOINT_ID
: o ID do endpoint do modeloCONTENTS
: as entradas para a chamada de previsão, no formato JSON
Se o endpoint estiver localizado no mesmo projeto e região que o cluster do AlloyDB, você poderá abreviar o primeiro argumento dessa função:
SELECT google_ml.predict_row('endpoints/ENDPOINT_ID', '{ CONTENTS }');
Para informações sobre as mensagens de resposta JSON do modelo, consulte PredictResponse.
Invocações de exemplo
O exemplo a seguir usa o gemini-pro, disponível no Model Garden, para gerar texto com base em um comando curto fornecido como um argumento literal
para google_ml.predict_row()
:
SELECT google_ml.predict_row('gemini-1.0-pro:generateContent', '{ "contents": [{ "role": "user", "parts": [{ "text": "What is AlloyDB?" }] }] }');
A resposta é um objeto JSON. Para mais informações sobre o formato do objeto, consulte Corpo da resposta.
O próximo exemplo modifica o anterior das seguintes maneiras:
O exemplo usa o conteúdo da coluna
messages.message
do banco de dados atual como entrada.O exemplo demonstra o uso da função
json_build_object()
como ajuda para formatar os parâmetros da função.
select google_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;
O objeto JSON retornado agora contém uma entrada na matriz predictions
para cada linha na tabela messages
.
Como a resposta é um objeto JSON, é possível extrair campos específicos dele usando o operador de seta do PostgreSQL:
select google_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;
Para mais exemplos de argumentos para google_ml.predict_row()
, consulte Guia de início rápido sobre como usar a API
Vertex AI.