Invocar previsões online a partir de bases de dados do AlloyDB

Selecione uma versão da documentação:

Esta página mostra como invocar previsões online a partir de uma base de dados do AlloyDB for PostgreSQL.

O AlloyDB permite-lhe obter previsões online no seu código SQL chamando a função ml_predict_row(). Para mais informações sobre a utilização de modelos de aprendizagem automática com o AlloyDB, consulte o artigo Crie aplicações de IA generativa.

Antes de começar

Antes de poder invocar previsões online a partir de uma base de dados do AlloyDB, tem de preparar a base de dados e selecionar um modelo de ML adequado.

Prepare a sua base de dados

  1. Configure a integração entre a sua base de dados e o Vertex AI.

  2. Conceda autorização aos utilizadores da base de dados para executar a função ml_predict_row() para executar previsões:

    1. Associe um cliente psql à instância principal do cluster, conforme descrito em Associe um cliente psql a uma instância.

    2. Na linha de comandos psql, ligue-se à base de dados e conceda autorizaçõ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 têm de ser concedidas.

      • USER_NAME: o nome do utilizador ao qual as autorizações têm de ser concedidas.

Selecione um modelo de ML

Quando chama a função ml_predict_row(), tem de especificar a localização de um modelo de ML. O modelo que especificar pode ser um dos seguintes:

  • Um modelo que está a ser executado no Vertex AI Model Garden.

    A função ml_predict_row() suporta a invocação de previsões apenas em modelos tabulares ou personalizados.

  • Um modelo do Vertex AI com um ponto final ativo ao qual tem autorização da gestão de identidade e de acesso (IAM) para aceder.

    O AlloyDB não suporta pontos finais privados para receber previsões online.

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 de o modelo de ML que quer usar estar no Vertex AI Model Garden ou ser 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 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 projeto

  • REGION_ID: o ID da Google Cloud região em que o modelo está localizado, por exemplo, us-central1 para o gemini-pro

  • MODEL_ID: o ID do modelo de ML a usar, por exemplo, gemini-pro

  • CONTENTS: 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á localizado

  • REGION_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 modelo

  • CONTENTS: 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 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?"
    }]
  }]
}');

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.0-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.0-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.