本页介绍了 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 开启或关闭自动补全功能
如需为 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/global/collections/default_collection/dataStores/DATA_STORE_ID:completeQuery?query=QUERY_STRING"
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目的编号或 ID。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/global/collections/default_collection/dataStores/DATA_STORE_ID:completeQuery?query=QUERY_STRING&query_model=QUERY_SUGGESTIONS_MODEL"
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目的编号或 ID。DATA_STORE_ID
:与您的应用关联的数据存储空间的唯一 ID。QUERY_STRING
:用于提取建议的预测性输入。AUTOCOMPLETE_MODEL
:自动补全数据QUERY_SUGGESTIONS_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/global/dataStores/DATA_STORE_ID/suggestionDenyListEntries:import"
替换以下内容:
DENYLIST_FILE
:包含屏蔽名单字词的 JSON 文件的本地路径。PROJECT_ID
:您的 Google Cloud 项目的编号或 ID。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
。
- 将
向
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/global/dataStores/DATA_STORE_ID/suggestionDenyListEntries:import"
替换以下内容:
GCS_SOURCE_FILE
:包含指向拒绝名单的gcsSource
对象的文件的本地路径。PROJECT_ID
:您的 Google Cloud 项目的编号或 ID。DATA_STORE_ID
:与您的应用关联的数据存储空间的 ID。
导入拒绝名单后,系统需要 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/global/dataStores/DATA_STORE_ID/suggestionDenyListEntries:purge"
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目的编号或 ID。DATA_STORE_ID
:与您的应用关联的数据存储空间的 ID。
使用导入的自动补全建议列表
您可以选择提供自己的自动补全建议列表,而不是使用自动补全数据模型生成的自动补全建议。
对于大多数应用,使用自动补全数据模型之一生成的建议可获得更好的结果。不过,在某些罕见情况下,模型的建议可能不符合您的需求,而提供单独的建议列表可为用户提供更好的自动补全体验。
例如,一家小型在线书店可以将其图书列表导入为自动补全建议。当客户开始在搜索栏中输入内容时,自动补全建议始终是从导入的列表中提取的图书名。当图书列表发生变化时,书店会清除当前列表并导入新列表。列表中的摘录可能如下所示:
{"suggestion": "Wuthering Heights", "globalScore": "0.52" },
{"suggestion": "The Time Machine", "globalScore": "0.26" },
{"suggestion": "Nicholas Nickleby", "globalScore": "0.38" },
{"suggestion": "A Little Princess", "globalScore": "0.71" },
{"suggestion": "The Scarlet Letter", "globalScore": "0.32" }
globalScore
是一个介于 [0, 1] 范围内的浮点数,用于对建议进行排名。或者,您也可以使用 frequency
得分,即大于 1 的整数。当 globalScore
不可用时,系统会使用 frequency
得分对建议进行排名。
设置和导入自动补全建议
如需设置和导入 BigQuery 中的自动补全建议列表,请按以下步骤操作:
创建建议列表并将其加载到 BigQuery 表中。
您至少需要将每个建议作为字符串提供,并提供全局得分或频率。
请使用以下表架构来创建建议列表:
[ { "description": "The suggestion text", "mode": "REQUIRED", "name": "suggestion", "type": "STRING" }, { "description": "Global score of this suggestion. Control how this suggestion would be scored and ranked. Set global score or frequency; not both.", "mode": "NULLABLE", "name": "globalScore", "type": "FLOAT" }, { "description": "Frequency of this suggestion. Used to rank suggestions when the global score is not available.", "mode": "NULLABLE", "name": "frequency", "type": "INTEGER" } ]
如需了解如何创建 BigQuery 表并使用自动补全建议列表加载表,请参阅 BigQuery 文档。
从 BigQuery 导入列表。
向
completionSuggestions:import
方法发出 POST 请求,其中包含bigquerySource
对象。curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dataStores/DATA_STORE_ID/completionSuggestions:import" \ -d '{ "bigquery_source": {"project_id": "PROJECT_ID_SOURCE", "dataset_id": "DATASET_ID", "table_id": "TABLE_ID"} }'
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目的编号或 ID。DATA_STORE_ID
:Vertex AI Search 数据存储区的 ID。PROJECT_ID_SOURCE
:包含要导入的数据集的项目。DATASET_ID
:要导入的建议列表的数据集 IDTABLE_ID
:要导入的建议列表的表 ID
可选:记下返回的
name
值,然后按照获取有关长时间运行的操作的详细信息中的说明查看导入操作何时完成。如果您尚未为该应用启用自动补全功能,请按照更新自动补全设置中的步骤操作。请务必将启用自动补全设置为立即。
等待几天时间,以便系统完成编入索引,并显示导入的建议。
发送自动补全请求
如需发送自动补全请求以返回导入的建议,而不是自动补全模型中的建议,请执行以下操作:
- 按照相应步骤向其他模型发送自动补全请求,并将
AUTOCOMPLETE_MODEL
设置为imported-suggestion
。
清除导入的自动补全建议列表
在导入新的自动补全建议列表之前,请移除现有列表。
如需清除现有的自动补全建议列表,请按以下步骤操作:
向
completionSuggestions:purge
方法发出 POST 请求。curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dataStores/DATA_STORE_ID/completionSuggestions:purge"
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目的编号或 ID。DATA_STORE_ID
:与您的应用关联的数据存储空间的 ID。
高级文档数据模型
Vertex AI Agent Builder 提供了一个用于自动补全的高级数据模型。此数据模型会利用 Google 大语言模型 (LLM),根据您导入的文档生成高质量的自动补全建议。
此功能尚处于实验阶段。如果您有兴趣使用此功能,请与您的 Google Cloud 客户支持团队联系,请求将您添加到许可名单中。
高级文档数据模型不适用于医疗保健搜索,也不适用于美国和欧盟多区域。