本页介绍了 Vertex AI Search 的基本自动补全功能。自动补全功能会根据为查询输入的前几个字符生成查询建议。
自动补全功能生成的建议因搜索应用使用的不同数据类型而异:
结构化数据和非结构化数据。默认情况下,自动补全功能会根据数据存储区中文档的内容生成建议。默认情况下,在导入文档后,自动补全功能不会开始生成建议,除非有足够质量的数据(通常需要几天时间)。如果您通过 API 发出自动补全请求,自动补全功能可以根据搜索记录或用户事件生成建议。
网站数据。默认情况下,自动补全功能会根据搜索记录生成建议。自动补全功能需要有真实的搜索流量。搜索流量开始后,自动补全功能需要一两天的时间才能生成建议。系统可以使用实验性高级文档数据模型,根据从公开网站抓取的数据生成建议。
医疗保健数据。默认情况下,系统会使用规范医疗数据源为医疗保健数据存储区生成自动补全建议。对于医疗保健搜索,自动补全功能是一项预览版功能。
自动补全数据模型决定了自动补全功能使用哪种类型的数据来生成建议。自动补全模型有四种:
文档。文档模型会根据用户导入的文档生成建议。此模型不适用于网站数据或医疗保健数据。
可补全字段。可填充字段模型会建议直接从结构化数据字段中提取的文本。只有带有
completable
注解的字段才会用于自动补全建议。此模型仅适用于结构化数据。搜索记录。搜索记录模型会根据
SearchService.search
API 调用的记录生成建议。如果没有可供servingConfigs.search
方法使用的流量,请勿使用此模型。此模型不适用于医疗保健数据。用户事件。用户事件模型会根据用户导入的搜索事件生成建议。此模型不适用于医疗保健数据。
自动补全请求使用 dataStores.completeQuery
方法发送。
下表显示了适用于每种数据类型的自动补全模型类型。
自动补全数据模型 |
数据源 |
网站数据 |
结构化数据 |
非结构化数据 |
---|---|---|---|---|
文档 | 由用户导入 | ✔*(默认) | ✔(默认) | |
可补全字段 | 由用户导入 | ✔ | ||
搜索记录 | 自动收集 | ✔(默认) | ✔ | ✔ |
用户事件 | 由用户导入或由微件自动收集 | ✔ | ✔ | ✔ |
网站抓取的内容 | 从用户指定的公共网站中抓取的内容 | ✔† |
*:文档架构必须包含 title
或 description
字段,或者必须有字段已指定为 title
或 description
键属性。请参阅更新结构化数据的架构。
†:只有在启用用于自动补全的实验性高级文档数据模型后,才能将抓取的网页内容用作数据源。请参阅高级文档数据模型。
如果您不想为数据类型使用默认模型,可以在发送自动补全请求时指定其他模型。系统使用 dataStores.completeQuery
方法发送自动补全请求。如需了解详情,请参阅 API 说明:发送自动补全请求以选择其他模型。
自动补全功能
Vertex AI Search 支持以下自动补全功能,以便在搜索时显示最实用的预测结果:
功能 | 说明 | 示例或更多信息 |
---|---|---|
更正拼写错误 | 更正拼写错误的字词。 | Milc → Milk 。
|
移除不安全字词 |
|
冒犯性文字,例如色情、露骨、粗俗、暴力内容。 |
拒绝名单 |
|
如需了解详情,请参阅使用自动补全拒绝名单。 |
删除重复的字词 |
|
Shoes for Women 、Womens Shoes 和 Womans Shoes 会被删除重复项,系统只会建议最受欢迎的字符串。 |
尾部匹配建议 |
|
如需了解详情,请参阅尾部匹配建议。 |
尾部匹配建议
尾部匹配建议是通过与查询字符串中的最后一个字词进行完全前缀匹配来提供的。
例如,假设在自动补全请求中发送了查询“包含 he 的歌曲”。启用尾部匹配后,自动补全功能可能会发现完整前缀“songs with he”没有任何匹配项。不过,查询中的最后一个字词“he”与“hello world”和“hello kitty”完全匹配前缀。在这种情况下,系统会返回“包含 Hello World 的歌曲”和“包含 Hello Kitty 的歌曲”这两个建议,因为没有完全匹配的建议。
您可以使用此功能减少空白建议结果并提高建议多样性,这在数据源(用户事件数、搜索记录和文档主题覆盖率)有限的情况下尤为有用。不过,启用尾部匹配建议可能会降低建议的整体质量。由于尾部匹配仅匹配前缀的尾随字词,因此系统返回的一些建议可能没有意义。例如,如果用户输入“songs with he”这样的查询,则可能会收到“songs with helpers guides”这样的尾部匹配建议。
只有在满足以下条件时,系统才会返回尾部匹配建议:
在
dataStores.completeQuery
请求中,将include_tail_suggestions
设置为true
。没有与该查询完全匹配的前缀建议。
为微件开启或关闭自动补全功能
如需为 widget 开启或关闭自动补全功能,请按以下步骤操作:
控制台
在 Google Cloud 控制台中,前往 Agent Builder 页面。
点击要修改的应用的名称。
点击配置。
点击界面标签页。
切换显示自动补全建议选项,以启用或停用 widget 的自动补全建议。启用自动补全功能后,可能需要等待一两天才能开始显示建议。对于医疗保健搜索,自动补全功能是一项预览版功能。
更新自动补全设置
如需配置自动补全设置,请按以下步骤操作:
控制台
在 Google Cloud 控制台中,前往 Agent Builder 页面。
点击要修改的应用的名称。
点击配置。
点击自动补全标签页。
为要更新的自动补全设置输入或选择新值:
- 建议数量上限:系统可为查询提供的自动补全建议数量上限。
- 触发条件的最短长度:在系统提供自动补全建议之前,您可以输入的最短字符数。
- 匹配顺序:自动补全功能可以从查询字符串中的哪个位置开始匹配建议。
- 自动补全模型:用于生成检索到的建议的自动补全数据模型。您可以在
dataStores.completeQuery
中使用queryModel
参数替换此值。 启用自动补全功能:默认情况下,自动补全功能需要收集足够质量的数据(通常需要几天时间)才能开始提供建议。如果您想替换此默认设置,并更早开始收到一些自动补全建议,请选择立即。
即使您选择立即,系统也可能需要一天的时间才能生成建议,而且在获得足够好的数据之前,系统仍会缺少一些自动补全建议或提供的建议质量较差。
点击保存并发布。对于已启用自动补全的引擎,更改会在几分钟内生效。
更新架构中的可填充字段注解
如需为结构化数据架构中的字段开启自动补全功能,请按以下步骤操作:
控制台
在 Google Cloud 控制台中,前往 Agent Builder 页面。
点击要修改的应用的名称。它必须使用结构化数据。
点击数据。
点击架构标签页。
点击修改,选择要标记为
completable
的架构字段。点击保存以保存更新后的字段配置。这些建议大约需要一天时间才能生成并返回。
发送自动补全请求
以下示例展示了如何发送自动补全请求。
REST
如需使用 API 发送自动补全请求,请按以下步骤操作:
找到您的数据存储区 ID。如果您已拥有数据存储区 ID,请跳至下一步。
在 Google Cloud 控制台中,前往 Agent Builder 页面,然后在导航菜单中点击数据存储区。
点击您的数据存储区的名称。
在数据存储区的数据页面上,获取数据存储区 ID。
调用
dataStores.completeQuery
方法。curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID:completeQuery?query=QUERY_STRING"
PROJECT_ID:您的 Google Cloud 项目的项目编号或 ID。
LOCATION:数据存储区的位置:
us
、eu
或global
。DATA_STORE_ID:与您的应用关联的数据存储区的 ID。
QUERY_STRING:用于提取建议的预测性输入。
向其他模型发送自动补全请求
如需发送使用其他自动补全数据模型的自动补全请求,请按以下步骤操作:
找到您的数据存储区 ID。如果您已拥有数据存储区 ID,请跳至下一步。
在 Google Cloud 控制台中,前往 Agent Builder 页面,然后在导航菜单中点击数据存储区。
点击您的数据存储区的名称。
在数据存储区的数据页面上,获取数据存储区 ID。
调用
dataStores.completeQuery
方法。curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID:completeQuery?query=QUERY_STRING&query_model=AUTOCOMPLETE_MODEL"
- PROJECT_ID:您的 Google Cloud 项目的项目编号或 ID。
- LOCATION:数据存储区的位置:
us
、eu
或global
。 - DATA_STORE_ID:与您的应用关联的数据存储区的唯一 ID。
- QUERY_STRING:用于提取建议的预测性输入。
- AUTOCOMPLETE_MODEL:要为请求使用的自动补全数据模型:
document
、document-completable
、search-history
或user-event
。对于医疗保健数据,请使用healthcare-default
。
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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
使用自动补全拒绝名单
您可以使用拒绝名单来防止特定字词显示为自动补全建议。
例如,制药公司。如果某种药物已不再获得 FDA 批准,但在其数据存储区中的文档中提及,他们可能希望阻止该药物显示为建议查询。该公司可以将该药品名称添加到拒绝名单中,以防止系统推荐该药品。
适用的限制如下:
- 每个数据存储区一个拒绝名单
- 上传拒绝名单会覆盖该数据存储区的所有现有拒绝名单
- 每个拒绝名单最多包含 1,000 个字词
- 字词不区分大小写
- 导入拒绝名单后,需要 1-2 天才能生效
拒绝名单中的每个条目都由 blockPhrase
和 matchOperator
组成:
blockPhrase
:输入字符串作为拒绝名单字词。字词不区分大小写。matchOperator
:接受以下值:EXACT_MATCH
:阻止拒绝名单中字词的完全匹配项显示为建议的查询。CONTAINS
:阻止显示包含拒绝名单字词的任何建议。
以下是一个包含四个条目的拒绝名单示例:
{ "entries": [ {"blockPhrase":"Oranges","matchOperator":"CONTAINS"}, {"blockPhrase":"bAd apples","matchOperator":"EXACT_MATCH"}, {"blockPhrase":"Cool as A Cucumber","matchOperator":"EXACT_MATCH"}, {"blockPhrase":"cherry pick","matchOperator":"CONTAINS"} ] }
在导入拒绝名单之前,请验证是否已为发现引擎编辑器访问权限设置了必要的访问权限控制。
您可以从本地 JSON 数据或从 Cloud Storage 导入拒绝名单。如需从数据存储区中移除拒绝名单,请清除拒绝名单。
从本地 JSON 数据导入拒绝名单
如需从包含屏蔽名单的本地 JSON 文件导入屏蔽名单,请执行以下操作:
在本地 JSON 文件中按以下格式创建拒绝名单。确保每个拒绝名单条目都在新行中,且不含换行符。
{ "inlineSource": { "entries": [ { "blockPhrase":"TERM_1","matchOperator":"MATCH_OPERATOR_1" }, { "blockPhrase":"TERM_2","matchOperator":"MATCH_OPERATOR_2" } ] } }
向
suggestionDenyListEntries:import
方法发出 POST 请求,提供 JSON 文件的名称。curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data @DENYLIST_FILE \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataStores/DATA_STORE_ID/suggestionDenyListEntries:import"
- DENYLIST_FILE:包含屏蔽名单字词的 JSON 文件的本地路径。
- PROJECT_ID:您的 Google Cloud 项目的项目编号或 ID。
- LOCATION:数据存储区的位置:
us
、eu
或global
。 - DATA_STORE_ID:与您的应用关联的数据存储区的 ID。
导入拒绝名单后,系统需要 1-2 天的时间才能开始过滤建议。
从 Cloud Storage 导入拒绝名单
如需从 Cloud Storage 中的 JSON 文件导入拒绝名单,请执行以下操作:
在 JSON 文件中按以下格式创建拒绝名单,然后将其导入 Cloud Storage 存储桶。请确保每个拒绝名单条目都在新行中,没有换行符。
{ "blockPhrase":"TERM_1","matchOperator":"MATCH_OPERATOR_1" } { "blockPhrase":"TERM_2","matchOperator":"MATCH_OPERATOR_2" }
创建一个包含
gcsSource
对象的本地 JSON 文件。使用此属性指向 Cloud Storage 存储桶中的拒绝名单文件的位置。{ "gcsSource": { "inputUris": [ "DENYLIST_STORAGE_LOCATION" ] } }
- DENYLIST_STORAGE_LOCATION:拒绝名单在 Cloud Storage 中的位置。您只能输入一个 URI。必须采用以下格式输入 URI:
gs://BUCKET/FILE_PATH
。
- DENYLIST_STORAGE_LOCATION:拒绝名单在 Cloud Storage 中的位置。您只能输入一个 URI。必须采用以下格式输入 URI:
向
suggestionDenyListEntries:import
方法发出 POST 请求,其中包含gcsSource
对象。curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data @GCS_SOURCE_FILE \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataStores/DATA_STORE_ID/suggestionDenyListEntries:import"
- GCS_SOURCE_FILE:包含指向拒绝名单的
gcsSource
对象的文件的本地路径。 - PROJECT_ID:您的 Google Cloud 项目的项目编号或 ID。
- LOCATION:数据存储区的位置:
us
、eu
或global
。 - DATA_STORE_ID:与您的应用关联的数据存储区的 ID。
- GCS_SOURCE_FILE:包含指向拒绝名单的
导入拒绝名单后,系统需要 1-2 天的时间才能开始过滤建议。
清除拒绝名单
如需从数据存储区中清除拒绝名单,请执行以下操作:
向
suggestionDenyListEntries:purge
方法发出 POST 请求。curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataStores/DATA_STORE_ID/suggestionDenyListEntries:purge"
- PROJECT_ID:您的 Google Cloud 项目的项目编号或 ID。
- LOCATION:数据存储区的位置:
us
、eu
或global
。 - DATA_STORE_ID:与您的应用关联的数据存储区的 ID。
高级文档数据模型
Vertex AI Agent Builder 提供了一个用于自动补全的高级数据模型。此数据模型会利用 Google 大语言模型 (LLM),根据您导入的文档生成高质量的自动补全建议。
此功能尚处于实验阶段。如果您有兴趣使用此功能,请与您的 Google Cloud 客户支持团队联系,请求将您添加到许可名单。
此功能不适用于医疗保健搜索,也不适用于美国和欧洲多个区域。