A extensão google_ml_integration no AlloyDB para PostgreSQL permite invocar
previsões on-line de modelos de machine learning diretamente nas consultas SQL.
É possível chamar a função ml_predict_row() no esquema public para modelos genéricos hospedados na Gemini Enterprise Agent Platform sem registrar um endpoint ou chamar a função google_ml.predict_row() no esquema google_ml para modelos registrados com o gerenciamento de endpoints de modelo.
Para invocar previsões, selecione um dos esquemas a seguir.
Antes de começar
Para permitir que o AlloyDB invoque previsões, faça o seguinte:
- É possível invocar previsões em regiões onde a IA generativa na Agent Platform está disponível. Para uma lista de regiões, consulte Implantações e endpoints.
- Conecte-se ao banco de dados usando
psqlou o AlloyDB Studio. - Verifique se a extensão
google_ml_integrationestá instalada. - Verifique se a flag
google_ml_integration.enable_model_supportestá definida comoon. - Antes de invocar previsões de um banco de dados do AlloyDB, configure o AlloyDB para funcionar com a Agent Platform. Para mais informações, consulte Integrar seu banco de dados com a plataforma de agentes.
- Você precisa ter um modelo ativo da plataforma de agentes com um endpoint ativo a que você tem permissão de Identity and Access Management (IAM). O AlloyDB não é compatível com endpoints particulares para receber previsões on-line.
Conceda permissões aos usuários do banco de dados para executar a função de previsão e invocar previsões:
\c DB_NAME; GRANT EXECUTE ON FUNCTION ml_predict_row TO USER_NAME;Substitua:
DB_NAME: o nome do banco de dados em que as permissões precisam ser concedidasUSER_NAME: o nome do usuário para quem as permissões devem ser concedidas
Invocar previsões on-line
Use a função SQL 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 ou é um endpoint em execução em um projeto do Google Cloud .
Usar um modelo no Model Garden
Para invocar uma previsão on-line usando um modelo de ML em execução no Model Garden, use a seguinte sintaxe para a função SQL google_ml.predict_row():
SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID', '{"instances": [CONTENTS]}');
Substitua:
PROJECT_ID: ID do projeto do Google CloudREGION_ID: o ID da região do Google Cloud em que o modelo está localizado, por exemplo,us-central1para gemini-2.5-flash.MODEL_ID: o ID do modelo de ML a ser usado, por exemplo, gemini-2.5-flashCONTENTS: as entradas para a chamada de previsão, no formato JSON
Se o modelo de ML estiver armazenado no mesmo projeto e região que o cluster do AlloyDB, será possível abreviar o primeiro argumento desta função:
SELECT 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 Invocações de exemplo.
Usar um endpoint de modelo da Agent Platform
Para invocar uma previsão on-line usando um endpoint de modelo da Agent Platform, use a seguinte sintaxe para a função SQL ml_predict_row():
SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/endpoints/ENDPOINT_ID', '{ CONTENTS }');
Substitua:
PROJECT_ID: o ID do projeto do Google Cloud em que o modelo está localizado.REGION_ID: o ID da região do Google Cloud em que o modelo está localizado, por exemplo,us-central1ENDPOINT_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, será possível abreviar o primeiro argumento dessa função:
SELECT 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-2.5-flash, disponível no Model Garden, para gerar texto com base em um comando curto fornecido como um argumento literal
para 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';
A resposta é um objeto JSON. Para mais informações sobre o formato do objeto, consulte Corpo da resposta.
O exemplo a seguir modifica o anterior das seguintes maneiras:
O exemplo usa o conteúdo da coluna
messages.messagedo 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
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;
O objeto JSON retornado contém uma matriz candidates 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
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;
Para mais exemplos de argumentos para ml_predict_row(), consulte o Guia de início rápido sobre como usar a API Agent Platform.
A seguir
- Aprenda a criar um assistente de compras inteligente com o AlloyDB, o pgvector e o gerenciamento de endpoints de modelo.
- Aprenda mais sobre a referência de gerenciamento de endpoints de modelo.