Conectar-se a dados do AlloyDB para PostgreSQL (prévia)

Você pode conectar sua instância do AlloyDB ao Gemini Enterprise, permitindo o acesso em tempo real aos seus dados.

Em comparação com a importação do AlloyDB, a conexão tem as seguintes vantagens:

  • Evita a necessidade de importar, indexar e duplicar dados.
  • Atualização máxima de dados.
  • Sem custos adicionais de indexação e armazenamento.
  • Não é necessário nivelar dados estruturados em registros uniformes.

Considere as seguintes desvantagens da conexão em comparação com a importação:

  • Essa abordagem oferece suporte apenas a consultas estruturadas, não semânticas ou semissêmanticas.
  • A configuração é um pouco mais complexa em comparação com a importação de dados.

Limitações

A conexão com o AlloyDB tem as seguintes limitações:

  • O Gemini Enterprise oferece suporte ao controle de acesso no nível de objetos de banco de dados, como tabelas e colunas, mas não no nível do usuário. Todos os usuários com acesso ao app Gemini Enterprise podem ver os mesmos dados.
  • A criação de um repositório de dados do AlloyDB é compatível com a API, não com o Google Cloud console.

Configurar a linguagem natural da IA do AlloyDB

Esse conector depende da linguagem natural da IA do AlloyDB, que traduz consultas de linguagem natural em consultas SQL.

Antes de se conectar, configure a linguagem natural da IA do AlloyDB no seu banco de dados seguindo as etapas em Gerar consultas SQL que respondem a perguntas em linguagem natural na documentação do AlloyDB.

A adição de modelos na linguagem natural da IA do AlloyDB (um conjunto selecionado de perguntas em linguagem natural com consultas SQL correspondentes) é particularmente útil para a qualidade. Ao adicionar modelos, o Google recomenda o seguinte:

  • Use ORDER BY para evitar o não determinismo. Por exemplo: SELECT customers.id FROM customers ORDER BY customers.id;.

Configurar a autenticação entre o Gemini Enterprise e o AlloyDB

O Gemini Enterprise acessa o AlloyDB usando uma conta de serviço dedicada e um usuário de banco de dados na instância do AlloyDB. Com essa abordagem, todos os usuários do Gemini Enterprise podem ver os mesmos dados, sem controle de acesso específico do usuário.

Uma conta de serviço é usada para se conectar e interagir com a instância do AlloyDB. Para ativar isso, é necessário configurar as configurações do Identity and Access Management (IAM) no Google Cloud projeto em que a instância do banco de dados reside.

Para configurar a autenticação, faça o seguinte:

  1. Acesse a página de configuração do IAM do projeto que hospeda a instância do AlloyDB.
  2. Conceda o papel de Usuário do banco de dados do Cloud AlloyDB a o principal a seguir: service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com

    Substitua PROJECT_NUMBER pelo Google Cloud número do projeto em que você usa o Gemini Enterprise.

  3. Na instância do AlloyDB, crie um usuário de banco de dados para ser usado pelo Gemini Enterprise para executar consultas SQL.

    É muito importante conceder a esse usuário acesso somente leitura e apenas para tabelas, visualizações e colunas que precisam estar acessíveis no Gemini Enterprise. Isso garante que:

    • As consultas do Gemini Enterprise não podem mudar nem excluir seus dados. O Gemini Enterprise foi projetado para apenas ler dados do seu banco de dados e não mudar nada, mas o Google não pode excluir totalmente a possibilidade de que a IA gere consultas de gravação não intencionais.

    • Os usuários do Gemini Enterprise só podem ver os dados que precisam ver.

      Exemplo:

      CREATE ROLE USER_NAME WITH LOGIN PASSWORD 'PASSWORD';
      GRANT SELECT ON TABLE "public"."TABLE_NAME_1" TO USER_NAME;
      GRANT SELECT ON TABLE "public"."TABLE_NAME_2" TO USER_NAME;
      

      Ao vincular o Gemini Enterprise ao AlloyDB, forneça o nome de usuário e a senha nos campos Usuário e Senha de alloydbConnectionConfig.

Vincular o Gemini Enterprise ao AlloyDB

Para conectar sua instância do AlloyDB, siga estas etapas:

  1. Crie um repositório de dados no Gemini Enterprise com os detalhes de conexão do AlloyDB usando a API, incluindo federatedSearchConfig.alloyDbConfig.

    No exemplo a seguir:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -H "X-Goog-User-Project: PROJECT_ID" \
      "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" -d '{
      "displayName": "DATA_STORE_NAME",
      "federatedSearchConfig": {
        "alloyDbConfig": {
          "alloydbConnectionConfig": {
            "instance": "INSTANCE_PATH",
            "database": "DATABASE_NAME",
            "user": "DATABASE_USER_NAME",
            "password": "DATABASE_USER_PASSWORD",
            "authMode": "AUTH_MODE_SERVICE_ACCOUNT"
          },
          "alloydb_ai_nl_config": { "nlConfigId": "NL_CONFIG_ID" }
        }
      },
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"]
    }'
    

    Substitua:

    • PROJECT_ID: o ID do projeto em que você usa o Gemini Enterprise.
    • LOCATION: o local do repositório de dados. Ele precisa ser o mesmo local da instância do Gemini Enterprise.

    • DATA_STORE_ID: o ID do repositório de dados que você quer criar. Esse ID só pode conter letras minúsculas, dígitos, sublinhados e hífens.

    • DATA_STORE_NAME: o nome de exibição do repositório de dados que você quer criar.

    • INSTANCE_PATH: o caminho da instância do AlloyDB, no formato projects/.../locations/.../clusters/.../instances/....

    • DATABASE_NAME: o ID do banco de dados do AlloyDB.

    • DATABASE_USER_NAME: o ID do usuário do banco de dados do AlloyDB.

    • DATABASE_USER_PASSWORD: a senha do usuário do banco de dados do AlloyDB.

    • NL_CONFIG_ID: o ID da configuração de linguagem natural da IA do AlloyDB.

  2. Anexe o repositório de dados a um app Gemini Enterprise existente ou crie um novo app e selecione o conector, seguindo as etapas em Criar um app.

  3. Para ver como os resultados da pesquisa aparecem depois que o app é configurado, consulte Visualizar resultados da pesquisa.