您可以通过以下两种方式从 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 注入数据,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。
前往数据存储区页面。
点击创建数据存储区。
在选择数据源页面上,选择 BigQuery。
选择要导入的数据类型。
点击一次性。
在 BigQuery 路径字段中,点击浏览,选择您已准备好用于提取的表,然后点击选择。 或者,您也可以直接在 BigQuery 路径字段中输入表位置。
点击继续。
如果您要一次性导入结构化数据,请执行以下操作:
将字段映射到关键属性。
如果架构中缺少重要字段,请使用添加新字段来添加这些字段。
如需了解详情,请参阅自动检测和修改简介。
点击继续。
为数据存储区选择一个区域。
为数据存储区输入名称。
点击创建。
如需查看数据注入状态,请前往数据存储区页面,然后点击数据存储区名称,在其数据页面上查看相关详情。当活动标签页上的“状态”列从正在进行更改为导入已完成时,表示注入已完成。
注入过程可能需要几分钟到几小时才能完成,具体取决于数据的大小。
REST
如需使用命令行创建数据存储区并从 BigQuery 导入数据,请按以下步骤操作。
创建数据存储区。
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 解析器。如需了解如何配置解析或分块选项,请参阅解析和分块文档。从 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.
授予 BigQuery 表的“BigQuery Data Viewer”权限。例如,如果您要将 BigQuery 表从源项目“123”导入到目标项目“456”,请为项目“123”下的 BigQuery 表授予service-456@gcp-sa-discoveryengine.
权限。
- 如果 BigQuery 表不在
DATA_SCHEMA
:可选。值为document
和custom
。默认值为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
:可选。值为FULL
和INCREMENTAL
。默认值为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 的数据存储区,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。
在导航菜单中,点击数据存储区。
点击创建数据存储区。
在来源页面上,选择 BigQuery。
选择要导入的数据类型。
点击周期性。
选择同步频率,即您希望 Gemini Enterprise 连接器与 BigQuery 数据集同步的频率。您日后可以更改频次。
在 BigQuery 数据集路径字段中,点击浏览,然后选择包含您已准备好要提取的表的相应数据集。或者,您也可以直接在 BigQuery 路径字段中输入表位置。路径的格式为
projectname.datasetname
。在要同步的表字段中,点击浏览,然后选择包含您要用于数据存储区的数据的表。
如果数据集中还有其他要用于数据存储区的表,请点击添加表,然后指定这些表。
点击继续。
为数据存储区选择一个区域,输入数据连接器的名称,然后点击创建。
您现在已创建数据连接器,该连接器会定期与 BigQuery 数据集同步数据。并且您已创建一个或多个实体数据存储区。数据存储区的名称与 BigQuery 表的名称相同。
如需查看数据注入状态,请前往数据存储区页面,然后点击数据连接器名称,在其数据页面上查看相关详情 > 数据注入活动标签页。当活动标签页上的“状态”列从正在进行更改为成功时,表示首次注入已完成。
注入过程可能需要几分钟到几小时才能完成,具体取决于数据的大小。
首次设置数据源并导入数据后,数据存储区会按照您在设置期间选择的频率同步来自该来源的数据。 创建数据连接器大约一小时后,系统会进行首次同步。下一次同步会在大约 24 小时、72 小时或 120 小时后进行。