从 Bigtable 导入

如需从 Bigtable 中注入数据,请按照以下步骤使用 API 创建数据存储区并注入数据。

设置 Bigtable 访问权限

如需向 Gemini Enterprise 授予对其他项目中 Bigtable 数据的访问权限,请按以下步骤操作:

  1. 将以下 PROJECT_NUMBER 变量替换为您的 Gemini Enterprise 项目编号,然后复制此代码块的内容。这是您的 Gemini Enterprise 服务账号标识符:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.`
    
  2. 前往 IAM 和管理页面。

    IAM 和管理

  3. IAM 和管理页面上切换到 Bigtable 项目,然后点击授予访问权限

  4. 新的主账号中,输入实例的服务账号标识符,然后选择 Bigtable > Bigtable Reader 角色。

  5. 点击保存

  6. 切换回 Gemini Enterprise 项目。

接下来,请参阅从 Bigtable 导入数据

从 Bigtable 导入数据

REST

如需使用命令行创建数据存储区并从 Bigtable 中注入数据,请按以下步骤操作:

  1. 创建数据存储区。

    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/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    替换以下内容:

    • PROJECT_ID:您的项目的 ID。
    • DATA_STORE_ID:数据存储区的 ID。ID 只能包含小写字母、数字、下划线和连字符。
    • DISPLAY_NAME:数据存储区的显示名称。此信息可能会显示在 Google Cloud 控制台中。
  2. 从 Bigtable 导入数据。

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
      -d '{
        "bigtableSource ": {
          "projectId": "BIGTABLE_PROJECT_ID",
          "instanceId": "INSTANCE_ID",
          "tableId": "TABLE_ID",
          "bigtableOptions": {
            "keyFieldName": "KEY_FIELD_NAME",
            "families": {
              "key": "KEY",
              "value": {
                "fieldName": "FIELD_NAME",
                "encoding": "ENCODING",
                "type": "TYPE",
                "columns": [
                  {
                    "qualifier": "QUALIFIER",
                    "fieldName": "FIELD_NAME",
                    "encoding": "COLUMN_ENCODING",
                    "type": "COLUMN_VALUES_TYPE"
                  }
                ]
              }
             }
             ...
          }
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    替换以下内容:

    • PROJECT_ID:Gemini Enterprise 项目的 ID。
    • DATA_STORE_ID:数据存储区的 ID。ID 只能包含小写字母、数字、下划线和连字符。
    • BIGTABLE_PROJECT_ID:您的 Bigtable 项目的 ID。
    • INSTANCE_ID:您的 Bigtable 实例的 ID。
    • TABLE_ID:Bigtable 表的 ID。
    • KEY_FIELD_NAME:可选,但建议填写。在将数据提取到 Gemini Enterprise 后,用于行键值的字段名称。
    • KEY:必填。列族键的字符串值。
    • ENCODING:可选。当类型不是 STRING 时,值的编码模式。您可以在 columns 中列出特定列并为其指定编码,以覆盖此设置。
    • COLUMN_TYPE:可选。相应列族中的值类型。
    • QUALIFIER:必填。列的限定符。
    • FIELD_NAME:可选,但建议填写。将此列提取到 Gemini Enterprise 后要使用的字段名称。
    • COLUMN_ENCODING:可选。当类型不是 STRING 时,特定列的值的编码模式。
    • RECONCILIATION_MODE:可选。值为 FULLINCREMENTAL。默认值为 INCREMENTAL。 指定 INCREMENTAL 会导致从 Bigtable 到数据存储区的数据增量刷新。此方法会执行 upsert 操作,即添加新文档,并将现有文档替换为具有相同 ID 的更新文档。指定 FULL 会导致数据存储区中的文档完全重新设置基准。换句话说,系统会将新文档和更新后的文档添加到数据存储区,并从数据存储区中移除 Bigtable 中不存在的文档。如果您想自动删除不再需要的文档,FULL 模式会很有帮助。
    • AUTO_GENERATE_IDS:可选。指定是否自动生成文档 ID。如果设置为 true,则文档 ID 将根据载荷的哈希值生成。请注意,生成的文档 ID 在多次导入时可能不会保持一致。如果您在多次导入时自动生成 ID,Google 强烈建议您将 reconciliationMode 设置为 FULL,以保持文档 ID 的一致性。

      仅当 bigquerySource.dataSchema 设置为 custom 时,才指定 autoGenerateIds。否则,系统将返回 INVALID_ARGUMENT 错误。如果您未指定 autoGenerateIds 或将其设置为 false,则必须指定 idField。否则,文档将无法导入。

    • ID_FIELD:可选。指定哪些字段是文档 ID。

后续步骤

  • 如需将数据存储区挂接到应用,请按照创建搜索应用中的步骤创建应用并选择数据存储区。

  • 如需在设置应用和数据存储区后预览搜索结果以了解其显示方式,请参阅预览搜索结果