从 BigQuery 导入

您可以通过以下两种方式从 BigQuery 表创建数据存储区:

  • 一次性提取:将数据从 BigQuery 表导入到数据存储区。除非您手动刷新数据,否则数据存储区中的数据不会发生变化。

  • 定期注入:您可以从一个或多个 BigQuery 表中导入数据,并设置同步频率,以确定数据存储区从 BigQuery 数据集中更新最新数据的频率。

下表比较了将 BigQuery 数据导入 Gemini Enterprise 数据存储区的两种方式。

一次性注入 定期提取
已正式发布 (GA)。 公开预览版。
数据必须手动刷新。 数据每 1 天、3 天或 5 天会自动更新一次。数据无法手动刷新。
Gemini Enterprise 会根据 BigQuery 中的一个创建一个数据存储区。 Gemini Enterprise 会为每个指定的表创建一个 BigQuery 数据集数据连接器和一个数据存储区(称为实体数据存储区)。对于每个数据连接器,表必须具有相同的数据类型(例如结构化),并且位于同一 BigQuery 数据集中。
您可以先从一个表提取数据,然后再从另一个来源或 BigQuery 表提取更多数据,从而将多个表中的数据合并到一个数据存储区中。 由于不支持手动导入数据,因此实体数据存储区中的数据只能来自一个 BigQuery 表。
支持数据源访问权限控制。 不支持数据源访问权限控制。导入的数据可以包含访问控制,但这些控制不会受到尊重。
您可以使用Google Cloud 控制台或 API 创建数据存储区。 您必须使用控制台创建数据连接器及其实体数据存储区。
兼容 CMEK。 兼容 CMEK。

从 BigQuery 导入一次

如需从 BigQuery 表中注入数据,请按照以下步骤使用 Google Cloud 控制台或 API 创建数据存储区并注入数据。

在导入数据之前,请查看准备数据以便提取

控制台

如需使用 Google Cloud 控制台从 BigQuery 注入数据,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。

    Gemini Enterprise

  2. 前往数据存储区页面。

  3. 点击创建数据存储区

  4. 选择数据源页面上,选择 BigQuery

  5. 选择要导入的数据类型

  6. 点击一次性

  7. BigQuery 路径字段中,点击浏览,选择您已准备好用于提取的表,然后点击选择。 或者,您也可以直接在 BigQuery 路径字段中输入表位置。

  8. 点击继续

  9. 如果您要一次性导入结构化数据,请执行以下操作:

    1. 将字段映射到关键属性。

    2. 如果架构中缺少重要字段,请使用添加新字段来添加这些字段。

      如需了解详情,请参阅自动检测和修改简介

    3. 点击继续

  10. 为数据存储区选择一个区域。

  11. 为数据存储区输入名称。

  12. 点击创建

  13. 如需查看数据注入状态,请前往数据存储区页面,然后点击数据存储区名称,在其数据页面上查看相关详情。当活动标签页上的“状态”列从正在进行更改为导入已完成时,表示注入已完成。

    注入过程可能需要几分钟到几小时才能完成,具体取决于数据的大小。

REST

如需使用命令行创建数据存储区并从 BigQuery 导入数据,请按以下步骤操作。

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

    替换以下内容:

    • PROJECT_ID:您的项目的 ID。
    • DATA_STORE_ID:您要创建的数据存储区的 ID。此 ID 只能包含小写字母、数字、下划线和连字符。
    • DATA_STORE_DISPLAY_NAME:要创建的数据存储区的显示名称。

    可选:如果您要上传非结构化数据,并希望配置文档解析或为 RAG 启用文档分块,请指定 documentProcessingConfig 对象,并将其包含在数据存储区创建请求中。如果您要提取扫描的 PDF,建议您为 PDF 配置 OCR 解析器。如需了解如何配置解析或分块选项,请参阅解析和分块文档

  2. 从 BigQuery 导入数据。

    如果您定义了架构,请确保数据符合该架构。

    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 '{
      "bigquerySource": {
        "projectId": "PROJECT_ID",
        "datasetId":"DATASET_ID",
        "tableId": "TABLE_ID",
        "dataSchema": "DATA_SCHEMA",
        "aclEnabled": "BOOLEAN"
      },
      "reconciliationMode": "RECONCILIATION_MODE",
      "autoGenerateIds": "AUTO_GENERATE_IDS",
      "idField": "ID_FIELD",
      "errorConfig": {
        "gcsPrefix": "ERROR_DIRECTORY"
      }
    }'
    

    替换以下内容:

    • PROJECT_ID:您的项目的 ID。
    • DATA_STORE_ID:数据存储区的 ID。
    • DATASET_ID:BigQuery 数据集的 ID。
    • TABLE_ID:BigQuery 表的 ID。
      • 如果 BigQuery 表不在 PROJECT_ID 下,您需要为服务账号 service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com 授予 BigQuery 表的“BigQuery Data Viewer”权限。例如,如果您要将 BigQuery 表从源项目“123”导入到目标项目“456”,请为项目“123”下的 BigQuery 表授予 service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com 权限。
    • DATA_SCHEMA:可选。值为 documentcustom。默认值为 document
      • document:您使用的 BigQuery 表必须符合准备要提取的数据中提供的默认 BigQuery 架构。您可以自行定义每个文档的 ID,同时将所有数据封装在 jsonData 字符串中。
      • custom:系统接受任何 BigQuery 表架构,并且 Gemini Enterprise 会自动为导入的每个文档生成 ID。
    • ERROR_DIRECTORY:可选。存放与导入有关的错误信息的 Cloud Storage 目录,例如 gs://<your-gcs-bucket>/directory/import_errors。Google 建议将此字段留空,以便 Gemini Enterprise 自动创建临时目录。
    • RECONCILIATION_MODE:可选。值为 FULLINCREMENTAL。默认值为 INCREMENTAL。 指定 INCREMENTAL 会导致从 BigQuery 到数据存储区的增量数据刷新。此方法会执行 upsert 操作,即添加新文档,并将现有文档替换为具有相同 ID 的更新文档。指定 FULL 会导致数据存储区中的文档完全重新基准化。换句话说,系统会将新文档和更新后的文档添加到数据存储区,并从数据存储区中移除不在 BigQuery 中的文档。如果您想自动删除不再需要的文档,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。对于 BigQuery 源文件,idField 表示 BigQuery 表中包含文档 ID 的列的名称。

      仅在以下情况下指定 idField:(1) bigquerySource.dataSchema 设置为 custom,且 (2) auto_generate_ids 设置为 false 或未指定。否则,系统将返回 INVALID_ARGUMENT 错误。

      BigQuery 列名称的值必须为字符串类型,长度必须介于 1 到 63 个字符之间,并且必须符合 RFC-1034 的要求。否则,文档将无法导入。

通过定期同步连接到 BigQuery

在导入数据之前,请查看准备数据以便提取

以下过程介绍了如何创建定期从 BigQuery 数据集同步数据的 BigQuery 数据存储区。如果您的数据集包含多个表,您可以将这些表添加到正在创建的 BigQuery 数据存储区中。您添加的每个表格都称为实体。 Gemini Enterprise 会为每个实体创建单独的数据存储区。因此,当您使用 Google Cloud 控制台创建数据存储区时,您会获得一个数据存储区集合,其中包含这些注入的数据实体。

数据集中的数据会定期同步到实体数据存储区。您可以指定每天、每三天或每五天同步一次。

控制台

如需创建定期将数据从 BigQuery 数据集同步到 Gemini Enterprise 的数据存储区,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。

    Gemini Enterprise

  2. 在导航菜单中,点击数据存储区

  3. 点击创建数据存储区

  4. 来源页面上,选择 BigQuery

  5. 选择要导入的数据类型。

  6. 点击周期性

  7. 选择同步频率,即您希望 Gemini Enterprise 连接器与 BigQuery 数据集同步的频率。您日后可以更改频次。

  8. BigQuery 数据集路径字段中,点击浏览,然后选择包含您已准备好要提取的表的相应数据集。或者,您也可以直接在 BigQuery 路径字段中输入表位置。路径的格式为 projectname.datasetname

  9. 要同步的表字段中,点击浏览,然后选择包含您要用于数据存储区的数据的表。

  10. 如果数据集中还有其他要用于数据存储区的表,请点击添加表,然后指定这些表。

  11. 点击继续

  12. 为数据存储区选择一个区域,输入数据连接器的名称,然后点击创建

    您现在已创建数据连接器,该连接器会定期与 BigQuery 数据集同步数据。并且您已创建一个或多个实体数据存储区。数据存储区的名称与 BigQuery 表的名称相同。

  13. 如需查看数据注入状态,请前往数据存储区页面,然后点击数据连接器名称,在其数据页面上查看相关详情 > 数据注入活动标签页。当活动标签页上的“状态”列从正在进行更改为成功时,表示首次注入已完成。

    注入过程可能需要几分钟到几小时才能完成,具体取决于数据的大小。

首次设置数据源并导入数据后,数据存储区会按照您在设置期间选择的频率同步来自该来源的数据。 创建数据连接器大约一小时后,系统会进行首次同步。下一次同步会在大约 24 小时、72 小时或 120 小时后进行。

后续步骤

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

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