您可以通过以下两种方式从 Cloud Storage 表创建数据存储区:
一次性提取:将数据从 Cloud Storage 文件夹或文件导入到数据存储区。除非您手动刷新数据,否则数据存储区中的数据不会发生变化。
定期提取:您可以从 Cloud Storage 文件夹或文件导入数据,并设置同步频率,以确定数据存储区从相应 Cloud Storage 位置更新最新数据的频率。
下表比较了将 Cloud Storage 数据导入 Gemini Enterprise 数据存储区的两种方式。
一次性注入 | 定期提取 |
---|---|
已正式发布 (GA)。 | 公开预览版。 |
数据必须手动刷新。 | 数据每 1 天、3 天或 5 天自动更新一次。数据无法手动刷新。 |
Gemini Enterprise 会从 Cloud Storage 中的一个文件夹或文件创建一个数据存储区。 | Gemini Enterprise 会创建一个数据连接器,并将指定的文件或文件夹的数据存储区(称为实体数据存储区)与其相关联。每个 Cloud Storage 数据连接器只能有一个实体数据存储区。 |
您可以先从一个 Cloud Storage 位置提取数据,然后再从另一个位置提取更多数据,从而将多个文件、文件夹和存储分区中的数据合并到一个数据存储区中。 | 由于不支持手动导入数据,因此实体数据存储区中的数据只能来自一个 Cloud Storage 文件或文件夹。 |
支持数据源访问权限控制。如需了解详情,请参阅数据源访问权限控制。 | 不支持数据源访问权限控制。导入的数据可以包含访问控制,但这些控制不会受到尊重。 |
您可以使用Google Cloud 控制台或 API 创建数据存储区。 | 您必须使用控制台创建数据连接器及其实体数据存储区。 |
兼容 CMEK。 | 兼容 CMEK。 |
从 Cloud Storage 导入一次
如需从 Cloud Storage 中注入数据,请按照以下步骤使用 Google Cloud 控制台或 API 创建数据存储区并注入数据。
在导入数据之前,请查看准备数据以便提取。
控制台
如需使用控制台从 Cloud Storage 存储桶中注入数据,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。
前往数据存储区页面。
点击创建数据存储区。
在选择数据源页面上,选择 Cloud Storage。
在选择您要导入的文件夹或文件部分,选择文件夹或文件。
点击浏览,然后选择您已准备好要提取的数据,再点击选择。 或者,直接在
gs://
字段中输入位置。选择要导入的数据类型。
点击继续。
如果您要一次性导入结构化数据,请执行以下操作:
将字段映射到关键属性。
如果架构中缺少重要字段,请使用添加新字段来添加这些字段。
如需了解详情,请参阅自动检测和修改简介。
点击继续。
为数据存储区选择一个区域。
为数据存储区输入名称。
可选:如果您选择了非结构化文档,则可以为文档选择解析和分块选项。如需比较解析器,请参阅解析文档。如需了解有关分块的信息,请参阅对 RAG 文档进行分块。
OCR 解析器和布局解析器可能会产生额外费用。
如需选择解析器,请展开文档处理选项,然后指定要使用的解析器选项。
点击创建。
如需查看数据注入状态,请前往数据存储区页面,然后点击数据存储区名称,在其数据页面上查看相关详情。当活动标签页上的“状态”列从正在进行更改为导入已完成时,表示注入已完成。
注入过程可能需要几分钟或几小时才能完成,具体取决于数据的大小。
REST
如需使用命令行创建数据存储区并从 Cloud Storage 中注入数据,请按以下步骤操作。
创建数据存储区。
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"], "contentConfig": "CONTENT_REQUIRED", }'
替换以下内容:
PROJECT_ID
:您的项目的 ID。DATA_STORE_ID
:您要创建的数据存储区的 ID。此 ID 只能包含小写字母、数字、下划线和连字符。DATA_STORE_DISPLAY_NAME
:要创建的数据存储区的显示名称。
可选:如需配置文档解析或为 RAG 启用文档分块,请指定
documentProcessingConfig
对象并将其包含在数据存储区创建请求中。如果您要提取扫描的 PDF,建议您为 PDF 配置 OCR 解析器。如需了解如何配置解析或分块选项,请参阅解析和分块文档。从 Cloud Storage 导入数据。
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 '{ "gcsSource": { "inputUris": ["INPUT_FILE_PATTERN_1", "INPUT_FILE_PATTERN_2"], "dataSchema": "DATA_SCHEMA", }, "reconciliationMode": "RECONCILIATION_MODE", "autoGenerateIds": "AUTO_GENERATE_IDS", "idField": "ID_FIELD", "errorConfig": { "gcsPrefix": "ERROR_DIRECTORY" } }'
替换以下内容:
PROJECT_ID
:您的项目的 ID。DATA_STORE_ID
:数据存储区的 ID。INPUT_FILE_PATTERN
:Cloud Storage 中包含文档的文件格式。对于结构化数据或包含元数据的非结构化数据,输入文件模式的一个示例是
gs://<your-gcs-bucket>/directory/object.json
,匹配一个或多个文件的模式的一个示例是gs://<your-gcs-bucket>/directory/*.json
。对于非结构化文档,一个示例是
gs://<your-gcs-bucket>/directory/*.pdf
。与该模式匹配的每个文件都会成为一个文档。如果
<your-gcs-bucket>
不在PROJECT_ID
下,您需要为服务账号授予 Cloud Storage 存储桶的service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com
“Storage Object Viewer”权限。例如,如果您要将 Cloud Storage 存储桶从源项目“123”导入到目标项目“456”,请授予项目“123”下 Cloud Storage 存储桶的service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com
权限。DATA_SCHEMA
:可选。值包括document
、custom
、csv
和content
。默认值为document
。document
:上传包含非结构化文档元数据的非结构化数据。文件中的每一行都必须遵循以下格式之一。您可以定义每个文档的 ID:{ "id": "<your-id>", "jsonData": "<JSON string>", "content": { "mimeType": "<application/pdf or text/html>", "uri": "gs://<your-gcs-bucket>/directory/filename.pdf" } }
{ "id": "<your-id>", "structData": <JSON object>, "content": { "mimeType": "<application/pdf or text/html>", "uri": "gs://<your-gcs-bucket>/directory/filename.pdf" } }
custom
:上传结构化文档的 JSON。数据是根据架构整理的。您可以指定架构,否则系统会自动检测架构。您可以将文档的 JSON 字符串以一致的格式直接放在每一行中,Gemini Enterprise 会自动为导入的每个文档生成 ID。content
:上传非结构化文档(PDF、HTML、DOC、TXT、PPTX)。每个文档的 ID 都会自动生成,即 SHA256(GCS_URI) 的前 128 位(以十六进制字符串形式编码)。您可以指定多个输入文件格式,但匹配的文件不得超过 10 万个。csv
:在 CSV 文件中添加标题行,并将每个标题映射到文档字段。使用inputUris
字段指定 CSV 文件的路径。
ERROR_DIRECTORY
:可选。存放与导入有关的错误信息的 Cloud Storage 目录,例如gs://<your-gcs-bucket>/directory/import_errors
。Google 建议将此字段留空,以便 Gemini Enterprise 自动创建临时目录。RECONCILIATION_MODE
:可选。值为FULL
和INCREMENTAL
。默认值为INCREMENTAL
。 指定INCREMENTAL
会导致从 Cloud Storage 到数据存储区的增量数据刷新。此方法会执行更新插入操作,即添加新文档,并将现有文档替换为具有相同 ID 的更新文档。指定FULL
会导致数据存储区中的文档完全重新定位。换句话说,系统会将新文档和更新后的文档添加到您的数据存储区,并从您的数据存储区中移除 Cloud Storage 中不存在的文档。如果您想自动删除不再需要的文档,FULL
模式会很有帮助。AUTO_GENERATE_IDS
:可选。指定是否自动生成文档 ID。如果设置为true
,则根据载荷的哈希值生成文档 ID。请注意,生成的文档 ID 在多次导入时可能不会保持一致。如果您在多次导入时自动生成 ID,Google 强烈建议您将reconciliationMode
设置为FULL
,以保持文档 ID 的一致性。仅当
gcsSource.dataSchema
设置为custom
或csv
时,才指定autoGenerateIds
。否则,系统将返回INVALID_ARGUMENT
错误。如果您未指定autoGenerateIds
或将其设置为false
,则必须指定idField
。否则,文档将无法导入。ID_FIELD
:可选。指定哪些字段是文档 ID。对于 Cloud Storage 源文档,idField
用于指定 JSON 字段中作为文档 ID 的名称。例如,如果{"my_id":"some_uuid"}
是某个文档中的文档 ID 字段,请指定"idField":"my_id"
。这会将所有名称为"my_id"
的 JSON 字段标识为文档 ID。仅在以下情况下指定此字段:(1)
gcsSource.dataSchema
设置为custom
或csv
,且 (2)auto_generate_ids
设置为false
或未指定。否则,系统将返回INVALID_ARGUMENT
错误。请注意,
id_field
指定的 JSON 字段名称必须为字符串类型,长度必须介于 1 到 63 个字符之间,并且必须符合 RFC-1034。否则,文档将无法导入。
通过定期同步连接到 Cloud Storage
在导入数据之前,请查看准备数据以便提取。
以下步骤介绍了如何创建将 Cloud Storage 位置与 Gemini Enterprise 数据连接器相关联的数据连接器,以及如何为要创建的数据存储区指定该位置中的文件夹或文件。数据连接器的子数据存储区称为实体数据存储区。
数据会定期同步到实体数据存储区。您可以指定每天、每三天或每五天同步一次。
控制台
在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。
前往数据存储区页面。
点击创建数据存储区。
在来源页面上,选择 Cloud Storage。
选择要导入的数据类型。
点击周期性。
选择同步频率,即您希望 Gemini Enterprise 连接器与 Cloud Storage 位置同步的频率。您日后可以更改频次。
在选择您要导入的文件夹或文件部分,选择文件夹或文件。
点击浏览,然后选择您已准备好要提取的数据,再点击选择。 或者,直接在
gs://
字段中输入位置。点击继续。
为您的数据连接器选择一个区域。
为数据连接器输入名称。
可选:如果您选择了非结构化文档,则可以为文档选择解析和分块选项。如需比较解析器,请参阅解析文档。如需了解有关分块的信息,请参阅对 RAG 文档进行分块。
OCR 解析器和布局解析器可能会产生额外费用。
如需选择解析器,请展开文档处理选项,然后指定要使用的解析器选项。
点击创建。
您现在已创建数据连接器,该连接器会定期与 Cloud Storage 位置同步数据。您还创建了一个名为
gcs_store
的实体数据存储区。如需查看数据注入状态,请前往数据存储区页面,然后点击数据连接器名称,在其数据页面查看相关详情
数据注入活动标签页。当数据注入活动标签页上的“状态”列从正在进行更改为成功时,表示首次注入已完成。
注入过程可能需要几分钟到几小时才能完成,具体取决于数据的大小。
首次设置数据源并导入数据后,系统会按照您在设置期间选择的频率同步来自该来源的数据。创建数据连接器大约一小时后,系统会进行首次同步。下一次同步会在大约 24 小时、72 小时或 120 小时后进行。