您可以更新支持架构的架构结构化数据和包含元数据的非结构化数据。
您可以在 Google Cloud 控制台中或使用 schemas.patch
API 方法更新架构。
如需更新架构,您可以添加新字段、更改字段的可编入索引、可搜索和可检索注释,或将字段标记为关键属性,例如 title
、uri
和 description
。
更新架构
您可以在 Google Cloud 控制台中或使用 API 更新架构。
控制台
如需在 Google Cloud 控制台中更新架构,请按以下步骤操作:
查看要求和限制部分,确保您的架构更新有效。
如果您要更新字段注解(将字段设置为可编制索引、可检索、动态可分面、可搜索或可补全),请查看配置字段设置,了解每种注解类型的限制和要求。
检查您是否已完成数据注入。否则,该架构可能尚未提供修改功能。
在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。
在导航菜单中,点击数据存储区。
在名称列中,点击要更新的架构所对应的数据存储区。
点击架构标签页,查看数据的架构。
如果您是首次修改这些字段,此标签页可能为空。
点击修改按钮。
更新架构:
映射关键属性:在架构的关键属性列中,选择要将字段映射到的关键属性。例如,如果名为
details
的字段始终包含文档的说明,请将该字段映射到键属性 Description。更新维度数(高级):如果您将自定义向量嵌入与 Gemini Enterprise 搭配使用,则可以更新此设置。请参阅高级:使用自定义嵌入内容。
更新字段注解:如需更新字段的注解,请选择或取消选择字段的注解设置。可用的注释包括可检索、可编入索引、可动态分面、可搜索和可补全。部分字段设置存在限制。如需了解每种注解类型的说明和要求,请参阅配置字段设置。
添加新字段:在导入包含这些字段的新文档之前,向架构添加新字段可以缩短 Gemini Enterprise 在导入后重新为数据编制索引所需的时间。
点击添加新字段以展开该部分。
点击 add_box 添加节点,然后为新字段指定设置。
如需指明数组,请将数组设置为是。例如,如需添加字符串数组,请将 type 设置为
string
,并将 Array 设置为Yes
。
点击保存以应用架构更改。
更改架构会触发重新编制索引的流程。对于大型数据存储区,重新编制索引的流程可能需要几小时才能完成。
REST
如需使用 API 更新架构,请按以下步骤操作:
查看要求和限制以及限制示例(仅限 REST)部分,确保您的架构变更有效。
如需更新包含元数据的非结构化数据的数据存储区的架构,请跳至第 5 步以调用
schema.patch
方法。如果您要更新字段注解(将字段设置为可编制索引、可检索、可进行动态分面或可搜索),请查看配置字段设置,了解每种注解类型的限制和要求。
如果您要修改自动检测到的架构,请确保已完成数据注入。否则,相应架构可能尚未提供编辑功能。
查找数据存储区 ID。如果您已拥有数据存储区 ID,请跳至下一步。
在 Google Cloud 控制台中,前往 Gemini Enterprise 页面,然后在导航菜单中点击数据存储区。
点击您的数据存储区的名称。
在数据存储区的数据页面上,获取数据存储区 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
:您的项目的 ID。DATA_STORE_ID
:数据存储区的 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#
试用此示例之前,请按照《Gemini Enterprise 快速入门:使用客户端库》中的 C# 设置说明进行操作。 如需了解详情,请参阅 Gemini Enterprise C# API 参考文档。
如需向 Gemini Enterprise 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
试用此示例之前,请按照《Gemini Enterprise 快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Gemini Enterprise Go API 参考文档。
如需向 Gemini Enterprise 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
试用此示例之前,请按照《Gemini Enterprise 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Gemini Enterprise Java API 参考文档。
如需向 Gemini Enterprise 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
试用此示例之前,请按照《Gemini Enterprise 快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Gemini Enterprise Python API 参考文档。
如需向 Gemini Enterprise 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
试用此示例之前,请按照《Gemini Enterprise 快速入门:使用客户端库》中的 Ruby 设置说明进行操作。 如需了解详情,请参阅 Gemini Enterprise Ruby API 参考文档。
如需向 Gemini Enterprise 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
要求和限制
更新架构时,请务必确保新架构与您要更新的架构向后兼容。如需使用不向后兼容的新架构更新架构,您需要删除数据存储区中的所有文档、删除架构,然后创建新架构。
更新架构会触发对所有文档重新编制索引的流程。 为大型数据存储区重新编制索引可能需要数小时或数天。
架构更新不支持以下操作:
- 更改字段类型。架构更新不支持更改字段的类型。例如,映射到
integer
的字段无法更改为string
。 - 移除字段。字段定义后便无法移除。您可以继续添加新字段,但无法移除现有字段。
限制示例(仅限 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" } } } }