A extensão google_ml_integration no AlloyDB para PostgreSQL permite invocar previsões on-line de modelos de aprendizado de máquina 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 no 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 em que 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 para PostgreSQL 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 trabalhar com a Agent Platform. Para mais informações, consulte Integrar seu banco de dados à Agent Platform.
- Você precisa ter um modelo ativo da Agent Platform 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.
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 concedidas
USER_NAME: o nome do usuário para quem as permissões precisam 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 Google Cloud projeto.
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: o ID do Google Cloud projetoREGION_ID: o ID da Google Cloud região em que o modelo está localizado, por exemplo,us-central1para 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 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 obter 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 Google Cloud projeto em que o modelo está localizadoREGION_ID: o ID da Google Cloud região 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 do cluster do AlloyDB, você poderá 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 gemini-pro, 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-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';
A resposta é um objeto JSON. Para mais informações sobre o formato do objeto, consulte Corpo da resposta.
O exemplo a seguir modifica o exemplo anterior destas maneiras:
O exemplo usa o conteúdo da coluna
messages.messagedo banco de dados atual como entrada.O exemplo demonstra o uso de a
json_build_object()função como ajuda para formatar os parâmetros da função.
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;
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 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;
Para mais exemplos de argumentos para ml_predict_row(), consulte Guia de início rápido sobre como usar a API da Agent Platform
API.
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.