Azure AI 搜索中的语义排名

在 Azure AI 搜索中,“语义排序器”功能通过使用 Microsoft 语言理解模型对搜索结果重新排名来显著提高搜索相关性。 语义排名器还内置于 代理检索中。 本文是一个大致简介,帮助你了解语义排序器的行为和优势。

语义排名器是一项按使用量计费的高级特性,但在免费层级中,可以在符合服务限制的情况下免费使用。 建议阅读本文以了解背景信息,但如果希望立即开始使用,请按照这些步骤操作。

什么是语义排名?

语义排名器是查询端功能的集合,可提高基于文本的查询、矢量查询的文本部分和混合查询的初始 BM25 排名RRF 排名 搜索结果的质量。 语义排名以三种方式扩展查询执行管道:

  • 首先,它始终在使用 BM25 或倒数排序融合 (RRF) 评分的初始结果集的基础上添加二次排名。 此辅助排名使用从Microsoft必应改编的多语言深度学习模型来提升与语义上最相关的结果。

  • 其次,它会返回标题,并选择性地提取响应中的答案,你可以在搜索页面上呈现这些答案,以提高用户的搜索体验。

  • 第三,如果启用查询重写,它会将初始查询字符串扩展到多个语义上相似的查询字符串。

辅助排名和“答案”适用于查询响应。 查询重写是查询请求的一部分。

下面是语义重新排序器的功能:

能力 DESCRIPTION
L2 排名 利用查询的语境或语义,根据预排序结果计算新的相关性分数。
语义标题和重点 从字段中提取最能总结内容的逐字句子和短语,并突出显示关键段落,以便于扫描。 当单个内容字段对“搜索结果”页来说过于密集时,用于总结结果的标题就非常有用了。 突出显示的文本会提升最相关的术语和短语,这样用户就能够快速确定匹配被视为相关的原因。
语义答案 从语义查询返回的可选附加子结构。 它为看起来像问题的查询提供了直接的答案。 它要求文档包含带有答案特征的文本。
查询重写 使用文本查询或矢量查询的文本部分,语义排名器最多创建 10 个查询变体,可能更正拼写错误或拼写错误,或者使用生成的同义词重新排列查询。 重写的查询在搜索引擎上运行。 结果使用 BM25 或 RRF 评分进行评分,然后由语义排序器重新评分。

语义排序器的工作原理

语义排名工具将查询和结果发送到由微软托管的语言理解模型。 它会扫描以便找到更佳匹配项。

下图说明了这一概念。 它具有不同的含义,具体取决于上下文是财务、法律、地理还是语法。 通过语言理解,语义排名器检测上下文并提升适合查询意向的结果。

上下文的矢量表示形式的插图。

语义排名使用大量资源和时间。 为了在查询作的预期延迟内完成处理,系统将合并和减少语义排名器的输入。 此方法有助于尽快完成重新调整步骤。

语义排名有三个步骤:

  1. 收集和汇总输入
  2. 使用语义排名器对结果进行评分
  3. 输出重新评分的结果、标题和答案

系统如何收集和汇总输入

在语义排名中,查询子系统将搜索结果作为摘要和排名模型的输入传递。 由于排名模型具有输入大小约束并且是处理密集型的,因此必须将搜索结果进行结构化(总结)并调整其大小以便高效处理。

  1. 语义排名器从文本查询的 BM25 排名结果 或矢量或混合查询的 RRF 排名结果 开始。 重排序任务仅使用文本。 即使结果包含超过 50 个结果,也只有前 50 个结果进入语义排名。 通常,语义排名使用信息字段和描述性字段。

  2. 对于搜索结果中的每个文档,摘要模型最多接受 2000 个标记,其中一个标记大约为 10 个字符。 模型将语义 配置中列出的“title”、“keyword”和“content”字段的输入组合在一起。

  3. 系统剪裁过多的字符串,以确保总长度满足汇总步骤的输入要求。 此筛选操作说明了为何必须按优先级顺序向语义配置添加字段。 如果你有非常大的文档,且包含文本密集型字段,则系统会忽略最大限制后的任何内容。

    语义域 标记限制
    标题 128 个标记
    "关键字 128 个标记
    内容 剩余标记
  4. 摘要输出是每个文档的摘要字符串,由每个字段中最相关的信息组成。 系统将摘要字符串发送到排名器进行评分,并将其发送到用于生成字幕和答案的机器阅读理解模型。

    截至 2024 年 11 月,每个生成的传递给语义排序器的摘要字符串的长度不能超过 2,048 个标记。 以前是 256 个标记。

如何对结果进行评分

系统会根据标题和摘要字符串中填写 2,048 个标记长度的任何其他内容对结果评分。

  1. 相对于你提供的查询,系统评估概念性和语义相关性的标题。

  2. 系统根据给定查询文档的语义相关性为每个文档分配 @search.rerankerScore 。 分数范围从 4 到 0(从高到低),分数越高表示相关性越高。

    得分 含义
    4.0 文档高度相关,并完全回答问题,但段落可能包含与问题无关的额外文本。
    3.0 文档是相关的,但缺少使其完整的详细信息。
    2.0 文档在某种程度上相关;它要么部分回答了问题,要么只回答了问题的某些方面。
    1.0 文档与问题相关,它回答了问题的一小部分。
    0.0 文档是不相关的。
  3. 系统按分数按降序列出匹配项,并将其包含在查询响应有效负载中。 有效负载包括答案、纯文本和突出显示的标题,以及在 select 子句中标记为可检索或指定的任何字段。

注释

对于任何给定的查询,@search.rerankerScore 的分布可能会因基础结构级别的条件而略有不同。 排名模型更新还会影响分发。 出于这些原因,如果要为最小阈值编写自定义代码或为矢量和混合查询 设置阈值属性 ,请不要使限制过于精细。

语义排序器的输出

从每个摘要字符串中,计算机阅读理解模型查找最有代表性的段落。

输出包括:

  • 文档的语义标题。 每个标题都有普通文本版本和突出显示版本,在每个文档中通常少于 200 字。

  • 一个可选的语义答案,假设你指定了 answers 参数,查询以问题的形式提出,并且在长字符串中找到了一个段落,该段落提供了此问题的可能答案。

标题和答案始终是索引中的逐字文本。 此工作流中没有可创建或撰写新内容的生成式 AI 模型。

语义功能和限制

语义排名器 可以 执行的任务:

  • 提升在语义上更接近原始查询意向的匹配项。

  • 查找要用作标题和答案的字符串。 响应返回标题和答案,你可以在搜索结果页上呈现这些标题和答案。

语义排序器不能做的是,在整个语料库上重新运行查询来查找语义上相关的结果。 语义排名会对现有结果集重新排名,该结果集由按默认排名算法评分的前 50 个结果组成。 另外,语义排序器无法创建新的信息或字符串。 语言模型从内容中提取字幕和答案,因此,如果结果不包含类似答案的文本,它们不会生成一个。

虽然语义排名并非在每种情况下都有益处,但某些内容可以显著受益于其功能。 语义排序器中的语言模型最适用于信息丰富并且为散文结构的可搜索内容。 知识库、联机文档或包含描述性内容的文档可从语义排序器功能获得最大收益。

基础技术来自必应和 Azure 研究,并作为附加功能集成到 Azure AI 搜索基础结构中。 有关用于支持语义排序器的研究和 AI 投入的详细信息,请参阅必应的 AI 功能如何为 Azure AI 搜索提供支持(Microsoft Research 博客)

语义排名器如何使用同义词映射

如果启用对与搜索索引中的 字段关联的同义词映射 的支持,并在 语义排名器配置中包含该字段,则语义排名器会在重新调用过程中自动应用配置的同义词。

如何开始使用语义排序器

  1. 检查区域可用性

  2. 登录到 Azure 门户

  3. 为搜索服务配置语义排名器,选择定价计划。 免费计划是默认值。

  4. 在搜索索引中配置语义排序器

  5. 设置查询以返回语义描述和重点内容

  6. (可选)返回语义答案

另请参阅