Esta página descreve como invocar previsões através de funções dos espaços de nomes public
e google_ml
. A extensão google_ml_integration
inclui funções de previsão para estes espaços de nomes.
Pode usar a função ml_predict_row()
no esquema public
com qualquer modelo genérico alojado no Vertex AI sem registar o ponto final. A função google_ml.predict_row()
no esquema google_ml
pode ser usada com qualquer modelo que tenha sido registado na gestão de pontos finais de modelos.
Para invocar previsões, selecione um dos seguintes esquemas.
Antes de começar
Para permitir que o AlloyDB invoque previsões, faça o seguinte:
- Pode invocar previsões em regiões onde a IA generativa no Vertex AI está disponível. Para ver uma lista de regiões, consulte o artigo Localizações da IA generativa no Vertex AI.
- Ligue-se à sua base de dados através do
psql
ou do AlloyDB for PostgreSQL Studio. - Verifique se a extensão
google_ml_integration
está instalada. - Verifique se a flag
google_ml_integration.enable_model_support
está definida comoon
. - Antes de poder invocar previsões a partir de uma base de dados do AlloyDB, tem de configurar o AlloyDB para funcionar com o Vertex AI. Para mais informações, consulte o artigo Integre a sua base de dados com o Vertex AI.
- Tem de ter um modelo do Vertex AI ativo com um ponto final ativo ao qual tem autorização de acesso do Identity and Access Management (IAM). O AlloyDB não suporta pontos finais privados para receber previsões online.
Conceda autorizações aos utilizadores da base de dados para executar a função de previsão para invocar previsões:
\c DB_NAME; GRANT EXECUTE ON FUNCTION ml_predict_row TO USER_NAME;
Substitua o seguinte:
DB_NAME: o nome da base de dados na qual as autorizações devem ser concedidas
USER_NAME: o nome do utilizador ao qual as autorizações devem ser concedidas
Invocar previsões online
Use a função SQL ml_predict_row()
para invocar previsões online
com base nos seus dados.
O formato do argumento inicial da função depende se o modelo de ML que quer usar está no Model Garden do Vertex AI ou é um ponto final em execução num Google Cloud projeto.
Use um modelo no Vertex AI Model Garden
Para invocar uma previsão online através de um modelo de ML em execução no Model Garden do Vertex AI, 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', '{ CONTENTS }');
Substitua o seguinte:
PROJECT_ID
: o ID do seu Google Cloud projetoREGION_ID
: o ID da Google Cloud região em que o modelo está localizado, por exemplo,us-central1
para o gemini-proMODEL_ID
: o ID do modelo de ML a usar, 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 que o cluster do AlloyDB, pode abreviar o primeiro argumento desta função:
SELECT ml_predict_row('publishers/google/models/MODEL_ID', '{ CONTENTS }');
Para obter informações sobre as mensagens de resposta JSON do modelo, consulte a referência do modelo base de IA generativa.
Para ver exemplos, consulte Exemplos de invocações.
Use um ponto final do modelo do Vertex AI
Para invocar uma previsão online através de um ponto final do modelo do Vertex AI, 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 o seguinte:
PROJECT_ID
: o ID do projeto Google Cloud no qual o modelo está localizadoREGION_ID
: o ID da Google Cloud região em que o modelo está localizado, por exemplo,us-central1
ENDPOINT_ID
: o ID do ponto final do modeloCONTENTS
: as entradas para a chamada de previsão, no formato JSON
Se o ponto final estiver localizado no mesmo projeto e região que o cluster do AlloyDB, pode abreviar o primeiro argumento desta função:
SELECT ml_predict_row('endpoints/ENDPOINT_ID', '{ CONTENTS }');
Para obter informações sobre as mensagens de resposta JSON do modelo, consulte PredictResponse.
Exemplos de invocações
O exemplo seguinte usa o gemini-pro, disponível no Model Garden, para gerar texto com base num 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 o corpo da resposta.
O exemplo seguinte modifica o anterior das seguintes formas:
O exemplo usa o conteúdo da coluna
messages.message
da base de dados atual como entrada.O exemplo demonstra a utilização 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-1.5-pro:generateContent', json_build_object('contents', json_build_object('text', message))) from messages;
O objeto JSON devolvido contém agora uma entrada na respetiva matriz predictions
para cada linha na tabela messages
.
Uma vez que a resposta é um objeto JSON, pode extrair campos específicos do mesmo através do 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 ver mais exemplos de argumentos para ml_predict_row()
, consulte o guia de início rápido com a API Vertex AI.