您可以更新任何包含支持架构的数据(例如结构化数据、包含结构化数据的网站数据或其他包含元数据的非结构化数据)的数据的架构。
您可以在 Google Cloud 控制台中或使用 schemas.patch API 方法更新架构。
仅支持通过 REST API 更新网站的架构。
如需更新架构,您可以添加新字段、更改字段的可编入索引、可搜索和可检索注解,或将字段标记为键属性,例如 title、uri 和 description。
准备工作
在更新架构之前,请先了解本部分中介绍的关键概念。
关键属性的重要性
您需要将架构字段映射到键属性,原因如下:
Google 强烈建议您通过键属性映射来更新架构,特别是针对
title。这确保了您的结果能够正确显示,并帮助 Vertex AI Search 识别重要信息,从而生成更好的结果。在结构化数据存储区中,如需在搜索响应中获取
keywordSimilarityScore信号,您必须更新架构以执行以下操作:- 将对关键字匹配至关重要的文本字段映射到键属性
title和description - 将文本字段的注解更新为
Searchable
- 将对关键字匹配至关重要的文本字段映射到键属性
要求
更新架构时,请务必确保新架构与您要更新的架构向后兼容。如要使用不向后兼容的新架构来更新架构,您需要删除数据存储区中的所有文档、删除架构,然后创建一个新架构。
更新架构会触发对所有文档重新编制索引的流程。这可能需要时间并产生额外费用:
时间。为大型数据存储区重新编制索引可能需要数小时或数天。
费用。重新编制索引可能会产生费用,具体取决于解析器。例如,重新为使用 OCR 解析器或布局解析器的数据存储区编制索引都会产生费用。如需了解详情,请参阅 Document AI 功能价格。
架构更新不支持以下操作:
- 更改字段类型。架构更新不支持更改字段的类型。例如,映射到
integer的字段无法更改为string。 - 移除字段。字段定义后便无法移除。您可以继续添加新字段,但无法移除现有字段。
更新架构
您可以在 Google Cloud 控制台中或使用 API 更新架构。
控制台
如需在 Google Cloud 控制台中更新架构,请按以下步骤操作:
查阅要求和限制部分,确保您的架构更新有效。
如果您要更新字段注解(将字段设置为可编入索引、可检索、可动态分面、可搜索或可补全),请查阅配置字段设置,了解每种注解类型的限制和要求。
检查您是否已完成数据注入。否则,相应架构可能还不能进行修改。
在 Google Cloud 控制台中,前往 AI Applications 页面。
在导航菜单中,点击数据存储区。
在名称列中,点击要更新的架构所对应的数据存储区。
点击架构标签页,以查看数据的架构。
如果您是首次修改这些字段,此标签页可能为空。
点击修改按钮。
更新架构:
映射键属性:在架构的键属性列中,选择要将字段映射到的键属性。例如,如果名为
details的字段始终包含文档的说明,请将该字段映射到键属性 Description。更新维度数(高级):如果您在 Vertex AI Search 中使用自定义向量嵌入,则可以更新此设置。请参阅高级:使用自定义嵌入。
更新字段注解:如需更新字段的注解,请选择或取消选择相应字段的注解设置。可用的注解包括可检索、可编入索引、可动态分面、可搜索和可补全。部分字段设置存在限制。如需了解每种注解类型的说明和要求,请参阅配置字段设置。
添加新字段:在导入包含这些字段的新文档之前,向架构添加新字段可以缩短 Vertex AI Search 在导入后重新为数据编制索引所需的时间。
点击添加新字段以展开该部分。
点击 add_box 添加节点,然后为新字段指定设置。
如需指示数组,请将数组设置为是。例如,如需添加字符串数组,请将类型设置为
string,并将数组设置为Yes。对于网站数据存储区索引,您添加的所有字段默认都是数组。
点击保存以应用架构更改。
更改架构会触发重新编制索引的流程。对于大型数据存储区,重新编制索引的流程可能需要几小时才能完成。
REST
如需使用 API 更新架构,请按以下步骤操作:
查阅要求和限制以及限制示例(仅限 REST)部分,确保您的架构更改有效。
如需更新包含网站数据或包含元数据的非结构化数据的数据存储区的架构,请跳至第 5 步以调用
schema.patch方法。如果您要更新字段注解(将字段设置为可编入索引、可检索、可动态分面或可搜索),请查阅配置字段设置,了解每种注解类型的限制和要求。
如果您要修改自动检测到的架构,请确保您已完成数据注入。否则,相应架构可能还不能进行修改。
查找您的数据存储区 ID。如果您已有数据存储区 ID,请跳至下一步。
在 Google Cloud 控制台中,前往 AI Applications 页面,然后在导航菜单中点击数据存储区。
点击您的数据存储区的名称。
在数据存储区的数据页面上,获取数据存储区 ID。
使用 schemas.patch API 方法以 JSON 对象的形式提供新的 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/schemas/default_schema" \ -d '{ "structSchema": JSON_SCHEMA_OBJECT }'替换以下内容:
PROJECT_ID:您的 Google Cloud 项目的 ID。DATA_STORE_ID:Vertex AI Search 数据存储区的 ID。JSON_SCHEMA_OBJECT:以 JSON 对象形式表示的新 JSON 架构。例如:{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "title": { "type": "string", "keyPropertyMapping": "title" }, "categories": { "type": "array", "items": { "type": "string", "keyPropertyMapping": "category" } }, "uri": { "type": "string", "keyPropertyMapping": "uri" } } }
可选:按照查看架构定义中的过程查看架构。
C#
如需了解详情,请参阅 Vertex AI Search C# API 参考文档。
如需向 Vertex AI Search 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解详情,请参阅 Vertex AI Search Go API 参考文档。
如需向 Vertex AI Search 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解详情,请参阅 Vertex AI Search Java API 参考文档。
如需向 Vertex AI Search 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解详情,请参阅 Vertex AI Search Python API 参考文档。
如需向 Vertex AI Search 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解详情,请参阅 Vertex AI Search Ruby API 参考文档。
如需向 Vertex AI Search 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
限制示例(仅限 REST)
本部分展示了有效和无效架构更新类型的示例。这些示例使用以下 JSON 架构示例:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"title": {
"type": "string"
},
"description": {
"type": "string",
"keyPropertyMapping": "description"
},
"categories": {
"type": "array",
"items": {
"type": "string",
"keyPropertyMapping": "category"
}
}
}
}
支持的更新示例
支持对示例架构进行以下更新。
添加字段。在此示例中,字段
properties.uri已添加到架构中。{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "title": { "type": "string" }, "description": { "type": "string", "keyPropertyMapping": "description" }, "uri": { // Added field. This is supported. "type": "string", "keyPropertyMapping": "uri" }, "categories": { "type": "array", "items": { "type": "string", "keyPropertyMapping": "category" } } } }为
title、description或uri添加或移除键属性注解。在此示例中,keyPropertyMapping已添加到title字段。{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "title": { "type": "string", "keyPropertyMapping": "title" // Added "keyPropertyMapping". This is supported. }, "description": { "type": "string", "keyPropertyMapping": "description" }, "categories": { "type": "array", "items": { "type": "string", "keyPropertyMapping": "category" } } } }
无效的架构更新示例
不支持对示例架构进行以下更新。
更改字段类型。在此示例中,
title字段的类型已从字符串更改为数字。此操作不受支持。{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "title": { "type": "number" // Changed from string. Not allowed. }, "description": { "type": "string", "keyPropertyMapping": "description" }, "categories": { "type": "array", "items": { "type": "string", "keyPropertyMapping": "category" } } } }移除字段。在此示例中,
title字段已被移除。此操作不受支持。{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { // "title" is removed. Not allowed. "description": { "type": "string", "keyPropertyMapping": "description" }, "uri": { "type": "string", "keyPropertyMapping": "uri" }, "categories": { "type": "array", "items": { "type": "string", "keyPropertyMapping": "category" } } } }