查询匹配、候选与排序
理解 BM25 的词频与长度规则,以及交叉编码、模型重排和结果去重的条件。
候选与顺序分两步解释
匹配规则决定哪些记录进入候选,排序规则决定候选怎样排列。布尔条件、短语、字段匹配、时间范围与权限可能直接限制集合;相关性分数在允许候选中排列顺序。权限条件应约束可见集合,不能用一个加分或减分项替代。
查询解析器需要说明输入表达的是全部词、任一词、连续短语还是精确标识。搜索框的空格和引号只有在解析器提供相应语法时才有约定含义。拼写纠正、同义词扩展和查询改写会改变表示,需要保留原始要求,避免扩大精确检索范围。
BM25 怎样把词项变成分数
词项在一条记录中出现较多,可以提供相关性线索;词项在整个集合中很常见,区分候选的能力较弱。BM25 把词频、集合中的文档频率和记录长度合成分数。一种常见的短查询形式是:
是查询词项集合, 是被评分的搜索单位, 是词项 在该单位中的出现次数; 和 分别是该单位及集合平均的分析后长度。这里省略了长查询的查询词频项。 控制词频收益的饱和程度, 在 0 到 1 之间控制长度归一化强度。教材的 Okapi BM25给出了这些因素的推导关系与不同变体。
在长度等于平均长度、 的构造例子里,词频从 2 增到 4,对应的词频因子从 增到 。出现次数翻倍,收益逐渐饱和;不断重复一个词不会按次数无限增加这一因子。 时长度不起作用;增大 会更强地调整长单位较容易包含查询词的差异。
一种采用正值平滑的 IDF 是:
是相应集合或字段的文档数, 是包含该词的文档数。Lucene 9.12.2 的 BM25Similarity API采用这个 IDF;其他变体可以使用不同平滑。引擎还可能在字段统计、重叠词项、长度编码和常数因子上不同,同一名称不能保证相同数值。
如果查询和文档在分析及扩展后没有任何共享词项,上述逐词求和模型不会从这些词项取得匹配贡献。词形、同义词、字符片段或学习扩展可以改变这个条件。精确代号需要合适的标识字段与分析规则;罕见词的高 IDF 无法补救被错误拆分的代号,也无法保证包含代号的文档一定最有用。
字段权重与任务有关
标题中的匹配可能比正文中的一次提及更能指认主题,正文完整短语也可能比标签更贴近细节。字段权重应服务任务,并用代表性查询检查。将标题权重提高,会同时改变主题导航和细节查证的顺序,不能只凭标题命中次数判断收益。
时间、热度和个性化可以改变顺序,同时也改变“相关”的定义。用于查证的搜索重视原始来源和精确定位,用于发现内容的搜索可能更重视覆盖。评价前先确定用户要完成什么,才能解释排序是否合适。
交叉编码把比较推迟到查询之后
单向量双塔分别编码查询与文档,用两个已形成的向量计算分数。交叉编码器(cross-encoder)把查询和一个候选文档共同送入模型,让文档的处理依赖当前查询,再输出相关性分数。联合输入可以保留更细的词项、关系和条件比较,但最终质量仍取决于训练与任务。ColBERT 原论文的模型比较与重排讨论说明了预计算与查询时交互的区别。
例如查询“哪些格式可以保留批注”,候选分别说“导出 PDF 保留批注”和“导出文本不保留批注”。联合比较可以利用“保留”和“不保留”的关系。单向量模型也可能学会这一差别;联合输入增加了使用当前查询检查细节的机会,不能保证任何模型都作出正确判断。
查询与文档的完整联合分数无法在未知查询时离线预计算。候选数量、序列长度、模型、硬件和批处理方式决定在线代价。比较 100 个候选意味着需要处理 100 组输入,可以分批并行,不能把它直接写成 100 次串行调用。大集合通常先用较便宜的检索取得候选,再用联合模型重排;小集合也可以直接逐项比较,使用阶段由成本约束决定。
重排只能改变当前候选的顺序。第一阶段漏掉的记录,需要扩大候选、补充检索或改变表示才能找回。文档截断还可能让模型看不到决定性的后半句,即使原始记录已进入候选。
生成模型怎样参与重排
生成模型可以按任务说明判断相关性,常见输入与输出组织如下:
| 方式 | 比较对象与输出 | 需要核对的条件 |
|---|---|---|
| 单项判断(pointwise) | 每次给查询与一个候选,输出相关等级或评分 | 不同调用的尺度是否可比,分数是否有校准依据 |
| 成对比较(pairwise) | 给查询与两个候选,输出较相关者 | 交换位置后的稳定性、比较次数及循环偏好 |
| 列表排序(listwise) | 给查询与一组候选,输出候选 ID 的排列 | 上下文长度、初始顺序、遗漏或重复 ID |
候选过多时可以分窗口比较,再将结果合成。窗口大小、移动次序和跨窗口候选决定哪些记录真正被共同比较,结果不能直接当作一次全局最优排序。Sun 等人的 RankGPT,§3 与附录给出列表排列与滑动窗口的具体设计。
模型输出需要检查:每个 ID 是否来自候选,是否缺失或重复,结果是否保留过滤条件,以及异常时怎样回退。输入文档是待比较的数据,文档中的命令式文字也可能影响生成判断。固定任务说明、数据边界和输出契约各自需要检查,相关性判断不能授予文档执行权限。
模型规模、指令遵循和推理能力不能直接推出排序精度上限。How Good are LLM-based Rerankers?,§5—7在指定基准和新查询集上比较了多种重排方式,报告泛化表现随方法和任务变化。采用时需要比较同一候选集上的排序质量、端到端延迟、费用和失败率,候选条数或单次任务价值只能提供成本条件。
去重与来源身份影响结果含义
同一来源可能有多个段落命中。按段落取前 项、先按文档去重再取 项、保留同文档最优段落并回填邻近上下文,具有不同含义。一个来源出现多次,会占用结果位置,也不能被计作多个独立来源支持。
去重应使用来源 ID、版本和位置,避免只靠展示标题。同名文档可能不同,重复发布也可能只是同一材料的多个副本。检索分数表明表示关系,内容真实性与时效仍需返回原文检查;本页没有宣称固定参数或重排器对所有语料最优。
最后更新于