连接到 AlloyDB for PostgreSQL 中的数据(预览版)

您可以将 AlloyDB 实例连接到 Gemini Enterprise,从而实时访问数据。

与从 AlloyDB 导入相比,连接具有以下优势:

  • 无需导入、编入索引和复制数据。
  • 最大限度的数据新鲜度。
  • 无需支付额外的索引编制和存储费用。
  • 无需将结构化数据扁平化为统一的记录。

与导入相比,连接具有以下缺点:

  • 此方法仅支持结构化查询,不支持语义查询或半语义查询。
  • 与导入数据相比,设置过程稍微复杂一些。

限制

连接到 AlloyDB 存在以下限制:

  • Gemini Enterprise 支持数据库对象(例如表和列)级别的访问权限控制,但不支持用户级访问权限控制。有权访问 Gemini Enterprise 应用的所有用户都可以看到相同的数据。
  • 您可以通过 API 创建 AlloyDB 数据存储区,但无法通过 Google Cloud 控制台创建。

准备工作

连接到 AlloyDB 的功能目前处于预览版阶段,需要加入许可名单。如需使用此功能,请通过以下表单注册:选择启用/停用 Gemini Enterprise 并连接到 AlloyDB 中的数据

注册后,请等到收到启用确认后再按照本页面上的说明操作。

设置 AlloyDB AI 自然语言

此连接器依赖于 AlloyDB 中的 AlloyDB AI 自然语言,该功能可将自然语言查询转换为 SQL 查询。

在连接之前,请按照 AlloyDB 文档中生成可回答自然语言问题的 SQL 查询中的步骤,在数据库中设置 AlloyDB AI 自然语言。

请注意,在 AlloyDB AI Natural Language 中添加模板(一组精选的自然语言问题以及相应的 SQL 查询)对于提高质量特别有用。添加模板时,Google 建议您采取以下措施:

  • 使用 ORDER BY 可避免不确定性。例如:SELECT customers.id FROM customers ORDER BY customers.id;

设置 Gemini Enterprise 与 AlloyDB 之间的身份验证

Gemini Enterprise 使用专用服务账号和 AlloyDB 实例中的数据库用户访问 AlloyDB。采用此方法后,每位 Gemini Enterprise 用户都可以查看相同的数据,而无需进行用户专属的访问权限控制。

服务账号用于连接 AlloyDB 实例并与之互动。如需启用此功能,您需要在数据库实例所在的 Google Cloud 项目中配置 Identity and Access Management (IAM) 设置。

如需设置身份验证,请执行以下操作:

  1. 前往托管 AlloyDB 实例的项目的 IAM 配置页面。
  2. 向以下正文授予 Cloud AlloyDB Database User 角色: service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com

    PROJECT_NUMBER 替换为使用 Gemini Enterprise 的 Google Cloud 项目编号。

  3. 在 AlloyDB 实例中,创建一个供 Gemini Enterprise 执行 SQL 查询的数据库用户。

    请务必仅向该用户授予只读权限,并且仅针对应可从 Gemini Enterprise 访问的表、视图和列授予该权限。这可确保:

    • Gemini Enterprise 的查询无法更改或删除您的数据。 Gemini Enterprise 旨在仅读取数据库中的数据,而不更改任何内容,但 Google 无法完全排除 AI 可能生成意外写入查询的可能性。

    • Gemini Enterprise 中的用户只能看到他们应该看到的数据。

      例如:

      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;
      

      将 Gemini Enterprise 与 AlloyDB 相关联时,请在 alloydbConnectionConfig用户密码字段中提供用户名和密码。

将 Gemini Enterprise 与 AlloyDB 相关联

如需连接 AlloyDB 实例,请按以下步骤操作:

  1. 使用 API(包括 federatedSearchConfig.alloyDbConfig)在 Gemini Enterprise 中创建数据存储区,其中包含 AlloyDB 连接详细信息。

    下面的示例:

    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"]
    }'
    

    替换以下内容:

    • PROJECT_ID:您使用 Gemini Enterprise 的项目的 ID。
    • LOCATION:数据存储区的位置。这应与您的 Gemini Enterprise 实例位于同一位置。

    • DATA_STORE_ID:您要创建的数据存储区的 ID。此 ID 只能包含小写字母、数字、下划线和连字符。

    • DATA_STORE_NAME:要创建的数据存储区的显示名称。

    • INSTANCE_PATH:AlloyDB 实例的路径,格式为 projects/.../locations/.../clusters/.../instances/...

    • DATABASE_NAME:AlloyDB 数据库的 ID。

    • DATABASE_USER_NAME:AlloyDB 数据库用户的 ID。

    • DATABASE_USER_PASSWORD:AlloyDB 数据库用户的密码。

    • NL_CONFIG_ID:AlloyDB AI 自然语言配置的 ID。

  2. 按照创建应用中的步骤操作,将数据存储区关联到现有的 Gemini Enterprise 应用,或创建新应用并选择连接器。

  3. 如需在设置应用后预览搜索结果的显示方式,请参阅预览搜索结果