Registe e chame modelos de IA remotos no AlloyDB Omni

Selecione uma versão da documentação:

Para invocar previsões ou gerar incorporações através de um modelo, registe o ponto final do modelo na gestão de pontos finais de modelos.

Para mais informações sobre a função google_ml.create_model(), consulte a referência de gestão de pontos finais de modelos.

Antes de registar um ponto final do modelo com a gestão de pontos finais do modelo, tem de ativar a extensão google_ml_integration e configurar a autenticação com base no fornecedor do modelo, se o ponto final do modelo exigir autenticação.

Certifique-se de que acede à base de dados com o postgres nome de utilizador predefinido.

Ative a extensão

Tem de adicionar e ativar a extensão google_ml_integration antes de poder começar a usar as funções associadas. A gestão de pontos finais de modelos requer que a extensão google_ml_integration esteja instalada.

  1. Associe à sua base de dados através do psql.

  2. Opcional: se a extensão google_ml_integration já estiver instalada, altere-a para atualizar para a versão mais recente:

        ALTER EXTENSION google_ml_integration UPDATE;
    
  3. Adicione a extensão google_ml_integration através do psql:

      CREATE EXTENSION google_ml_integration;
    
  4. Opcional: conceda autorização a um utilizador do PostgreSQL sem privilégios de superadministrador para gerir metadados do modelo:

      GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA google_ml TO NON_SUPER_USER;
    

    Substitua NON_SUPER_USER pelo nome de utilizador do PostgreSQL que não seja superutilizador.

  5. Ative a gestão de pontos finais de modelos na sua base de dados:

      ALTER SYSTEM SET google_ml_integration.enable_model_support=on;
      SELECT pg_reload_conf();
    

Configure a autenticação

As secções seguintes mostram como configurar a autenticação antes de adicionar um ponto final do modelo do Vertex AI ou pontos finais do modelo de outros fornecedores.

Configure a autenticação para o Vertex AI

Para usar os pontos finais do modelo Google Vertex AI, tem de adicionar autorizações do Vertex AI à conta de serviço que usou durante a instalação do AlloyDB Omni. Para mais informações, consulte o artigo Configure a instalação do AlloyDB Omni para consultar modelos baseados na nuvem.

Configure a autenticação para outros fornecedores de modelos

Para todos os modelos, exceto os modelos da Vertex AI, pode armazenar as suas chaves da API ou tokens de autorização no Secret Manager. Este passo é opcional se o seu ponto final do modelo não processar a autenticação através do Secret Manager. Por exemplo, se o seu ponto final do modelo usar cabeçalhos HTTP para transmitir informações de autenticação ou não usar autenticação.

Esta secção explica como configurar a autenticação se estiver a usar o Secret Manager.

Para criar e usar uma chave da API ou um token de autorização, conclua os seguintes passos:

  1. Crie o Secret no Secret Manager. Para mais informações, consulte o artigo Crie um segredo e aceda a uma versão secreta.

    O nome do segredo e o caminho do segredo são usados na função SQL google_ml.create_sm_secret().

  2. Conceda autorizações ao cluster do AlloyDB para aceder ao segredo.

      gcloud secrets add-iam-policy-binding 'SECRET_ID' \
          --member="serviceAccount:SERVICE_ACCOUNT_ID" \
          --role="roles/secretmanager.secretAccessor"
    

    Substitua o seguinte:

    • SECRET_ID: o ID do segredo no Secret Manager.
    • SERVICE_ACCOUNT_ID: o ID da conta de serviço que criou no passo anterior. Certifique-se de que esta é a mesma conta que usou durante a instalação do AlloyDB Omni. Isto inclui o sufixo completo PROJECT_ID.iam.gserviceaccount.com. Por exemplo: my-service@my-project.iam.gserviceaccount.com

      Também pode conceder esta função à conta de serviço ao nível do projeto. Para mais informações, consulte o artigo Adicione uma associação de políticas de gestão de identidades e acessos

Modelos de incorporação de texto com suporte integrado

Esta secção mostra como registar pontos finais de modelos para os quais a gestão de pontos finais de modelos oferece suporte integrado.

Modelos de incorporação da Vertex AI

A gestão de pontos finais de modelos oferece suporte integrado para todas as versões do modelo text-embedding-gecko da Vertex AI. Use o nome qualificado para definir a versão do modelo como textembedding-gecko@001 ou textembedding-gecko@002.

Uma vez que o ID do ponto final do modelo textembedding-gecko e textembedding-gecko@001 está pré-registado na gestão de pontos finais do modelo, pode usá-los diretamente como o ID do modelo. Para estes modelos, a extensão configura automaticamente as funções de transformação predefinidas.

Para registar a versão do ponto final do modelo textembedding-gecko@002, conclua os seguintes passos:

Para o AlloyDB Omni, certifique-se de que configura o AlloyDB Omni para consultar modelos da Vertex AI baseados na nuvem.

  1. Crie e ative a extensão google_ml_integration.

  2. Associe à sua base de dados através do psql.

  3. Crie e ative a extensão google_ml_integration.

  4. Chame a função de criação de modelos para adicionar o ponto final do modelo textembedding-gecko@002:

    CALL
      google_ml.create_model(
        model_id => 'textembedding-gecko@002',
        model_provider => 'google',
        model_qualified_name => 'textembedding-gecko@002',
        model_type => 'text_embedding',
        model_auth_type => 'alloydb_service_agent_iam');
    
      The request URL that the function generates refers to the project associated with the AlloyDB Omni service account. If you want to refer to another project, then ensure that you specify the `model_request_url` explicitly.
    

Abrir modelo de incorporação de texto de IA

A gestão de pontos finais de modelos oferece suporte integrado para o modelo text-embedding-ada-002 da OpenAI.A extensão google_ml_integration configura automaticamente as funções de transformação predefinidas e invoca chamadas para o modelo remoto.

O exemplo seguinte adiciona o ponto final do modelo text-embedding-ada-002 OpenAI.

  1. Associe à sua base de dados através do psql.
  2. Crie e ative a extensão google_ml_integration.
  3. Adicione a chave da API OpenAI como um segredo ao Secret Manager para autenticação.
  4. Chame o segredo armazenado no Secret Manager:

    CALL
    google_ml.create_sm_secret(
      secret_id => 'SECRET_ID',
      secret_path => 'projects/PROJECT_ID/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
    

    Substitua o seguinte:

    • SECRET_ID: o ID secreto que define e que é usado posteriormente quando regista um ponto final do modelo, por exemplo, key1.
    • SECRET_MANAGER_SECRET_ID: o ID secreto definido no Secret Manager quando criou o segredo.
    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • VERSION_NUMBER: o número da versão do ID secreto.
  5. Chame a função de criação de modelos para registar o ponto final do modelo text-embedding-ada-002:

      CALL
        google_ml.create_model(
          model_id => 'MODEL_ID',
          model_provider => 'open_ai',
          model_type => 'text_embedding',
          model_qualified_name => 'text-embedding-ada-002',
          model_auth_type => 'secret_manager',
          model_auth_id => 'SECRET_ID');
    

    Substitua o seguinte:

    • MODEL_ID: um ID exclusivo para o ponto final do modelo que define. Este ID do modelo é referenciado para metadados que o ponto final do modelo precisa para gerar incorporações ou invocar previsões.
    • SECRET_ID: o ID secreto que usou anteriormente no procedimento google_ml.create_sm_secret().

Para gerar incorporações, veja como gerar incorporações para pontos finais de modelos com suporte integrado.

Outros modelos de incorporação de texto

Esta secção mostra como registar qualquer ponto final de modelo de incorporação de texto alojado de forma personalizada ou pontos finais de modelo de incorporação de texto fornecidos por fornecedores de alojamento de modelos. Com base nos metadados do ponto final do modelo, pode ter de adicionar funções de transformação, gerar cabeçalhos HTTP ou definir pontos finais.

Modelo de incorporação de texto alojado de forma personalizada

Esta secção mostra como registar um ponto final de modelo alojado de forma personalizada, juntamente com a criação de funções de transformação e, opcionalmente, cabeçalhos HTTP personalizados. O AlloyDB Omni suporta todos os pontos finais de modelos alojados personalizados, independentemente de onde estão alojados.

O exemplo seguinte adiciona o ponto final do modelo personalizado custom-embedding-model alojado pela Cymbal. As funções de transformação cymbal_text_input_transform e cymbal_text_output_transform são usadas para transformar o formato de entrada e saída do modelo no formato de entrada e saída da função de previsão.

Para registar pontos finais de modelos de incorporação de texto alojados de forma personalizada, conclua os seguintes passos:

  1. Associe à sua base de dados através do psql.

  2. Crie e ative a extensão google_ml_integration.

  3. Opcional: adicione a chave da API como um segredo ao Secret Manager para autenticação.

  4. Chame o segredo armazenado no Secret Manager:

    CALL
      google_ml.create_sm_secret(
        secret_id => 'SECRET_ID',
        secret_path => 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
    

    Substitua o seguinte:

    • SECRET_ID: o ID secreto que define e que é usado posteriormente quando regista um ponto final do modelo, por exemplo, key1.
    • SECRET_MANAGER_SECRET_ID: o ID secreto definido no Secret Manager quando criou o segredo.
    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • VERSION_NUMBER: o número da versão do ID secreto.
  5. Crie as funções de transformação de entrada e saída com base na seguinte assinatura para os pontos finais do modelo de incorporação de texto da função de previsão. Para mais informações sobre como criar funções de transformação, consulte o exemplo de funções de transformação.

    Seguem-se exemplos de funções de transformação específicas do custom-embedding-model ponto final do modelo de incorporação de texto:

    -- Input Transform Function corresponding to the custom model endpoint
    CREATE OR REPLACE FUNCTION cymbal_text_input_transform(model_id VARCHAR(100), input_text TEXT)
    RETURNS JSON
    LANGUAGE plpgsql
    AS $$
    DECLARE
      transformed_input JSON;
      model_qualified_name TEXT;
    BEGIN
      SELECT json_build_object('prompt', json_build_array(input_text))::JSON INTO transformed_input;
      RETURN transformed_input;
    END;
    $$;
    -- Output Transform Function corresponding to the custom model endpoint
    CREATE OR REPLACE FUNCTION cymbal_text_output_transform(model_id VARCHAR(100), response_json JSON)
    RETURNS REAL[]
    LANGUAGE plpgsql
    AS $$
    DECLARE
      transformed_output REAL[];
    BEGIN
      SELECT ARRAY(SELECT json_array_elements_text(response_json->0)) INTO transformed_output;
      RETURN transformed_output;
    END;
    $$;
    
  6. Chame a função de criação de modelos para registar o ponto final do modelo de incorporação personalizado:

    CALL
      google_ml.create_model(
        model_id => 'MODEL_ID',
        model_request_url => 'REQUEST_URL',
        model_provider => 'custom',
        model_type => 'text_embedding',
        model_auth_type => 'secret_manager',
        model_auth_id => 'SECRET_ID',
        model_qualified_name => 'MODEL_QUALIFIED_NAME',
        model_in_transform_fn => 'cymbal_text_input_transform',
        model_out_transform_fn => 'cymbal_text_output_transform');
    

    Substitua o seguinte:

    • MODEL_ID: obrigatório. Um ID exclusivo para o ponto final do modelo que define, por exemplo, custom-embedding-model. Este ID do modelo é referenciado para metadados que o ponto final do modelo precisa para gerar incorporações ou invocar previsões.
    • REQUEST_URL: obrigatório. O ponto final específico do modelo quando adiciona incorporação de texto personalizada e pontos finais de modelos genéricos, por exemplo, https://cymbal.com/models/text/embeddings/v1.
    • MODEL_QUALIFIED_NAME: obrigatório se o ponto final do modelo usar um nome qualificado. O nome totalmente qualificado, caso o ponto final do modelo tenha várias versões.
    • SECRET_ID: o ID secreto que usou anteriormente no procedimento google_ml.create_sm_secret().

Modelos OpenAI Text Embedding 3 Small e Large

Pode registar os pontos finais do modelo text-embedding-3-small e text-embedding-3-large da OpenAI através da função de previsão de incorporação e das funções de transformação específicas do ponto final do modelo. O exemplo seguinte mostra como registar o ponto final do modelo text-embedding-3-small da OpenAI.

Para registar o ponto final do modelo de incorporação text-embedding-3-small, faça o seguinte:

  1. Associe à sua base de dados através do psql.
  2. Crie e ative a extensão google_ml_integration.
  3. Adicione a chave da API OpenAI como um segredo ao Secret Manager para autenticação. Se já tiver criado um segredo para qualquer outro modelo da OpenAI, pode reutilizar o mesmo segredo.
  4. Chame o segredo armazenado no Secret Manager:

    CALL
      google_ml.create_sm_secret(
        secret_id => 'SECRET_ID',_
        secret_path => 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
    

    Substitua o seguinte:

    • SECRET_ID: o ID secreto que define e que é usado posteriormente quando regista um ponto final do modelo.
    • SECRET_MANAGER_SECRET_ID: o ID secreto definido no Secret Manager quando criou o segredo.
    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • VERSION_NUMBER: o número da versão do ID secreto.
  5. Crie as funções de transformação de entrada e saída com base na seguinte assinatura para a função de previsão para modelos de incorporação de texto. Para mais informações sobre como criar funções de transformação, consulte o exemplo de funções de transformação. Para saber mais sobre os formatos de entrada e saída esperados pelos pontos finais do modelo OpenAI, consulte o artigo Incorporações.

    Seguem-se exemplos de funções de transformação para os pontos finais do modelo de incorporação de texto da OpenAI text-embedding-ada-002, text-embedding-3-small e text-embedding-3-large.

    -- Input Transform Function corresponding to openai_text_embedding model endpoint family
    CREATE OR REPLACE FUNCTION openai_text_input_transform(model_id VARCHAR(100), input_text TEXT)
    RETURNS JSON
    LANGUAGE plpgsql
    AS $$
    #variable_conflict use_variable
    DECLARE
      transformed_input JSON;
      model_qualified_name TEXT;
    BEGIN
      SELECT google_ml.model_qualified_name_of(model_id) INTO model_qualified_name;
      SELECT json_build_object('input', input_text, 'model', model_qualified_name)::JSON INTO transformed_input;
      RETURN transformed_input;
    END;
    $$;
    
    -- Output Transform Function corresponding to openai_text_embedding model endpoint family
    CREATE OR REPLACE FUNCTION openai_text_output_transform(model_id VARCHAR(100), response_json JSON)
    RETURNS REAL[]
    LANGUAGE plpgsql
    AS $$
    DECLARE
      transformed_output REAL[];
    BEGIN
      SELECT ARRAY(SELECT json_array_elements_text(response_json->'data'->0->'embedding')) INTO transformed_output;
      RETURN transformed_output;
    END;
    $$;
    
  6. Chame a função de criação de modelos para registar o ponto final do modelo de incorporação text-embedding-3-small:

    CALL
      google_ml.create_model(
        model_id => 'MODEL_ID',
        model_provider => 'open_ai',
        model_type => 'text_embedding',
        model_auth_type => 'secret_manager',
        model_auth_id => 'SECRET_ID',
        model_qualified_name => 'text-embedding-3-small',
        model_in_transform_fn => 'openai_text_input_transform',
        model_out_transform_fn => 'openai_text_output_transform');
    

    Substitua o seguinte:

    • MODEL_ID: um ID exclusivo para o ponto final do modelo que define, por exemplo, openai-te-3-small. Este ID do modelo é referenciado para metadados que o ponto final do modelo precisa para gerar incorporações ou invocar previsões.
    • SECRET_ID: o ID secreto que usou anteriormente no procedimento google_ml.create_sm_secret().

Para mais informações, veja como gerar incorporações para outros pontos finais do modelo de incorporação de texto.

Modelos genéricos

Esta secção mostra como registar qualquer ponto final de modelo genérico que esteja disponível num fornecedor de modelos alojados, como o Hugging Face, a OpenAI, o Vertex AI ou qualquer outro fornecedor. Esta secção mostra exemplos para registar um ponto final de modelo genérico alojado no Hugging Face e um modelo genérico gemini-pro do Model Garden do Vertex AI, que não tem suporte integrado.

Pode registar qualquer ponto final de modelo genérico, desde que a entrada e a saída estejam no formato JSON. Com base nos metadados do ponto final do modelo, pode ter de gerar cabeçalhos HTTP ou definir pontos finais.

Modelo genérico no Hugging Face

O exemplo seguinte adiciona o ponto final do modelo de classificação personalizada facebook/bart-large-mnlialojado no Hugging Face.

  1. Associe à sua base de dados através do psql.
  2. Crie e ative a extensão google_ml_integration.
  3. Adicione o token de portador como um segredo ao Secret Manager para autenticação.
  4. Chame o segredo armazenado no Secret Manager:

    CALL
      google_ml.create_sm_secret(
        secret_id => 'SECRET_ID',
        secret_path => 'projects/project-id/secrets/SECRE_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
    

    Substitua o seguinte:

    • SECRET_ID: o ID secreto que define e que é usado posteriormente quando regista um ponto final do modelo.
    • SECRET_MANAGER_SECRET_ID: o ID secreto definido no Secret Manager quando criou o segredo.
    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • VERSION_NUMBER: o número da versão do ID secreto.
  5. Chame a função de criação de modelos para registar o ponto final do modelo facebook/bart-large-mnli:

    CALL
      google_ml.create_model(
        model_id => 'MODEL_ID',
        model_provider => 'custom',
        model_request_url => 'REQUEST_URL',
        model_qualified_name => 'MODEL_QUALIFIED_NAME',
        model_auth_type => 'secret_manager',
        model_auth_id => 'SECRET_ID');
    

    Substitua o seguinte:

    • MODEL_ID: um ID exclusivo para o ponto final do modelo que define, por exemplo, custom-classification-model. Este ID do modelo é referenciado para metadados que o ponto final do modelo precisa para gerar incorporações ou invocar previsões.
    • REQUEST_URL: o ponto final específico do modelo quando adiciona incorporação de texto personalizada e pontos finais de modelos genéricos, por exemplo, https://api-inference.huggingface.co/models/facebook/bart-large-mnli.
    • MODEL_QUALIFIED_NAME: o nome totalmente qualificado da versão do ponto final do modelo, por exemplo, facebook/bart-large-mnli.
    • SECRET_ID: o ID secreto que usou anteriormente no procedimento google_ml.create_sm_secret().

Modelo do Gemini

Certifique-se de que configura o AlloyDB Omni para consultar modelos da Vertex AI baseados na nuvem.

O exemplo seguinte adiciona o ponto final do modelo gemini-1.0-pro do Vertex AI Model Garden.

  1. Associe à sua base de dados através do psql.
  2. Crie e ative a extensão google_ml_integration.
  3. Chame a função de criação de modelo para registar o modelo gemini-1.0-pro:

    CALL
      google_ml.create_model(
        model_id => 'MODEL_ID',
        model_request_url => 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:streamGenerateContent',
        model_provider => 'google',
        model_auth_type => 'alloydb_service_agent_iam');
    

    Substitua o seguinte:

    • MODEL_ID: um ID exclusivo para o ponto final do modelo que define, por exemplo, gemini-1. Este ID do modelo é referenciado para metadados que o ponto final do modelo precisa para gerar incorporações ou invocar previsões.
    • PROJECT_ID: o ID do seu projeto Google Cloud .

Para mais informações, veja como invocar previsões para pontos finais de modelos genéricos.

O que se segue?