从 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”,则您需要授予 service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com 对项目“123”下 BigQuery 表的权限。
    • 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 小时后进行。

后续步骤

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

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