与基本搜索模型相比,调参后的搜索模型可以提供质量更高的结果。
如果您有特定于行业或公司的查询,而一般的大语言模型无法很好地处理这些查询,那么搜索调参特别有用。可用于进一步训练搜索模型。
限制
搜索调整只能应用于非结构化数据存储区。
关于训练数据
如需对搜索模型进行调优,您首先需要整理训练数据。
训练数据应包含您预计最终用户会提出的查询,以及包含回答查询所需的相关信息(长度为 250 到 500 字)的文本片段。一个搜索查询可以与多个摘要相关联,前提是每个摘要都包含可回答该搜索查询的信息。
训练数据还应包含未与查询配对的文本片段,但这些文本片段在风格和长度方面与答案类似。这些没有关联查询的摘要提供了随机负样本,用于调整模型。Google 建议您至少提供 10,000 个此类代码段。
以下是一些用于描述您需要提供的训练数据的术语:
训练查询:您预计最终用户会提出的查询。请务必重点关注包含特定领域或公司术语的查询。
请至少提供 100 个。
提取式片段:摘要(通常为多个段落)必须从数据存储区中的文档中逐字提取。数据存储区中的所有文档统称为“语料库”。
您必须提供两种类型的提取型细分:
包含回答训练查询所需的相关信息的片段。这些细分受众群与查询存在正向匹配。
未与任何训练查询相关联的细分。这些细分在模型调优中用作随机负样本。
一两句话的长度不足以成为提取式片段;片段需要包含足够的上下文信息以供训练。例如,在回答“谁创立了 Google”这类查询时,仅提供“拉里·佩奇”这类简短摘要是不够的。如需查看足够长的细分示例,请参阅下表中的示例。
为每个查询提供至少一个提取式片段,并提供至少 1 万个额外的提取式片段。
相关性得分:相关性得分是非负整数,用于估计提取的片段与查询的相关程度。您需要为每个查询和提取的片段对提供一个得分值。得分为 0 表示提取的片段与查询完全无关。大于零的分数表示具有一定的相关性。对于简单评分,Google 建议为所有相关细分设置 1,为所有不相关细分设置 0。或者,如果您想对相关性进行排名,可以分配 0 到 10(例如)的相关性得分,其中 10 表示最相关的片段,0 表示完全不相关的片段。
提供至少 100 个相关得分,还可以选择性地提供其他不相关得分。
查询和提取段对示例
下表提供了一些查询和提取段对示例。这些一般性示例摘自维基百科。不过,为了获得有用的调整,您需要提供来自专有数据集的文档,这些文档包含特定于您业务的信息,并且不太容易在网上找到。
此表中的最后一对是零分对的示例,其中答案与查询无关。
训练查询 | 提取式片段 | 得分 |
---|---|---|
Google 的创始人是谁? | Google 由美国计算机科学家拉里·佩奇和谢尔盖·布林于 1998 年 9 月 4 日创立,当时他们是加利福尼亚州斯坦福大学的博士生。两人共同持有 Google 上市股票约 14% 的股份,并通过超级投票权股票控制着 56% 的股东投票权。该公司于 2004 年通过首次公开募股 (IPO) 上市。2015 年,Google 重组为 Alphabet Inc. 的全资子公司。Google 是 Alphabet 最大的子公司,也是 Alphabet 的互联网资产和权益的控股公司。2015 年 10 月 24 日,Sundar Pichai 被任命为 Google 首席执行官,接替了成为 Alphabet 首席执行官的 Larry Page。2019 年 12 月 3 日,Pichai 还成为了 Alphabet 的首席执行官。[...] 在最具价值的品牌榜单上,Google 在《福布斯》榜单中排名第二,在 Interbrand 榜单中排名第四。 | 1 |
血液离开右心室后会被泵送到哪里? | 含氧血液通过肺静脉离开肺部,然后返回心脏的左侧,从而完成肺循环。然后,血液进入左心房,左心房通过二尖瓣将血液泵入左心室。血液从左心室通过主动脉瓣进入主动脉。然后,血液通过体循环分布到全身,之后再次返回肺循环。动脉 主条目:肺动脉 血液从右心室通过半月形肺动脉瓣泵入左右主肺动脉(每侧肺各一条),然后分支成较小的肺动脉,分布在整个肺部。[...] 心脏分流是指心脏各部分之间存在非自然的连接,导致血液流动绕过肺部。 | 1 |
保龄球名人堂位于何处? | 世界保龄球作家协会 ( WBW) 国际保龄球名人堂成立于 1993 年,位于德克萨斯州阿灵顿国际保龄球园区的国际保龄球博物馆和名人堂内。历史国际保龄球博物馆和名人堂位于美国密苏里州圣路易斯市体育场广场 11 号,与圣路易斯红雀队名人堂博物馆共用同一栋建筑,直至 2008 年 11 月 8 日。它搬到了阿灵顿,并于 2010 年初重新开业。2012 年,WBW 与国际保龄球媒体协会合并。合并后,WBW 名人堂入选者成为 IBMA Luby 名人堂的一员。[...] 世界保龄球作家协会的官员组成了名人堂的董事会。][...] 获得票数最多的男性和女性入选。 | 1 |
为什么天空是蓝色的? | “Hello, World!”程序通常是一个简单的计算机程序,它会向屏幕(通常是控制台)输出(或显示)类似于“Hello, World!”的消息,同时忽略任何用户输入。这是一段小代码,采用的是大多数通用编程语言,用于说明语言的基本语法。“Hello, World!”程序通常是新编程语言的学生编写的第一个程序,但此类程序也可用于检查旨在编译或运行源代码的计算机软件是否已正确安装,以及其操作员是否了解如何使用该软件。 [...] 在 C 语言版本之前,Kernighan 于 1972 年撰写了《A Tutorial Introduction to the Language B》,其中包含该程序的第一个已知版本,该版本用作说明外部变量的示例 | 0 |
测试简介
训练完成后,系统会测试调优后的搜索,以确定调优是否改进了结果。您可以明确提供要测试的查询。如果您未提供测试查询,Vertex AI Search 会将 20% 的训练查询用作测试查询。
训练文件
训练数据需要上传到三个(可选四个)特定文件中:
三个训练文件(语料库文件、查询文件和训练标签文件)以及(可选)测试标签文件需要位于 Cloud Storage 中。文件的路径由 trainCustomMethod
调用中的字段定义。
语料库文件
语料库文件包含提取式片段:包含可用于回答查询文件中查询的信息的片段,以及在调整模型时用作随机负样本的许多其他片段。您应至少有 100 个包含查询答案的片段;查询可由多个片段回答。您还应至少有 10,000 个随机片段。
如果数据存储区中的文档包含的字数少于 500 字,您可以将整个文档用作分段。否则,请以程序化方式从数据存储区中的文档创建 250-500 字的随机片段,并将这些片段添加到语料库文件中。
语料库文件是一个 JSONL(JSON 行)文件,其中每一行都包含具有字符串值的字段 _id
和 text
。例如:
{"_id": "doc1", "text": "Google was founded on September 4, 1998, by American computer scientists Larry Page and Sergey Brin while they were PhD students at Stanford University in California. Together they own about 14% of its publicly listed shares and control 56% of its stockholder voting power through super-voting stock. The company went public via an initial public offering (IPO) in 2004. In 2015, Google was reorganized as a wholly owned subsidiary of Alphabet Inc. Google is Alphabet's largest subsidiary and is a holding company for Alphabet's internet properties and interests. Sundar Pichai was appointed CEO of Google on October 24, 2015, replacing Larry Page, who became the CEO of Alphabet. On December 3, 2019, Pichai also became the CEO of Alphabet. [...] On the list of most valuable brands, Google is 105 ranked second by Forbes and fourth by Interbrand."}
{"_id": "doc2", "text": "Oxygenated blood leaves the lungs through pulmonary veins, which return it to the left part of the heart, completing the pulmonary cycle. This blood then enters the left atrium, which pumps it through the mitral valve into the left ventricle. From the left ventricle, the blood passes through the aortic valve to the aorta. The blood is then distributed to the body through the systemic circulation before returning again to the pulmonary circulation. Arteries Main article: Pulmonary artery From the right ventricle, blood is pumped through the semilunar pulmonary valve into the left and right main pulmonary artery (one for each lung), which branch into smaller pulmonary arteries that spread throughout the lungs. [...] Cardiac shunt is an unnatural connection between parts of the heart that leads to blood flow that bypasses the lungs."}
{"_id": "doc3", "text": "The World Bowling Writers ( WBW ) International Bowling Hall of Fame was established in 1993 and is located in the International Bowling Museum and Hall of Fame , on the International Bowling Campus in Arlington , Texas. History The International Bowling Museum and Hall of Fame was located at 11 Stadium Plaza, St. Louis, Missouri, USA, and shared the same building with the St. Louis Cardinals Hall of Fame Museum, until November 8, 2008. It moved to Arlington and reopened in early 2010. In 2012, the WBW was merged with the International Bowling Media Association. After the merger, the WBW Hall of Fame inductees became part of the IBMA Luby Hall of Fame. officers of the World Bowling Writers, which formed the Hall's Board.][...] The man and woman who receive the most votes are elected."}
{"_id": "doc4", "text": "A \"Hello, World!\" program is generally a simple computer program which outputs (or displays) to the screen (often the console) a message similar to "Hello, World!" while ignoring any user input. A small piece of code in most general-purpose programming languages, this program is used to illustrate a language's basic syntax. A "Hello, World!" program is often the first written by a student of a new programming language, but such a program can also be used as a check to ensure that the computer software intended to compile or run source code is correctly installed, and that its operator understands how to use it. [...] The C-language version was preceded by Kernighan's own 1972 A Tutorial Introduction to the Language B, where the first known version of the program is found in an example used to illustrate external variables."}
文件大小上限为 50 万行。
查询文件
查询文件包含将用于调整模型的示例查询。每个查询都应在语料库文件中包含一个或多个相应的提取式摘要段落。您应至少提供 100 个正匹配查询。您还可以提供不相关的查询:这些查询对应于相关性得分为零的提取式摘要。
查询文件采用 JSONL 格式,并且与语料库文件具有相同的字段。
例如:
{"_id": "query1", "text": "who founded Google?"}
{"_id": "query2", "text": "where is blood pumped after it leaves the right ventricle?"}
{"_id": "query3", "text": "where is the bowling hall of fame located?"}
{"_id": "query4", "text": "why is the sky blue?"}
文件中的查询数量上限为 4 万。
训练标签
训练标签文件将查询与提取的片段相关联,并为每个查询和片段对评分。
如果测试标签文件不存在,则训练标签文件中的 20% 的查询将保留用于在训练后评估调整后的模型。
该文件包含查询的 ID、匹配(或不匹配)的提取片段的 ID,以及片段与查询的相关性得分。每个查询必须至少有一行;如果一个查询由两个片段回答,则该查询有两行。Score
是一个非负整数值。任何大于零的分数都表示文档与查询相关。数字越大表示相关性越高。如果省略得分,则默认值为 1。
训练标签文件是带有标题的 TSV(制表符分隔值)文件。该文件必须包含 query-id
、corpus-id
和 score
列。query-id
是一个字符串,与查询文件中的 _id
键匹配,corpus-id
是一个字符串,与语料库文件中的 _id
匹配。
例如:
query-id corpus-id score
query1 doc1 1
query2 doc2 1
query3 doc3 1
query3 doc9 1
query4 doc4 0
训练标签文件必须包含至少 100 个唯一的查询 ID。训练标签文件中的查询 ID 数量与测试标签文件中的查询数量之和必须小于 50 万。
测试标签
与训练标签文件类似,此可选文件包含查询和提取式片段的 ID 以及相关性得分。它包含的查询比训练标签文件中的查询更少且不同。如果存在,则使用文件中的查询和提取段对来评估微调。如果测试标签文件不存在,则使用训练标签文件中的查询和提取段对进行评估。
此文件的格式与训练标签文件的格式相同。
例如:
query-id corpus-id score
query200 doc200 1
query201 doc201 1
query202 doc202 1
虽然测试标签文件是可选的,但如果您提供该文件,则其中必须包含至少三个唯一的查询 ID。
准备工作
为应用开启企业版功能。
调整搜索
如需使用自己的训练数据对搜索模型进行调优,请按以下步骤操作。
控制台
如需使用 Google Cloud 控制台调优模型,请按以下步骤操作:
准备训练数据和(可选)测试数据文件。使用训练文件中所述的格式。
将文件上传到 Cloud Storage。
在 Google Cloud 控制台中,前往 AI Applications 页面。
在应用页面上,点击您希望获得训练后模型的应用的名称。
在导航菜单中,点击配置。
点击调整标签页。
点击对基础模型进行调参。
指定您在上一步 1 和 2 中准备的语料库、查询、训练和(可选)测试文件。
点击开始调优。
刷新页面,即可在调整标签页的近期调整活动表格中查看状态。
REST
如需使用 trainCustomModel
方法调整数据存储区,请按以下步骤操作:
准备训练数据(以及可选的测试数据)文件。使用训练文件中所述的格式。
将文件放入 Cloud Storage 存储桶中。
运行以下 curl 命令,将文件从 Cloud Storage 存储桶上传到 Vertex AI Search:
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:trainCustomModel" \ -d '{ "gcsTrainingInput": { "corpusDataPath": "CORPUS_JSONL_GCS_PATH", "queryDataPath": "QUERY_JSONL_GCS_PATH", "trainDataPath": "TRAIN_TSV_GCS_PATH", "testDataPath": "TEST_TSV_GCS_PATH" }, "modelType": "search-tuning" }'
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目的 ID。DATA_STORE_ID
:要调整的数据存储区的 ID。CORPUS_JSONL_GCS_PATH
:Cloud Storage 中的语料库 JSONL 文件路径,例如gs://my-bucket/corpus.jsonl
。QUERY_JSONL_GCS_PATH
:Cloud Storage 中的查询 JSONL 文件路径,例如gs://my-bucket/query.jsonl
。TRAIN_TSV_GCS_PATH
:Cloud Storage 中的训练标签 TSV 文件路径,例如gs://my-bucket/train.tsv
。TEST_TSV_GCS_PATH
:一个可选字段,用于指定测试标签 TSV 文件的 Cloud Storage 路径,例如gs://my-bucket/test.tsv
。如果您没有测试标签文件,请移除testDataPath
字段或将其留空。
如需了解此方法的一般信息,请参阅
trainCustomModel
。上传数据文件后,系统会自动开始调整。
点击查看 curl 命令和响应示例。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" "https://discoveryengine.googleapis.com/v1/projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321:trainCustomModel" -d '{ "dataStore": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321", "gcsTrainingInput": { "corpusDataPath": "gs://my-bucket/corpus.jsonl", "queryDataPath": "gs://my-bucket/query.jsonl", "trainDataPath": "gs://my-bucket/train.tsv" }, "modelType": "search-tuning" }
{ "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/operations/train-custom-model-6071430366161939774", "metadata": { "@type": "type.googleapis.com/google.cloud.discoveryengine.v1.TrainCustomModelMetadata" }, "response": { "@type": "type.googleapis.com/google.cloud.discoveryengine.v1.TrainCustomModelResponse", "modelStatus": "in-progress" } }
记下
trainCustomModel
方法返回的name
值,然后按照获取长时间运行的操作的详细信息中的说明查看搜索调优操作何时完成。
Python
如需了解详情,请参阅 AI Applications Python API 参考文档。
如需向 AI 应用进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
测试调整后的搜索功能,并将其用于单个搜索查询
调优完成后,您可以比较使用调优后的模型和使用基础模型运行相同查询的结果,从而测试调优效果。
控制台
如需使用 Google Cloud 控制台预览调优后模型的行为,请按以下步骤操作:
前往调整标签页:
在 Google Cloud 控制台中,前往 AI Applications 页面。
点击要预览的应用的名称。
点击配置。
点击调整标签页。
点击调优后的模型,然后使用右侧的预览面板来提出使用调优后模型的查询。
点击基础模型,然后使用右侧的预览面板,通过原始模型进行查询。
比较结果的质量。
REST
如需评估调优效果,您可以先将 enableSearchAdaptor
字段设置为 true
,然后设置为 false
,并比较结果。将 enableSearchAdaptor
字段设置为 true
表示相应查询使用经过调优的搜索版本。
如需制作使用已调参模型的搜索查询,请执行以下操作:
在查询方法调用中,将
customFineTuningSpec
字段中的enableSearchAdaptor
字段设置为true
。例如:
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/engines/APP_ID/servingConfigs/default_search:search" \ -d '{ "query": "QUERY", "customFineTuningSpec": { "enableSearchAdaptor": true } }'
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目的 ID。APP_ID
:您要查询的应用的 ID。
如需详细了解搜索查询,请参阅获取搜索结果和 servingConfigs.search
方法。
Python
如需了解详情,请参阅 AI Applications Python API 参考文档。
如需向 AI 应用进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
开启调谐搜索
在测试调整后的搜索功能后,如果您决定将其用于所有搜索查询,则可以将其设为默认搜索模型。
控制台
如需将调整后的模型设为默认模型并将其应用于主预览页面、微件和 API 调用,请按以下步骤操作:
前往调整标签页:
在 Google Cloud 控制台中,前往 AI Applications 页面。
点击该应用的名称。
点击配置。
点击调整标签页。
点击已调优的模型。
点击发布。
REST
将调优后的模型设置为默认模型后,您无需像上述流程中那样在搜索查询中指定 customFineTuningSpec
字段。
如需默认针对所有搜索查询使用调整后的搜索版本,请按以下步骤操作:
如需将调整后的搜索设置为默认模型,请运行以下 curl 命令:
curl -X PATCH \ -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/engines/APP_ID/servingConfigs/default_search?updateMask=customFineTuningSpec.enableSearchAdaptor" \ -d '{ "customFineTuningSpec": { "enableSearchAdaptor": true } }'
如需了解此方法的一般信息,请参阅
servingConfigs.patch
。
Python
如需了解详情,请参阅 AI Applications Python API 参考文档。
如需向 AI 应用进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
关闭调整后的搜索结果
如果您不想再使用调整后的搜索版本,例如,如果您发现调整后的搜索结果与调整前相比没有更好,甚至更差,那么您可以停用调整后的搜索。
控制台
如需恢复使用基础模型作为默认模型,请按以下步骤操作:
前往调整标签页:
在 Google Cloud 控制台中,前往 AI Applications 页面。
点击该应用的名称。
点击配置。
点击调整标签页。
点击基本模型。
点击发布。
REST
如需停止使用调优后的模型,请运行与上述命令类似的 curl 调用,但将 enableSearchAdaptor
设置为 false
:
运行以下 curl 命令:
curl -X PATCH \ -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/engines/APP_ID/servingConfigs/default_search?updateMask=customFineTuningSpec.enableSearchAdaptor" \ -d '{ "customFineTuningSpec": { "enableSearchAdaptor": false } }'
如需了解此方法的一般信息,请参阅
servingConfigs.patch
。
Python
如需了解详情,请参阅 AI Applications Python API 参考文档。
如需向 AI 应用进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
后续步骤
- 如需了解搜索调优对搜索质量的影响,请评估搜索质量。如需了解详情,请参阅评估搜索质量。