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

注释

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

较新的 Azure AI 搜索预览版 REST API 版本和 Azure SDK 预览包支持将 计分配置文件语义排名器 配合使用。 有了这个功能,评分方案会最后处理。 如果没有此功能,语义排名将在最后阶段进行处理。

为了确保评分配置文件提供确定分数,语义排名器会添加新的响应字段, @search.rerankerBoostedScore用于对语义排名结果应用评分配置文件逻辑。 在包括 @search.score 的一级排名、@search.rerankerScore 的语义排序器排名以及 @search.reRankerBoostedScore 的搜索结果中,结果将根据 @search.reRankerBoostedScore 进行排序。

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

先决条件

小窍门

对于所有预览功能,建议查看 Azure SDK 更改日志以检查功能可用性: Python SDK 更改日志.NET SDK 更改日志Java SDK 更改日志、JavaScriptSDK 更改日志

局限性

提升语义排序结果仅适用于评分配置文件的函数。 如果计分配置文件仅包含加权文本字段,则无法进行分值提升。

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

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

从 API 版本 2025-05-01-preview 开始,如果存在计分配置文件,语义结果默认已按照 @search.rerankerBoostedScore 排序。 如果未指定属性 rankingOrderBoostedReRankerScore 则为语义配置中的默认值。

在此方案中,计分配置文件被使用了两次。

  1. 首先,在索引中定义的计分配置文件在初始 L1 排名阶段使用,从而提升以下结果:

    • 基于文本的查询(BM25 或 RRF)
    • 矢量查询的文本部分
    • 合并这两种类型的混合查询
  2. 接下来,语义排名器重新对前 50 个结果进行评分,从而提升与顶部更相关的语义匹配。 此步骤可以清除计分配置文件的好处。 例如,如果基于新鲜度进行了提升,那么语义排序将用其自身的逻辑来替代这种提升,以确定什么是最相关的。

  3. 最后,重新排序后,再次应用评分配置文件,从而恢复对最终结果顺序的影响力。 如果使用新鲜度提升,语义排名的结果会基于新鲜度重新评分。

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

若要启用具有语义排名的计分配置文件,请使用最新的预览版 REST API(2025-08-01-preview)通过设置 rankingOrder 其语义配置的属性来更新索引。 使用 PUT 方法更新索引的修订内容。 无需重新生成索引。

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

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

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

PUT https://{service-name}.search.windows.com/indexes/{index-name}?api-version=2025-08-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-08-01-preview
{
  "search": "my query to be boosted",
  "scoringProfile": "myScoringProfile",
  "queryType": "semantic"
}

响应包括新的 rerankerBoostedScore,以及 L1 @search.score 和 L2 @search.rerankerScore。 结果按 @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"
    }
  ]
}