如需创建数据存储区并注入数据以供搜索,请前往您计划使用的来源对应的部分:
- 使用网站内容创建数据存储区
- 从 BigQuery 导入
- 从 Cloud Storage 导入
- 从 Google 云端硬盘同步
- 从 Gmail 同步(公开预览版)
- 从 Google 协作平台同步(公开预览版)
- 从 Google 日历同步(公开预览版)
- 从 Google 群组同步(公开预览版)
- 同步人物数据(公开预览版)
- 从 Cloud SQL 导入
- 从 Spanner 导入(公开预览版)
- 从 Firestore 导入
- 从 Bigtable 导入(公开预览版)
- 从 AlloyDB for PostgreSQL 导入(公开预览版)
- 使用 API 上传结构化 JSON 数据
- 使用 Terraform 创建数据存储区
如需改为从第三方数据源同步数据,请参阅连接第三方数据源。
限制
如果您有 CMEK 组织政策,则必须使用 API(而非 Google Cloud 控制台)创建新的数据存储空间。如果您启用了 CMEK 组织政策,则无法使用 Google Cloud 控制台创建新的数据存储空间。如需详细了解 Vertex AI Search 对 CMEK 的支持,请参阅客户管理的加密密钥。
使用网站内容创建数据存储区
请按照以下步骤创建数据存储区并为网站编制索引。
若要在创建网站数据存储区后使用该存储区,您必须将其附加到已启用企业版功能的应用。您可以在创建应用时为其启用企业版。这会产生额外费用。请参阅创建搜索应用和高级功能简介。
控制台
如需使用 Google Cloud 控制台创建数据存储区并编入网站索引,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Agent Builder 页面。
在导航菜单中,点击数据存储区。
点击创建数据存储区。
在来源页面上,选择网站内容。
选择是否为此数据存储区开启高级网站索引编制。 此选项日后无法开启或关闭。
高级网站索引编制功能提供搜索摘要、搜索跟进和提取式回答等其他功能。使用高级网站索引编制功能会产生额外费用,并且要求您验证要编入索引的任何网站的域名所有权。如需了解详情,请参阅高级网站编入索引和价格。
在要包括的网站字段中,输入与您要包含在数据存储区中的网站匹配的网址模式。请在每行输入一个网址格式,不加英文逗号分隔符。例如
www.example.com/docs/*
。可选:在要排除的网站字段中,输入要从数据存储区中排除的网址模式。
如需查看您可以包含或排除的网址格式的数量,请参阅网站数据。
点击继续。
为数据存储区选择位置。必须启用高级网站索引编制功能,才能选择位置。
为数据存储区输入名称。
点击创建。Vertex AI Search 会创建数据存储区,并在数据存储区页面上显示您的数据存储区。
如需查看数据存储区相关信息,请点击名称列中的数据存储区名称。系统随即会显示您的数据存储区页面。
- 如果您已开启高级网站索引编制,系统会显示一条警告,提示您验证数据存储区中的网域。
- 如果您配额不足(您指定的网站中的网页数量超出了项目的“每个项目的文档数量”配额),系统会显示一条额外的警告,提示您升级配额。
如需验证数据存储区中网址模式的网域,请按照验证网站网域页面上的说明操作。
如需升级配额,请按以下步骤操作:
- 点击升级配额。系统会显示 Google Cloud 控制台的 IAM 和管理页面。
- 请按照 Google Cloud 文档中的申请更高配额限制部分中的说明操作。要增加的配额是 Discovery Engine API 服务中的文档数量。
- 提交提高配额上限的申请后,返回 Agent Builder 页面,然后点击导航菜单中的数据存储区。
- 点击名称列中的数据存储区的名称。状态列表示系统正在为超出配额的网站编制索引。如果网址的状态列显示为已编入索引,则该网址或网址格式可以使用网站的“高级索引编制”功能。
如需了解详情,请参阅“配额和限制”页面中的网页索引编制配额。
Python
如需了解详情,请参阅 Vertex AI Agent Builder Python API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入网站
后续步骤
从 BigQuery 导入
您可以通过以下两种方式从 BigQuery 表创建数据存储区:
一次性提取:您将 BigQuery 表中的数据导入数据存储区。除非您手动刷新数据,否则数据存储区中的数据不会发生变化。
定期提取:您可以从一个或多个 BigQuery 表导入数据,并设置同步频率,以确定数据存储区使用 BigQuery 数据集中的最新数据进行更新的频率。
下表比较了将 BigQuery 数据导入 Vertex AI Search 数据存储区的两种方法。
一次性提取 | 定期提取 |
---|---|
已正式发布 (GA)。 | 公开预览版。 |
您必须手动刷新数据。 | 数据每 1 天、3 天或 5 天自动更新一次。无法手动刷新数据。 |
Vertex AI Search 会根据 BigQuery 中的某个表创建单个数据存储区。 | Vertex AI Search 会为 BigQuery 数据集创建一个数据连接器,并为指定的每个表创建一个数据存储区(称为实体数据存储区)。对于每个数据连接器,表必须具有相同的数据类型(例如结构化数据),并且位于同一 BigQuery 数据集中。 |
您可以先提取一个表中的数据,然后再提取其他来源或 BigQuery 表中的数据,以便将来自多个表的数据合并到一个数据存储区中。 | 由于不支持手动导入数据,因此实体数据存储区中的数据只能来自一个 BigQuery 表。 |
支持数据源访问权限控制。 | 不支持数据源访问权限控制。导入的数据可以包含访问控制,但系统不会遵循这些控制。 |
您可以使用 Google Cloud 控制台或 API 创建数据存储区。 | 您必须使用控制台创建数据连接器及其实体数据存储区。 |
符合 CMEK 要求。 | 不符合 CMEK 要求。 |
从 BigQuery 导入一次
如需从 BigQuery 表中注入数据,请按照以下步骤使用 Google Cloud 控制台或 API 创建数据存储区并注入数据。
在导入数据之前,请参阅准备数据以便提取。
控制台
如需使用 Google Cloud 控制台从 BigQuery 注入数据,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Agent Builder 页面。
前往数据存储区页面。
点击新建数据存储区。
在来源页面上,选择 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
:您的 Google Cloud 项目的 ID。DATA_STORE_ID
:您要创建的 Vertex AI Search 数据存储区的 ID。此 ID 只能包含小写字母、数字、下划线和连字符。DATA_STORE_DISPLAY_NAME
:您要创建的 Vertex AI Search 数据存储区的显示名称。
可选:如果您要上传非结构化数据,并且想要配置文档解析或为 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
:您的 Google Cloud 项目的 ID。DATA_STORE_ID
:Vertex AI Search 数据存储区的 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
权限。
- 如果 BigQuery 表不在 PROJECT_ID 下,您需要向服务账号
DATA_SCHEMA
:可选。值为document
和custom
。默认值为document
。document
:您使用的 BigQuery 表必须符合准备数据以供提取中提供的默认 BigQuery 架构。您可以自行定义每个文档的 ID,同时将所有数据封装在 jsonData 字符串中。custom
:接受任何 BigQuery 表架构,Vertex AI Search 会自动为导入的每份文档生成 ID。
ERROR_DIRECTORY
:可选。存放与导入有关的错误信息的 Cloud Storage 目录,例如gs://<your-gcs-bucket>/directory/import_errors
。Google 建议将此字段留空,以便 Vertex AI Search 自动创建临时目录。RECONCILIATION_MODE
:可选。值为FULL
和INCREMENTAL
。默认值为INCREMENTAL
。 指定INCREMENTAL
会导致从 BigQuery 到数据存储区的数据增量刷新。这会执行更新/插入操作,该操作会添加新文档,并将现有文档替换为具有相同 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 的要求。否则,文档将无法导入。
C#
如需了解详情,请参阅 Vertex AI Agent Builder C# API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入文档
Go
如需了解详情,请参阅 Vertex AI Agent Builder Go API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入文档
Java
如需了解详情,请参阅 Vertex AI Agent Builder Java API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入文档
Node.js
如需了解详情,请参阅 Vertex AI Agent Builder Node.js API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入文档
Python
如需了解详情,请参阅 Vertex AI Agent Builder Python API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入文档
Ruby
如需了解详情,请参阅 Vertex AI Agent Builder Ruby API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入文档
通过定期同步连接到 BigQuery
在导入数据之前,请参阅准备数据以便提取。
以下步骤介绍了如何创建用于将 BigQuery 数据集与 Vertex AI Search 数据连接器相关联的数据连接器,以及如何为要创建的每个数据存储区在数据集中指定表。数据连接器的子数据存储区称为实体数据存储区。
数据集中的数据会定期同步到实体数据存储区。您可以指定每天、每三天或每五天同步一次。
控制台
如需使用 Google Cloud 控制台创建一个连接器,以便定期将 BigQuery 数据集中的数据同步到 Vertex AI Search,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Agent Builder 页面。
在导航菜单中,点击数据存储区。
点击创建数据存储区。
在来源页面上,选择 BigQuery。
选择要导入的数据类型。
点击周期性。
选择同步频率,即 Vertex AI Search 连接器与 BigQuery 数据集同步的频率。您可以稍后更改频次。
在 BigQuery 数据集路径字段中,点击浏览,选择包含您准备好提取的表的数据集。或者,您也可以直接在 BigQuery 路径字段中输入表位置。路径的格式为
projectname.datasetname
。在要同步的表字段中,点击浏览,然后选择包含要存储到数据存储区中的数据的表。
如果数据集中还有其他要用于数据存储区的表,请点击添加表,然后指定这些表。
点击继续。
为数据存储区选择一个区域,输入数据连接器的名称,然后点击创建。
现在,您已创建数据连接器,该连接器会定期将数据与 BigQuery 数据集同步。并且您已创建一个或多个实体数据存储区。数据存储区与 BigQuery 表具有相同的名称。
如需查看数据注入的状态,请前往数据存储区页面,然后点击数据连接器名称,在其数据页面 > 数据提取活动标签页中查看其详细信息。当活动标签页上的状态列从进行中更改为成功时,第一次提取操作即告完成。
提取过程可能需要几分钟到几小时才能完成,具体取决于数据的大小。
您首次设置数据源并导入数据后,数据存储区会按照您在设置期间选择的频率同步来自该数据源的数据。在创建数据连接器大约一小时后,系统会进行首次同步。然后,系统会在大约 24 小时、72 小时或 120 小时后进行下一次同步。
后续步骤
从 Cloud Storage 导入
您可以通过以下两种方式从 Cloud Storage 表创建数据存储区:
一次性提取:您将数据从 Cloud Storage 文件夹或文件导入数据存储区。除非您手动刷新数据,否则数据存储区中的数据不会发生变化。
定期提取:您从 Cloud Storage 文件夹或文件导入数据,并设置同步频率,以确定数据存储区使用来自该 Cloud Storage 位置的最新数据进行更新的频率。
下表比较了将 Cloud Storage 数据导入 Vertex AI Search 数据存储区的两种方式。
一次性提取 | 定期提取 |
---|---|
已正式发布 (GA)。 | 公开预览版。 |
您必须手动刷新数据。 | 数据每 1 天、3 天或 5 天自动更新一次。无法手动刷新数据。 |
Vertex AI Search 会根据 Cloud Storage 中的某个文件夹或文件创建单个数据存储区。 | Vertex AI Search 会创建一个数据连接器,并为指定的文件或文件夹将数据存储区(称为实体数据存储区)与其相关联。每个 Cloud Storage 数据连接器可以有一个实体数据存储区。 |
您可以先从一个 Cloud Storage 位置提取数据,然后再从另一个位置提取更多数据,以便将来自多个文件、文件夹和存储分区的数据合并到一个数据存储区中。 | 由于不支持手动导入数据,实体数据存储区中的数据只能来自一个 Cloud Storage 文件或文件夹。 |
支持数据源访问权限控制。如需了解详情,请参阅数据源访问权限控制。 | 不支持数据源访问权限控制。导入的数据可以包含访问控制,但系统不会遵循这些控制。 |
您可以使用 Google Cloud 控制台或 API 创建数据存储区。 | 您必须使用控制台创建数据连接器及其实体数据存储区。 |
符合 CMEK 要求。 | 不符合 CMEK 要求。 |
从 Cloud Storage 一次性导入
如需从 Cloud Storage 注入数据,请按照以下步骤使用 Google Cloud 控制台或 API 创建数据存储区并注入数据。
在导入数据之前,请参阅准备数据以便提取。
控制台
如需使用控制台从 Cloud Storage 存储桶注入数据,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Agent Builder 页面。
前往数据存储区页面。
点击新建数据存储区。
在来源页面上,选择 Cloud Storage。
在选择要导入的文件夹或文件部分,选择文件夹或文件。
点击浏览,选择您准备好提取的数据,然后点击选择。或者,直接在
gs://
字段中输入位置。选择要导入的数据类型。
点击继续。
如果您要一次性导入结构化数据,请执行以下操作:
将字段映射到关键属性。
如果架构中缺少重要字段,请使用添加新字段进行添加。
如需了解详情,请参阅自动检测和修改简介。
点击继续。
为您的数据存储区选择一个区域。
为您的数据存储区选择一个区域。
为数据存储区输入名称。
可选:如果您选择了非结构化文档,则可以为文档选择解析和分块选项。如需比较解析器,请参阅解析文档。如需了解分块,请参阅 RAG 的分块文档。
OCR 解析器和布局解析器可能会产生额外费用。请参阅文档 AI 功能价格。
如需选择解析器,请展开文档处理选项,然后指定要使用的解析器选项。
点击创建。
如需查看数据注入的状态,请前往数据存储区页面,然后点击数据存储区名称,在其数据页面上查看相关详细信息。当活动标签页上的状态列从进行中更改为导入已完成时,提取操作即告完成。
提取过程可能需要几分钟到几小时才能完成,具体取决于数据的大小。
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
:您的 Google Cloud 项目的 ID。DATA_STORE_ID
:您要创建的 Vertex AI Search 数据存储区的 ID。此 ID 只能包含小写字母、数字、下划线和连字符。DATA_STORE_DISPLAY_NAME
:您要创建的 Vertex AI Search 数据存储区的显示名称。
可选:如需配置文档解析或为 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
:您的 Google Cloud 项目的 ID。DATA_STORE_ID
:Vertex AI Search 数据存储区的 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,您需要向服务账号service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com
授予对 Cloud Storage 存储桶的“Storage Object Viewer”权限。例如,如果您要将 Cloud Storage 存储桶从源项目“123”导入目标项目“456”,请向service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com
授予对项目“123”下的 Cloud Storage 存储桶的权限。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 字符串以一致的格式直接放入每行中,Vertex AI Search 会自动为导入的每份文档生成 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 建议将此字段留空,以便 Vertex AI Search 自动创建临时目录。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
错误。请注意,Cloud Storage JSON 字段的值必须为字符串类型,必须介于 1 到 63 个字符之间,并且必须符合 RFC-1034。否则,文档将无法导入。
请注意,
id_field
指定的 JSON 字段名称必须为字符串类型,长度必须介于 1 到 63 个字符之间,并且必须符合 RFC-1034。否则,文档将无法导入。
C#
如需了解详情,请参阅 Vertex AI Agent Builder C# API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入文档
Go
如需了解详情,请参阅 Vertex AI Agent Builder Go API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入文档
Java
如需了解详情,请参阅 Vertex AI Agent Builder Java API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入文档
Node.js
如需了解详情,请参阅 Vertex AI Agent Builder Node.js API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入文档
Python
如需了解详情,请参阅 Vertex AI Agent Builder Python API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入文档
Ruby
如需了解详情,请参阅 Vertex AI Agent Builder Ruby API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入文档
连接到 Cloud Storage 并定期同步
在导入数据之前,请参阅准备数据以便提取。
以下步骤介绍了如何创建用于将 Cloud Storage 位置与 Vertex AI Search 数据连接器相关联的数据连接器,以及如何为要创建的数据存储区在该位置指定文件夹或文件。数据连接器的子数据存储区称为实体数据存储区。
数据会定期同步到实体数据存储区。您可以指定每天、每三天或每五天同步一次。
控制台
在 Google Cloud 控制台中,前往 Agent Builder 页面。
前往数据存储区页面。
点击创建数据存储区。
在来源页面上,选择 Cloud Storage。
选择要导入的数据类型。
点击周期性。
选择同步频率,即 Vertex AI Search Connector 与 Cloud Storage 位置同步的频率。您可以稍后更改频次。
在选择要导入的文件夹或文件部分,选择文件夹或文件。
点击浏览,选择您准备好提取的数据,然后点击选择。或者,直接在
gs://
字段中输入位置。点击继续。
为数据连接器选择一个区域。
为数据连接器输入名称。
可选:如果您选择了非结构化文档,则可以为文档选择解析和分块选项。如需比较解析器,请参阅解析文档。如需了解分块,请参阅 RAG 的分块文档。
OCR 解析器和布局解析器可能会产生额外费用。请参阅文档 AI 功能价格。
如需选择解析器,请展开文档处理选项,然后指定要使用的解析器选项。
点击创建。
现在,您已创建数据连接器,该连接器会定期将数据与 Cloud Storage 位置同步。您还创建了一个名为
gcs_store
的实体数据存储区。如需查看数据提取状态,请前往数据存储区页面,然后点击数据连接器名称,在其数据页面上查看相关详细信息
数据注入活动标签页。当数据提取活动标签页上的状态列从进行中更改为成功时,第一次提取即告完成。
提取过程可能需要几分钟到几小时才能完成,具体取决于数据的大小。
首次设置数据源并导入数据后,系统会按照您在设置期间选择的频率从该数据源同步数据。在创建数据连接器大约一小时后,系统会进行首次同步。然后,系统会在大约 24 小时、72 小时或 120 小时后进行下一次同步。
后续步骤
连接到 Google 云端硬盘
如需搜索 Google 云端硬盘中的数据,请按照以下步骤使用 Google Cloud 控制台创建连接器。
准备工作:
您必须使用您要关联的 Google 云端硬盘实例所用的账号登录 Google Cloud 控制台。Vertex AI Search 会使用您的 Google Workspace 客户 ID 连接到 Google 云端硬盘。
为 Google 云端硬盘设置访问权限控制。如需了解如何设置访问权限控制,请参阅使用数据源访问权限控制。
Google 云端硬盘高级搜索功能目前为非公开预览版。若要将搜索摘要和跟进搜索与 Google 云端硬盘数据存储区搭配使用,必须先启用此功能。如需使用此功能,请改为按照使用高级云端硬盘索引中的步骤操作。
控制台
如需使用控制台使 Google 云端硬盘数据可搜索,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Agent Builder 页面。
前往数据存储区页面。
点击新建数据存储区。
在来源页面上,选择 Google 云端硬盘。
为您的数据存储区选择一个区域。
为数据存储区输入名称。 。点击创建。
使用云端硬盘高级索引编制功能(不公开预览版)
云端硬盘高级索引编制目前为非公开预览版。
如果您打算将 Google 云端硬盘与搜索摘要和搜索跟进功能搭配使用,请按照以下步骤操作。
准备工作:
- 您必须是 Google Workspace 超级用户,才能启用高级云端硬盘索引。这是因为,借助高级云端硬盘索引编制功能,Vertex AI Search 会为 Google 云端硬盘数据编制索引。
- 您必须被添加到许可名单中,才能使用此功能。
控制台
如需使用控制台创建具有高级 Google 云端硬盘索引的 Google 云端硬盘数据存储区,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Agent Builder 页面。
前往数据存储区页面。
点击新建数据存储区。
在来源页面上,选择 Google 云端硬盘。
选择云端硬盘高级索引编制。
输入您的 Google Workspace 电子邮件地址。
在设置全网域授权部分,查看说明并记下该部分第 4 步中提供的服务账号客户端 ID。
设置全网域授权:
- 前往 Google Workspace 管理控制台的全网域授权页面,然后使用您的超级用户账号登录。
- 点击新增。
- 输入您记下的服务账号客户端 ID。(此 ID 在 Agent Builder 控制台的设置全网域授权部分中的说明中提供。)
输入以下 OAuth 范围。
https://www.googleapis.com/auth/drive.readonly, https://www.googleapis.com/auth/admin.directory.user.readonly, https://www.googleapis.com/auth/admin.directory.group.readonly, https://www.googleapis.com/auth/admin.directory.domain.readonly, https://www.googleapis.com/auth/admin.reports.audit.readonly
点击授权。
在 Agent Builder 控制台中,点击继续。
为您的数据存储区选择一个区域。
为数据存储区输入名称。
点击创建。提取过程可能需要几分钟到几小时才能完成,具体取决于数据的大小。请至少等待一小时,然后再使用数据存储区进行搜索。
后续步骤
关联 Gmail
如需搜索 Gmail 中的数据,请按照以下步骤使用 Google Cloud 控制台创建数据存储区并注入数据。
准备工作:
您必须使用您要关联的 Google Workspace 实例所用的账号登录 Google Cloud 控制台。Vertex AI Search 会使用您的 Google Workspace 客户 ID 连接到 Gmail。
为 Gmail 设置访问权限控制。如需了解如何设置访问权限控制,请参阅使用数据源访问权限控制。
控制台
如需使用控制台使 Gmail 数据可搜索,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Agent Builder 页面。
前往数据存储区页面。
点击新建数据存储区。
在来源页面上,选择 Google Gmail。
为您的数据存储区选择一个区域。
为数据存储区输入名称。
点击创建。
后续步骤
关联到 Google 协作平台
如需搜索 Google 网站中的数据,请按照以下步骤使用 Google Cloud 控制台创建连接器。
准备工作:
您必须使用您要关联的 Google Workspace 实例所用的账号登录 Google Cloud 控制台。Vertex AI Search 会使用您的 Google Workspace 客户 ID 连接到 Google 网站。
为 Google 协作平台设置访问权限控制。如需了解如何设置访问权限控制,请参阅使用数据源访问权限控制。
控制台
如需使用该控制台使 Google 网站数据可搜索,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Agent Builder 页面。
前往数据存储区页面。
点击新建数据存储区。
在来源页面上,选择 Google 协作平台。
为您的数据存储区选择一个区域。
为数据存储区输入名称。
点击创建。
后续步骤
关联到 Google 日历
如需搜索 Google 日历中的数据,请按照以下步骤使用 Google Cloud 控制台创建连接器。
准备工作:
您必须使用您要关联的 Google Workspace 实例所用的账号登录 Google Cloud 控制台。Vertex AI Search 会使用您的 Google Workspace 客户 ID 连接到 Google 日历。
为 Google 日历设置访问权限控制。如需了解如何设置访问权限控制,请参阅使用数据源访问权限控制。
控制台
如需使用控制台使 Google 日历数据可搜索,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Agent Builder 页面。
前往数据存储区页面。
点击新建数据存储区。
在来源页面上,选择 Google 日历。
为您的数据存储区选择一个区域。
为数据存储区输入名称。
点击创建。
后续步骤
关联到 Google 群组
如需搜索 Google 群组中的数据,请按照以下步骤使用 Google Cloud 控制台创建连接器。
准备工作:
您必须使用您要关联的 Google Workspace 实例所用的账号登录 Google Cloud 控制台。Vertex AI Search 使用您的 Google Workspace 客户 ID 连接到 Google 群组。
为 Google 群组设置访问权限控制。如需了解如何设置访问权限控制,请参阅使用数据源访问权限控制。
控制台
如需使用控制台使 Google 群组数据可搜索,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Agent Builder 页面。
前往数据存储区页面。
点击新建数据存储区。
在来源页面上,选择 Google 群组。
为您的数据存储区选择一个区域。
为数据存储区输入名称。
点击创建。提取过程可能需要几分钟到几小时才能完成,具体取决于数据的大小。请至少等待一小时,然后再使用数据存储区进行搜索。
后续步骤
同步 Google Workspace 中的人员数据
您可以通过同步 Google Workspace 中的人员数据,为工作团队设置人员搜索功能。创建数据存储区后,这些数据会持续同步到 Vertex AI Search。
目录中的用户会以卡片的形式显示在搜索结果中,每个卡片都会显示相应用户的公开个人资料信息,例如姓名、电子邮件地址、所属组织和个人资料照片。您可以点击某个卡片,查看相应用户的详情页面。
前提条件
确定用户将使用哪个身份提供程序登录您的应用。如果使用第三方身份提供程序,管理员必须将您的身份提供程序与 Google Workspace 联合。联合计划和设置可能需要很长时间。如需了解详情,请参阅使用数据源访问权限控制。
Google Workspace 管理员必须启用 Google Workspace 数据的人员搜索功能。为此,请执行以下操作:
- 使用管理员账号登录 Google 管理控制台。
- 在管理控制台中,依次选择目录 > 目录设置。
- 开启联系人共享。
使用您计划关联 Google Workspace 的账号登录 Google Cloud 控制台。
按照连接身份提供方中的步骤连接到您的身份提供方,并指定 Google Identity 作为您的提供方。
如需了解 Google Workspace 目录,请参阅 Google Workspace 文档中的概览:设置和管理目录。
创建一个人物搜索数据存储区
控制台
如需使用控制台注入人物数据,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Agent Builder 页面。
前往数据存储区页面。
点击创建数据存储区。
在来源页面上,选择人脉搜索。
为您的数据存储区选择一个区域。
为数据存储区输入名称。
点击创建。同步可能需要几分钟到几小时,具体取决于数据的大小。
后续步骤
从 Cloud SQL 导入
如需从 Cloud SQL 注入数据,请按照以下步骤设置 Cloud SQL 访问权限、创建数据存储区并注入数据。
为 Cloud SQL 实例设置预演桶访问权限
从 Cloud SQL 提取数据时,系统会先将数据暂存到 Cloud Storage 存储桶。请按照以下步骤为 Cloud SQL 实例授予对 Cloud Storage 存储分区的访问权限。
在 Google Cloud 控制台中,转到 SQL 页面。
点击您计划从中导入数据的 Cloud SQL 实例。
复制实例服务账号的标识符,该标识符类似于电子邮件地址,例如
p9876-abcd33f@gcp-sa-cloud-sql.iam.gserviceaccount.com
。前往 IAM 和管理页面。
点击授予访问权限。
对于新的主账号,输入实例的服务账号标识符,然后选择 Cloud Storage > Storage Admin 角色。
点击保存。
下一步:
如果您的 Cloud SQL 数据与 Vertex AI Search 位于同一项目中:请参阅从 Cloud SQL 导入数据。
如果您的 Cloud SQL 数据与 Vertex AI Search 项目位于不同的项目中:请参阅从其他项目设置 Cloud SQL 访问权限。
从其他项目设置 Cloud SQL 访问权限
如需向 Vertex AI Search 授予对其他项目中的 Cloud SQL 数据的访问权限,请按以下步骤操作:
将以下
PROJECT_NUMBER
变量替换为您的 Vertex AI Search 项目编号,然后复制代码块中的内容。这是您的 Vertex AI Search 服务账号标识符:service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com`
前往 IAM 和管理页面。
在 IAM 和管理页面上切换到您的 Cloud SQL 项目,然后点击授予访问权限。
在新的主账号中,输入服务账号的标识符,然后选择 Cloud SQL > Cloud SQL Viewer 角色。
点击保存。
接下来,前往从 Cloud SQL 导入数据。
从 Cloud SQL 导入数据
控制台
如需使用控制台从 Cloud SQL 注入数据,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Agent Builder 页面。
前往数据存储区页面。
点击新建数据存储区。
在 Source(来源)页面上,选择 Cloud SQL。
指定您计划导入的数据的项目 ID、实例 ID、数据库 ID 和表 ID。
点击浏览,选择要将数据导出到的中间 Cloud Storage 位置,然后点击选择。或者,直接在
gs://
字段中输入位置。选择是否启用无服务器导出功能。无服务器导出会产生额外费用。如需了解无服务器导出,请参阅 Cloud SQL 文档中的最大限度地减少导出对性能的影响。
点击继续。
为您的数据存储区选择一个区域。
为数据存储区输入名称。
点击创建。
如需查看数据注入的状态,请前往数据存储区页面,然后点击数据存储区名称,在其数据页面上查看相关详细信息。当活动标签页上的状态列从进行中更改为导入已完成时,提取操作即告完成。
提取过程可能需要几分钟到几小时才能完成,具体取决于数据的大小。
REST
如需使用命令行创建数据存储区并从 Cloud SQL 注入数据,请按以下步骤操作:
创建数据存储区。
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 控制台中。
从 Cloud SQL 导入数据。
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 '{ "cloudSqlSource": { "projectId": "SQL_PROJECT_ID", "instanceId": "INSTANCE_ID", "databaseId": "DATABASE_ID", "tableId": "TABLE_ID", "gcsStagingDir": "STAGING_DIRECTORY" }, "reconciliationMode": "RECONCILIATION_MODE", "autoGenerateIds": "AUTO_GENERATE_IDS", "idField": "ID_FIELD", }'
替换以下内容:
PROJECT_ID
:您的 Vertex AI Search 项目的 ID。DATA_STORE_ID
:数据存储区的 ID。ID 只能包含小写字母、数字、下划线和连字符。SQL_PROJECT_ID
:您的 Cloud SQL 项目的 ID。INSTANCE_ID
:您的 Cloud SQL 实例的 ID。DATABASE_ID
:Cloud SQL 数据库的 ID。TABLE_ID
:Cloud SQL 表的 ID。STAGING_DIRECTORY
:可选。Cloud Storage 目录,例如gs://<your-gcs-bucket>/directory/import_errors
。RECONCILIATION_MODE
:可选。值为FULL
和INCREMENTAL
。默认值为INCREMENTAL
。 指定INCREMENTAL
会导致从 Cloud SQL 到数据存储区的数据增量刷新。这会执行更新/插入操作,该操作会添加新文档,并将现有文档替换为具有相同 ID 的更新文档。指定FULL
会导致数据存储区中的文档完全重新基准。换句话说,系统会将新文档和更新后的文档添加到数据存储区,并从数据存储区中移除 Cloud SQL 中不存在的文档。如果您想自动删除不再需要的文档,FULL
模式会很有用。
Python
如需了解详情,请参阅 Vertex AI Agent Builder Python API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入文档
后续步骤
从 Spanner 导入
如需从 Spanner 注入数据,请按照以下步骤使用 Google Cloud 控制台或 API 创建数据存储区并注入数据。
从其他项目设置 Spanner 访问权限
如果您的 Spanner 数据与 Vertex AI Search 位于同一项目中,请跳至从 Spanner 导入数据。
如需向 Vertex AI Search 授予对其他项目中的 Spanner 数据的访问权限,请按以下步骤操作:
将以下
PROJECT_NUMBER
变量替换为您的 Vertex AI Search 项目编号,然后复制此代码块的内容。这是您的 Vertex AI Search 服务账号标识符:service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
前往 IAM 和管理页面。
在 IAM 和管理页面上切换到您的 Spanner 项目,然后点击授予访问权限。
在新的主账号部分,输入服务账号的标识符,然后选择以下选项之一:
- 如果您在导入过程中不会使用数据提升功能,请选择 Cloud Spanner > Cloud Spanner Database Reader 角色。
- 如果您计划在导入期间使用数据提升功能,请选择 Cloud Spanner > Cloud Spanner Database Admin 角色,或具有 Cloud Spanner Database Reader 和 spanner.databases.useDataBoost 权限的自定义角色。如需了解 Data Boost,请参阅 Spanner 文档中的 Data Boost 概览。
点击保存。
接下来,前往从 Spanner 导入数据。
从 Spanner 导入数据
控制台
如需使用控制台从 Spanner 注入数据,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Agent Builder 页面。
前往数据存储区页面。
点击新建数据存储区。
在来源页面上,选择 Cloud Spanner。
指定您计划导入的数据的项目 ID、实例 ID、数据库 ID 和表 ID。
选择是否开启 Data Boost。如需了解 Data Boost,请参阅 Spanner 文档中的 Data Boost 概览。
点击继续。
为您的数据存储区选择一个区域。
为数据存储区输入名称。
点击创建。
如需查看数据注入的状态,请前往数据存储区页面,然后点击数据存储区名称,在其数据页面上查看相关详细信息。当活动标签页上的状态列从进行中更改为导入已完成时,提取操作即告完成。
提取过程可能需要几分钟到几小时才能完成,具体取决于数据的大小。
REST
如需使用命令行创建数据存储区并从 Spanner 注入数据,请按以下步骤操作:
创建数据存储区。
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"], "contentConfig": "CONTENT_REQUIRED", }'
替换以下内容:
PROJECT_ID
:您的 Vertex AI Search 项目的 ID。DATA_STORE_ID
:数据存储区的 ID。ID 只能包含小写字母、数字、下划线和连字符。DISPLAY_NAME
:数据存储区的显示名称。这可能会显示在 Google Cloud 控制台中。
从 Spanner 导入数据。
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 '{ "cloudSpannerSource": { "projectId": "SPANNER_PROJECT_ID", "instanceId": "INSTANCE_ID", "databaseId": "DATABASE_ID", "tableId": "TABLE_ID", "enableDataBoost": "DATA_BOOST_BOOLEAN" }, "reconciliationMode": "RECONCILIATION_MODE", "autoGenerateIds": "AUTO_GENERATE_IDS", "idField": "ID_FIELD", }'
替换以下内容:
PROJECT_ID
:您的 Vertex AI Search 项目的 ID。DATA_STORE_ID
:数据存储区的 ID。SPANNER_PROJECT_ID
:您的 Spanner 项目的 ID。INSTANCE_ID
:您的 Spanner 实例的 ID。DATABASE_ID
:您的 Spanner 数据库的 ID。TABLE_ID
:Spanner 表的 ID。DATA_BOOST_BOOLEAN
:可选。是否开启 Data Boost。 如需了解 Data Boost,请参阅 Spanner 文档中的 Data Boost 概览。RECONCILIATION_MODE
:可选。值为FULL
和INCREMENTAL
。默认值为INCREMENTAL
。 指定INCREMENTAL
会导致从 Spanner 到数据存储区以增量方式刷新数据。这会执行更新/插入操作,该操作会添加新文档,并将现有文档替换为具有相同 ID 的更新文档。指定FULL
会导致数据存储区中的文档完全重新基准。换句话说,系统会将新文档和更新后的文档添加到您的数据存储区,并将 Spanner 中不存在的文档从您的数据存储区中移除。如果您想自动删除不再需要的文档,FULL
模式会很有用。AUTO_GENERATE_IDS
:可选。指定是否自动生成文档 ID。如果设置为true
,文档 ID 将根据载荷的哈希生成。请注意,在多次导入后,生成的文档 ID 可能不会保持一致。如果您在多次导入时自动生成 ID,Google 强烈建议您将reconciliationMode
设置为FULL
,以保持文档 ID 的一致性。ID_FIELD
:可选。指定哪些字段是文档 ID。
Python
如需了解详情,请参阅 Vertex AI Agent Builder Python API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入文档
后续步骤
从 Firestore 导入
如需从 Firestore 注入数据,请按照以下步骤使用 Google Cloud 控制台或 API 创建数据存储区并注入数据。
如果您的 Firestore 数据与 Vertex AI Search 位于同一项目中,请参阅从 Firestore 导入数据。
如果您的 Firestore 数据位于与 Vertex AI Search 项目不同的项目中,请参阅设置 Firestore 访问权限。
设置对其他项目的 Firestore 访问权限
如需向 Vertex AI Search 授予对其他项目中的 Firestore 数据的访问权限,请按以下步骤操作:
将以下
PROJECT_NUMBER
变量替换为您的 Vertex AI Search 项目编号,然后复制此代码块的内容。这是您的 Vertex AI Search 服务账号标识符:service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
前往 IAM 和管理页面。
在 IAM 和管理页面上切换到您的 Firestore 项目,然后点击授予访问权限。
对于新主账号,输入实例的服务账号标识符,然后选择 Datastore > Cloud Datastore Import Export Admin 角色。
点击保存。
切换回您的 Vertex AI Search 项目。
接下来,前往从 Firestore 导入数据。
从 Firestore 导入数据
控制台
如需使用控制台从 Firestore 注入数据,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Agent Builder 页面。
前往数据存储区页面。
点击新建数据存储区。
在 Source(来源)页面上,选择 Firestore。
指定您计划导入的数据的项目 ID、数据库 ID 和合集 ID。
点击继续。
为您的数据存储区选择一个区域。
为数据存储区输入名称。
点击创建。
如需查看数据注入的状态,请前往数据存储区页面,然后点击数据存储区名称,在其数据页面上查看相关详细信息。当活动标签页上的状态列从进行中更改为导入已完成时,提取操作即告完成。
提取过程可能需要几分钟到几小时才能完成,具体取决于数据的大小。
REST
如需使用命令行创建数据存储区并从 Firestore 注入数据,请按以下步骤操作:
创建数据存储区。
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 控制台中。
从 Firestore 导入数据。
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 '{ "firestoreSource": { "projectId": "FIRESTORE_PROJECT_ID", "databaseId": "DATABASE_ID", "collectionId": "COLLECTION_ID", }, "reconciliationMode": "RECONCILIATION_MODE", "autoGenerateIds": "AUTO_GENERATE_IDS", "idField": "ID_FIELD", }'
替换以下内容:
PROJECT_ID
:您的 Vertex AI Search 项目的 ID。DATA_STORE_ID
:数据存储区的 ID。ID 只能包含小写字母、数字、下划线和连字符。FIRESTORE_PROJECT_ID
:您的 Firestore 项目的 ID。DATABASE_ID
:您的 Firestore 数据库的 ID。COLLECTION_ID
:您的 Firestore 集合的 ID。RECONCILIATION_MODE
:可选。值为FULL
和INCREMENTAL
。默认值为INCREMENTAL
。 指定INCREMENTAL
会导致从 Firestore 到数据存储区的数据增量刷新。这会执行更新/插入操作,该操作会添加新文档,并将现有文档替换为具有相同 ID 的更新文档。指定FULL
会导致数据存储区中的文档完全重新基准。换句话说,系统会将新文档和更新后的文档添加到您的数据存储区,并从您的数据存储区中移除 Firestore 中不存在的文档。如果您想自动删除不再需要的文档,FULL
模式会很有用。AUTO_GENERATE_IDS
:可选。指定是否自动生成文档 ID。如果设置为true
,文档 ID 将根据载荷的哈希生成。请注意,在多次导入后,生成的文档 ID 可能不会保持一致。如果您在多次导入时自动生成 ID,Google 强烈建议您将reconciliationMode
设置为FULL
,以保持文档 ID 的一致性。ID_FIELD
:可选。指定哪些字段是文档 ID。
Python
如需了解详情,请参阅 Vertex AI Agent Builder Python API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入文档
后续步骤
从 Bigtable 导入
如需从 Bigtable 注入数据,请按照以下步骤创建数据存储区,然后使用 API 注入数据。
设置 Bigtable 访问权限
如需向 Vertex AI Search 授予对其他项目中的 Bigtable 数据的访问权限,请按以下步骤操作:
将以下
PROJECT_NUMBER
变量替换为您的 Vertex AI Search 项目编号,然后复制此代码块的内容。这是您的 Vertex AI Search 服务账号标识符:service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com`
前往 IAM 和管理页面。
在 IAM 和管理页面上切换到您的 Bigtable 项目,然后点击授予访问权限。
在新的主账号中,输入实例的服务账号标识符,然后选择 Bigtable > Bigtable Reader 角色。
点击保存。
切换回您的 Vertex AI Search 项目。
接下来,前往从 Bigtable 导入数据。
从 Bigtable 导入数据
REST
如需使用命令行创建数据存储区并从 Bigtable 注入数据,请按以下步骤操作:
创建数据存储区。
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 控制台中。
从 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
:您的 Vertex AI Search 项目的 ID。DATA_STORE_ID
:数据存储区的 ID。ID 只能包含小写字母、数字、下划线和连字符。BIGTABLE_PROJECT_ID
:您的 Bigtable 项目的 ID。INSTANCE_ID
:您的 Bigtable 实例的 ID。TABLE_ID
:Bigtable 表的 ID。KEY_FIELD_NAME
:可选,但建议提供。提取到 Vertex AI Search 后要用于行键值的字段名称。KEY
:必填。列族键的字符串值。ENCODING
:可选。当值的类型不是 STRING 时,值的编码模式。您可以通过在columns
中列出该列并为其指定编码,为特定列替换此值。COLUMN_TYPE
:可选。此列族中的值的类型。QUALIFIER
:必填。列的限定符。FIELD_NAME
:可选,但建议提供。提取到 Vertex AI Search 后要为此列使用的字段名称。COLUMN_ENCODING
:可选。当类型不是字符串时,特定列值的编码模式。RECONCILIATION_MODE
:可选。值为FULL
和INCREMENTAL
。默认值为INCREMENTAL
。 指定INCREMENTAL
会导致从 Bigtable 到数据存储区增量刷新数据。这会执行更新/插入操作,该操作会添加新文档,并将现有文档替换为具有相同 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。
Python
如需了解详情,请参阅 Vertex AI Agent Builder Python API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入文档
后续步骤
从 AlloyDB for PostgreSQL 导入
如需从 AlloyDB for PostgreSQL 注入数据,请按照以下步骤使用 Google Cloud 控制台或 API 创建数据存储区并注入数据。
如果您的 AlloyDB for PostgreSQL 数据与 Vertex AI Search 项目位于同一项目中,请参阅从 AlloyDB for PostgreSQL 导入数据。
如果您的 AlloyDB for PostgreSQL 数据位于与 Vertex AI Search 项目不同的项目中,请参阅设置 AlloyDB for PostgreSQL 访问权限。
从其他项目设置 AlloyDB for PostgreSQL 访问权限
如需向 Vertex AI Search 授予对其他项目中 AlloyDB for PostgreSQL 数据的访问权限,请按以下步骤操作:
将以下
PROJECT_NUMBER
变量替换为您的 Vertex AI Search 项目编号,然后复制此代码块的内容。这是您的 Vertex AI Search 服务账号标识符:service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
切换到存储 AlloyDB for PostgreSQL 数据的 Google Cloud 项目。
转到 IAM 页面。
点击授予访问权限。
在新主账号中,输入 Vertex AI Search 服务账号标识符,然后选择 Cloud AlloyDB > Cloud AlloyDB Admin 角色。
点击保存。
切换回您的 Vertex AI Search 项目。
接下来,前往从 AlloyDB for PostgreSQL 导入数据。
从 AlloyDB for PostgreSQL 导入数据
控制台
如需使用控制台从 AlloyDB for PostgreSQL 注入数据,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Agent Builder 页面。
在导航菜单中,点击数据存储区。
点击创建数据存储区。
在来源页面上,选择 AlloyDB。
指定您计划导入的数据的项目 ID、位置 ID、集群 ID、数据库 ID 和表 ID。
点击继续。
为您的数据存储区选择一个区域。
为数据存储区输入名称。
点击创建。
如需查看数据注入的状态,请前往数据存储区页面,然后点击数据存储区名称,在其数据页面上查看相关详细信息。当活动标签页上的状态列从进行中更改为导入已完成时,提取操作即告完成。
提取过程可能需要几分钟到几小时才能完成,具体取决于数据的大小。
REST
如需使用命令行创建数据存储区并从 AlloyDB for PostgreSQL 注入数据,请按以下步骤操作:
创建数据存储区。
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/v1beta/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 控制台中。
从 AlloyDB for PostgreSQL 导入数据。
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 '{ "alloydbSource": { "projectId": "ALLOYDB_PROJECT_ID", "locationId": "LOCATION_ID", "clusterId": "CLUSTER_ID", "databaseId": "DATABASE_ID", "tableId": "TABLE_ID", }, "reconciliationMode": "RECONCILIATION_MODE", "autoGenerateIds": "AUTO_GENERATE_IDS", "idField": "ID_FIELD", }'
替换以下内容:
PROJECT_ID
:您的 Vertex AI Search 项目的 ID。DATA_STORE_ID
:数据存储区的 ID。ID 只能包含小写字母、数字、下划线和连字符。ALLOYDB_PROJECT_ID
:您的 AlloyDB for PostgreSQL 项目的 ID。LOCATION_ID
:您的 AlloyDB for PostgreSQL 位置的 ID。CLUSTER_ID
:您的 AlloyDB for PostgreSQL 集群的 ID。DATABASE_ID
:您的 AlloyDB for PostgreSQL 数据库的 ID。TABLE_ID
:您的 AlloyDB for PostgreSQL 表的 ID。RECONCILIATION_MODE
:可选。值为FULL
和INCREMENTAL
。默认值为INCREMENTAL
。 指定INCREMENTAL
会导致从 AlloyDB for PostgreSQL 到数据存储区的数据增量刷新。这会执行更新/插入操作,该操作会添加新文档,并将现有文档替换为具有相同 ID 的更新文档。指定FULL
会导致数据存储区中的文档完全重新基准。换句话说,系统会将新文档和更新后的文档添加到数据存储区,并从数据存储区中移除 AlloyDB for PostgreSQL 中不存在的文档。如果您想自动删除不再需要的文档,FULL
模式会很有用。AUTO_GENERATE_IDS
:可选。指定是否自动生成文档 ID。如果设置为true
,文档 ID 将根据载荷的哈希生成。请注意,在多次导入后,生成的文档 ID 可能不会保持一致。如果您在多次导入时自动生成 ID,Google 强烈建议您将reconciliationMode
设置为FULL
,以保持文档 ID 的一致性。ID_FIELD
:可选。指定哪些字段是文档 ID。
Python
如需了解详情,请参阅 Vertex AI Agent Builder Python API 参考文档。
如需向 Vertex AI Agent Builder 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建数据存储区
导入文档
后续步骤
使用 API 上传结构化 JSON 数据
如需使用该 API 直接上传 JSON 文档或对象,请按以下步骤操作。
在导入数据之前,请准备数据以进行提取。
REST
如需使用命令行创建数据存储区并导入结构化 JSON 数据,请按以下步骤操作。
创建数据存储区。
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": "DATA_STORE_DISPLAY_NAME", "industryVertical": "GENERIC", "solutionTypes": ["SOLUTION_TYPE_SEARCH"] }'
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目的 ID。DATA_STORE_ID
:您要创建的 Vertex AI Search 数据存储区的 ID。此 ID 只能包含小写字母、数字、下划线和连字符。DATA_STORE_DISPLAY_NAME
:您要创建的 Vertex AI Search 数据存储区的显示名称。
导入结构化数据。
您可以通过多种方式上传数据,包括:
上传 JSON 文档。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents?documentId=DOCUMENT_ID" \ -d '{ "jsonData": "JSON_DOCUMENT_STRING" }'
替换以下内容:
DOCUMENT_ID
:文档的唯一 ID。 此 ID 最多可包含 63 个字符,并且只能包含小写字母、数字、下划线和连字符。JSON_DOCUMENT_STRING
:将 JSON 文档作为单个字符串。此值必须符合您在上一步中提供的 JSON 架构,例如:{ \"title\": \"test title\", \"categories\": [\"cat_1\", \"cat_2\"], \"uri\": \"test uri\"}
上传 JSON 对象。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents?documentId=DOCUMENT_ID" \ -d '{ "structData": JSON_DOCUMENT_OBJECT }'
将
JSON_DOCUMENT_OBJECT
替换为 JSON 文档作为 JSON 对象。此字符串必须符合您在上一步中提供的 JSON 架构,例如:```json { "title": "test title", "categories": [ "cat_1", "cat_2" ], "uri": "test uri" } ```
使用 JSON 文档进行更新。
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents/DOCUMENT_ID" \ -d '{ "jsonData": "JSON_DOCUMENT_STRING" }'
使用 JSON 对象进行更新。
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents/DOCUMENT_ID" \ -d '{ "structData": JSON_DOCUMENT_OBJECT }'
后续步骤
排查数据注入问题
如果您在数据注入方面遇到问题,请参阅以下提示:
如果您使用的是客户管理的加密密钥,并且数据导入失败(并显示错误消息
The caller does not have permission
),请确保已向 Cloud Storage 服务代理授予相应密钥的 CryptoKey Encrypter/Decrypter IAM 角色 (roles/cloudkms.cryptoKeyEncrypterDecrypter
)。如需了解详情,请参阅“客户管理的加密密钥”中的准备工作。如果您使用的是高级网站索引,并且数据存储区的文档用量远低于预期,请检查您为索引编制指定的网址模式,确保指定的网址模式涵盖您要编入索引的网页,并根据需要对其进行扩展。例如,如果您使用了
*.en.example.com/*
,则可能需要向要编入索引的网站添加*.example.com/*
。
使用 Terraform 创建数据存储区
您可以使用 Terraform 创建一个空数据存储区。创建空数据存储区后,您可以使用 Google Cloud 控制台或 API 命令将数据注入到数据存储区。
如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
如需使用 Terraform 创建空数据存储区,请参阅
google_discovery_engine_data_store
。