在 Azure AI 搜索中将评分配置文件与语义排序器配合使用

注释

此功能目前处于公开预览状态。 此预览版在提供时未附带服务级别协议,建议不要用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅适用于 Azure 预览版的补充使用条款

较新的 Azure AI 搜索 API 版本和 Azure SDK 包支持将 计分配置文件语义排名器 集成。 语义排名器会添加新字段, @search.rerankerBoostedScore以帮助保持一致的相关性,并更好地控制搜索管道中的最终排名结果。

在此集成之前,评分配置文件仅影响 BM25-rankedRRF-ranked 搜索结果的初始 L1 排名阶段。 但是,一旦语义 L2 排名器重新对结果进行排名,这些提升就不再有任何影响。 语义重新排名过程完全忽略了评分配置文件。

将评分配置文件与语义排序器集成可通过将评分配置文件应用于 L2 排名的结果来处理此行为,从而确保将提升考虑在内。

先决条件

使用评分配置文件的语义配置的工作原理是什么?

执行与评分配置文件相关的语义查询时,将为搜索结果中的每个文档生成一个第三搜索分数,其值为 @search.rerankerBoostedScore。 此增强的分数是通过将评分配置文件应用到现有的重新评分器分数后计算而得出的,并不像正常的重新评分器分数那样有保证的范围(0-4),实际得分可能会明显高于 4。

从 API 版本 2025-05-01-preview开始,语义结果默认排序 @search.rerankerBoostedScore 。 如果未指定属性 rankingOrderboostedReRankerScore 则为语义配置中的默认值。

启用此功能后,索引中定义的计分配置文件将应用于初始排名阶段。 它可以提升以下结果:

  • 基于文本的查询(BM25 或 RRF)
  • 矢量查询的文本部分
  • 合并这两种类型的混合查询

然后,语义排名器将重新处理前 50 个结果。 重新排名后,它还会重新应用评分配置文件,因此提升会影响最终的结果顺序。

在语义配置中启用评分配置文件

若要实现将评分配置文件与语义排名配合使用,请通过设置语义配置的 2025-05-01-preview 属性,使用预览 API 版本 rankingOrder 来更新索引。 使用 PUT 方法更新索引的修订内容。 无需重新生成索引。

PUT https://{service-name}.search.windows.com/indexes/{index-name}?api-version=2025-05-01-Preview
{
  "semantic": {
    "configurations": [
      {
        "name": "mySemanticConfig",
        "rankingOrder": "boostedReRankerScore"
      }
    ]
  }
}

在语义配置中禁用评分配置文件

若要选择退出按语义重排器提升分数排序,请将 rankingOrder 字段设置为 reRankerScore 语义配置中的值。

PUT https://{service-name}.search.windows.com/indexes/{index-name}?api-version=2024-05-01-Preview
{
  "semantic": {
    "configurations": [
      {
        "name": "mySemanticConfig",
        "rankingOrder": "reRankerScore"
      }
    ]
  }
}

即使选择退出排序依据 @search.rerankerBoostedScore,该 boostedReRankerScore 字段仍然在响应中生成,但它不再用于对结果进行排序。

示例查询和响应

从一条指定了计分配置文档的语义查询开始。 该查询使用新的预览 REST API,并面向已将 rankingOrder 设置为 boostedReRankerScore 的搜索索引。

POST https://{service-name}.search.windows.com/indexes/{index-name}/docs/search?api-version=2025-05-01-Preview
{
  "search": "my query to be boosted",
  "scoringProfile": "myScoringProfile",
  "queryType": "semantic"
}

响应包括新的 rerankerBoostedScore,以及 L1 @search.score 和 L2 @search.rerankerSocre。 结果按 @search.rerankerBoostedScore 排列。

{
  "value": [
    {
      "@search.score": 0.63,
      "@search.rerankerScore": 2.98,
      "@search.rerankerBoostedScore": 7.68,
      "content": "boosted content 2"
    },
    {
      "@search.score": 1.12,
      "@search.rerankerScore": 3.12,
      "@search.rerankerBoostedScore": 5.61,
      "content": "boosted content 1"
    }
  ]
}