共用方式為

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

可以对语义排名搜索结果应用评分配置文件,并且评分配置文件将在最后处理。

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

先决条件

  • Azure AI 搜索,基本定价层或更高层,且已启用语义排序器

  • 具有语义配置和计分配置文件的搜索索引,其中语义配置指定"rankingOrder": "boostedRerankerScore",计分配置文件指定函数

局限性

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

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

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

如果存在评分配置文件,默认情况下会对语义结果按 @search.rerankerBoostedScore 排序。 如果未指定属性 rankingOrderBoostedRerankerScore 则为语义配置中的默认值。

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

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

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

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

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

若要为语义排名的结果启用计分配置文件,请通过设置其语义配置的属性rankingOrder。 使用 PUT 方法更新索引的修订内容。 无需重新生成索引。

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

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

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

PUT /indexes/{index-name}?api-version=2025-09-01
{
  "semantic": {
    "configurations": [
      {
        "name": "mySemanticConfig",
        "rankingOrder": "reRankerScore"
      }
    ]
  }
}

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

示例查询和响应

从指定评分配置文件的语义查询开始。 查询针对的是rankingOrder设置为boostedRerankerScore的搜索索引。

POST /indexes/{index-name}/docs/search?api-version=2025-09-01
{
  "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"
    }
  ]
}