通过搜索调整改进搜索结果

与基本搜索相比,经过调优的搜索模型可以为您提供更优质的结果 模型。

如果您有特定于行业或公司的查询,而一般的大语言模型无法很好地处理这些查询,那么搜索调参特别有用。它可用于进一步 训练搜索模型。

限制

搜索优化只能应用于非结构化数据存储区。

训练数据简介

如需对搜索模型进行调优,首先需要整理训练数据。

训练数据应包含您希望最终用户进行的查询 以及一段长度为 250 到 500 字的文本片段, 信息。 一个查询可以与多个摘要相关联,前提是每个摘要都包含可回答该查询的信息。

训练数据还应包含未与 Google 训练的 但在风格和长度方面与答案相似。 这些不含相关查询的摘要可提供随机否定关键字 来调整模型。Google 建议您至少提供 10,000 个此类代码段。

下面列出了一些术语,用于描述您需要提供的训练数据:

  • 训练查询:您预计最终用户会询问的查询。请务必重点关注包含特定领域或公司术语的查询。

    请提供至少 100 个字符。

  • 提取片段:摘要(通常是多个段落)必须从数据存储区中的文档中逐字提取。数据存储区中的所有文档统称为“语料库”。

    您必须提供两种类型的提取细分:

    • 包含回答训练所需相关信息的细分 查询。这些是与查询存在正匹配的细分。

    • 未与任何训练查询相关联的细分。这些片段会在模型调优中用作随机负例。

    一两句话的长度不足以作为提取片段;片段需要包含足够的上下文以进行训练。例如,在回答“谁创立了 Google”这样的查询时,仅提供“Larry Page”这样的简短摘要是不够的。有关足够长片段的示例,请参阅 示例表。

    请为每个查询提供至少一个摘要片段,并提供至少 1 万个其他摘要片段。

  • 相关性得分:相关性得分是指非负整数,用于估算摘要片段与查询的相关性。您需要为每个查询和摘要片段对提供一个得分值。得分为 0 表示摘要片段与查询完全不相关。得分大于零表示存在一定相关性。对于简单的评分,Google 建议 1 表示所有相关细分,0 表示不相关细分。或者,如果您想对相关性进行排名,可以为相关性分配 0 到 10 的评分(例如),其中 10 表示相关性最高,0 表示完全不相关。

    提供至少 100 个相关得分,以及(可选)其他不相关得分。

查询和提取细分对示例

下表提供了一些查询和提取式片段对的示例。以下一般示例摘自维基百科。不过,为了进行有用的优化,您需要提供来自专有数据集的文档,这些文档应包含特定于贵商家的信息,且在网络上不易找到。

此表中的最后一对是得分为零的示例对,其中答案与询问无关。

培训查询 提取片段 得分
谁创立了 Google? Google 由美国计算机科学家拉里·佩奇和谢尔盖·布林于 1998 年 9 月 4 日创立,当时他们还是加利福尼亚州斯坦福大学的博士生。他们合计持有 Google 约 14% 的已上市股票,并通过拥有超级投票权的股票控制着 56% 的股东投票权。通过 于 2004 年通过首次公开募股 (IPO) 上市。2015 年, Google 已重组为 Alphabet Inc. 的全资子公司。 Alphabet 的最大子公司,也是 Alphabet 互联网业务的控股公司 媒体资源和兴趣。Sundar Pichai 于 10 月被任命为 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 教程 语言 B 简介,即该程序的第一个已知版本 可以在用于说明外部变量的示例中 0

关于测试

训练结束后,系统会测试调整后的搜索,以确定调整是否提升了 结果。您可以明确提供要测试的查询。如果您 测试查询,则 Vertex AI Search 会使用 20% 的 将训练查询作为测试查询。

训练文件

训练数据需要分三个(可选四个)特定文件上传:

三个训练文件(语料库文件、查询文件和训练标签文件)以及(可选)测试标签文件都需要位于 Cloud Storage 中。 文件由 trainCustomMethod 调用中的字段定义。

语料库文件

语料库文件包含提取片段: 包含用于回答查询文件中查询的信息的细分,以及 调整模型时将许多其他细分用作随机负类别。 您应至少有 100 个包含查询回答的细分;多个细分可以回答一个查询。您还应该至少有 10,000 个随机事件 细分。

如果数据存储区中的文档包含的单词少于 500 个,您可以使用 将整个文档拆分为多个部分。否则,请以程序化方式从数据存储区中的文档中随机创建 250-500 个字的片段,并将其添加到语料库文件中。

语料库文件是一个 JSONL(JSON 行)文件,其中每行都包含一些字段 _idtext(带有字符串值)。 例如:

  {"_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?"}

文件中允许的查询数量上限为 40,000。

训练标签

训练标签文件会将查询与提取片段相关联,并为每个查询和片段对评分。

如果没有测试标签文件,则会将训练标签文件中的 20% 查询预留用于在训练后评估经过微调的模型。

该文件包含查询的 ID 及其匹配(或不匹配)的 ID 提取的细分以及细分与查询的相关性得分。 每个查询必须至少包含一行;如果某个查询由两个片段回答,则该查询有两行。“Score”为非负数 整数值。任何大于零的分数都表示文档与查询相关。数字越大表示相关性越高。如果 则默认值为 1。

训练标签文件是带有标题的 TSV(制表符分隔值)文件。该文件必须包含 query-idcorpus-idscore 列。通过 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 数量加上测试标签文件中的查询数量必须小于 500,000。

测试标签

与训练标签文件一样,此可选文件包含查询的 ID 以及提取的细分和相关性得分。与训练标签文件相比,它包含的查询更少且不同。如果存在,则查询和提取 文件中的片段对用于评估调优。如果没有测试标签文件,则系统会使用训练标签文件中的查询和提取式片段对进行评估。

此文件与训练标签文件的格式相同。

例如:

  query-id  corpus-id   score
  query200    doc200    1
  query201    doc201    1
  query202    doc202    1

虽然测试标签文件是可选的,但如果您提供此文件,则其中必须包含至少三个唯一的查询 ID。

准备工作

为应用启用企业版功能

如需使用您自己的训练数据对搜索模型进行调优,请按以下步骤操作。

控制台

如需使用 Google Cloud 控制台对模型进行调参,请按以下步骤操作:

  1. 准备训练数据和(可选)测试数据文件。使用训练文件中所述的格式。

  2. 将文件上传到 Cloud Storage

  3. 在 Google Cloud 控制台中,前往 Agent Builder 页面。

    Agent Builder

  4. 应用页面上,点击您要接受训练的应用的名称 模型。

  5. 在导航菜单中,点击配置

  6. 点击调整标签页。

  7. 点击对基本模型进行调参

  8. 指定您要创建的语料库、查询、训练和(可选)测试文件 在前面的步骤 1 和步骤 2 中准备的 Feed。

  9. 点击开始调优

  10. 刷新页面,然后在调优标签页的近期调优活动表格中查看状态。

REST

如需使用 trainCustomModel 方法调整数据存储区, 请按以下步骤操作:

  1. 准备训练数据(以及可选的测试数据)文件。使用 训练文件中介绍的格式。

  2. 将文件放入 Cloud Storage 存储桶。

  3. 运行以下 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_JSONL_GCS_PATH",
     "testDataPath": "TEST_JSONL_GCS_PATH"
    },
    "modelType": "search-tuning"
    }'
    

    替换以下内容:

    • PROJECT_ID:您的 Google Cloud 项目的 ID。

    • DATA_STORE_ID:您要调整的数据存储空间的 ID。

    • CORPUS_JSONL_GCS_PATH: Cloud Storage 中的 corpus JSONL 文件路径,例如 gs://my-bucket/corpus.jsonl

    • QUERY_JSONL_GCS_PATH:Cloud Storage 中的查询 JSONL 文件路径,例如 gs://my-bucket/query.jsonl

    • TRAIN_JSONL_GCS_PATH训练标签 TSV 文件路径位于 Cloud Storage - 例如 gs://my-bucket/train.tsv

    • TEST_JSONL_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"
    }
  4. 记下 trainCustomModel 方法返回的 name 值,然后按照获取长时间运行的操作的详细信息中的说明查看搜索优化操作何时完成。

测试调整后的搜索并将其用于具体搜索查询

调参完成后,您可以通过比较 使用经调整的模型运行的查询,以及使用 基本模型。

控制台

如需使用 Google Cloud 控制台预览经过调优的模型的行为,请按以下步骤操作:

  1. 转到微调标签页:

    1. 在 Google Cloud 控制台中,前往 Agent Builder 页面。

      Agent Builder

    2. 点击您要预览的应用的名称。

    3. 点击配置

    4. 点击调整标签页。

  2. 点击经调参的模型,然后使用右侧的预览面板 使用经过调整的模型的查询。

  3. 点击基本模型,然后使用右侧的预览面板执行以下操作: 使用原始模型进行查询。

  4. 比较结果的质量。

REST

如需评估调整效果,您可以将 enableSearchAdaptor 字段先设置为 true,然后再设置为 false,然后比较结果。将 enableSearchAdaptor 字段设置为 true 表示为该查询使用经过优化的搜索版本。

如需使用经调参的模型的搜索查询,请执行以下操作:

  1. 在查询方法调用中,将 enableSearchAdaptor 字段设置为 将 customFineTuningSpec 字段设置为 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 方法。

开启“优化搜索”

测试经过优化的搜索功能后,如果您决定要将其用于所有搜索查询,可以将其设为默认搜索模型。

控制台

如需将经过调优的模型设为默认模型并将其应用于“预览”主页面、微件和 API 调用,请按以下步骤操作:

  1. 转到微调标签页:

    1. 在 Google Cloud 控制台中,前往 Agent Builder 页面。

      Agent Builder

    2. 点击应用名称。

    3. 点击配置

    4. 点击调整标签页。

  2. 点击经过调优的模型

  3. 点击发布

REST

将经过调优的模型设为默认模型后,您无需像上一个步骤中那样在搜索查询中指定 customFineTuningSpec 字段。

若要将搜索的优化版本默认用于所有搜索查询,请遵循 具体步骤:

  1. 要将调整后的搜索设置为默认模型,请运行以下 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

关闭微调搜索功能

如果您不想再使用经过优化的搜索版本(例如,您发现结果与优化前没有任何改善或变得更差),则可以停用经过优化的搜索。

控制台

如需恢复将基本模型用作默认模型,请按以下步骤操作:

  1. 转到微调标签页:

    1. 在 Google Cloud 控制台中,前往 Agent Builder 页面。

      Agent Builder

    2. 点击应用名称。

    3. 点击配置

    4. 点击调整标签页。

  2. 点击基本模型

  3. 点击发布

REST

要停止使用调整后的模型,请运行类似于上一个调用的 curl 调用, 但将 enableSearchAdaptor 设置为 false

  1. 运行以下 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

后续步骤

  • 如需了解搜索优化对搜索质量的影响,请评估搜索质量。如需了解详情,请参阅 评估搜索质量