Browse this library

Chinese source article

3 · 检索与排序

从候选召回、异质分数融合到重排和证据集合选择, 建立统一的质量与成本坐标.

View original Markdown ↗

语料进入索引后, 系统要把查询 qq 变成一组能够支持回答的证据. 这条链包含三个不同目标: 召回器在大规模语料中保住可能相关的候选, 重排器用更强交互把充分证据推到前面, 选择器在 token 与延迟预算内组成互补证据集合. 三者若只用一个最终答案分数评价, 漏召回、错排序和生成失败会混在一起.

本章统一使用语料快照 Ct\mathcal C_t, 第 jj 路召回排名 Rj(q)R_j(q), 融合候选 DKD_K, 最终证据集合 EE 和预算 BB. 候选相关只表示值得继续检查, 证据则必须支持回答命题并满足版本、权限与来源条件. 这个区别贯穿两篇正文.

1. 召回器在计算什么

1.1. 从词项统计到语义表示

BM25 根据词频、逆文档频率和长度归一化评分, 对错误码、型号、条款号和罕见实体稳健. learned sparse 仍输出词表维度的非负稀疏权重, 通过训练学习词项扩展, 同时保留倒排索引执行方式. 双编码器把查询与文档分别压成单向量, 用内积或余弦寻找语义近邻.

这些分数不共享尺度. BM25 随语料统计变化, 稠密分数受模型、归一化和训练负例影响, learned sparse 还受稀疏正则影响. 分数高表示某个模型目标下的相对偏好, 不能直接解释为答案正确概率.

1.2. 交互精度与候选成本

late interaction 为查询和文档保留多个 token 向量. ColBERT 的 MaxSim 形式为 s(q,d)=∑i∈qmax⁡j∈dE(qi)TE(dj)s(q,d)=\sum_{i\in q}\max_{j\in d}E(q_i)^TE(d_j), 比单向量保留更细的词项对应, 代价是多向量存储与查询计算. cross-encoder 把查询和候选联合编码, 交互更完整, 通常只用于已经缩小的候选集.

方法选择由规模和错误类型决定. 单向量适合便宜大规模召回, late interaction 适合细粒度匹配, cross-encoder 适合辨认否定、条件和实体关系. 更强交互无法找回从未进入候选的文档, 因而召回覆盖始终是重排的前提.

2. 多路候选怎样进入共同排名

2.1. 融合先处理尺度

Reciprocal Rank Fusion 按名次而非原始分数组合:

RRF⁡(d)=∑j1c+rank⁡j(d).\operatorname{RRF}(d)=\sum_j\frac{1}{c+\operatorname{rank}_j(d)}.

若 c=60c=60, 文档 A 在两路分别排 2、40, 得分约 0.02610.0261; 文档 B 两路都排 8, 得分约 0.02940.0294, B 因跨路一致而靠前. RRF 避免异质尺度, 仍需要验证每路截断深度、常数和重复处理. 学习式融合可以加入来源、时间和查询特征, 但需要独立校准集.

2.2. 过滤定义候选集合

权限、租户、有效时间、语言和文档类型在召回前或检索过程中约束 Ct\mathcal C_t. 事后删除越权候选会占据 top-k, 还可能泄露标题、分数与缓存信息. ANN 与高选择性过滤组合时也可能少返回结果, 需要在真实权限分布上测试.

查询改写、多查询和 HyDE 会改变候选来源. 运行记录同时保留原查询、改写、每路候选和过滤条件. 若多个改写只返回重复文档, 额外调用没有增加覆盖; 若改写丢失编号或否定, 原查询分支提供必要保护.

3. 排名如何变成证据集合

3.1. 单项相关与集合覆盖

重排后的 top-k 仍可能被同一文档的重叠片段占满. 比较问题需要两侧对象, 多跳问题需要可连接关系, 制度问题需要规则、例外与时间条件. 选择器可在相关性 sis_i、新增覆盖 gig_i、冗余 rir_i 和长度 ℓi\ell_i 之间权衡:

E∗=arg⁡max⁡E⊆DK∑i∈E(si+αgi−βri),∑i∈Eℓi≤B.E^*=\arg\max_{E\subseteq D_K}\sum_{i\in E}(s_i+\alpha g_i-\beta r_i),\quad \sum_{i\in E}\ell_i\le B.

实际系统可以使用贪心或 MMR, 无需精确求全局最优, 但必须记录选择顺序与删除原因. 版本过期、重复、权限过滤、预算不足和低排名是不同原因, 对应不同修复路径.

3.2. 延迟沿流水线传递

候选深度 KK 増大通常提高召回, 也把计算传给重排. cross-encoder 对每个候选重复联合编码, LLM 列表式重排还受输入长度、位置偏差和输出稳定性影响. 最终上下文预算再决定能够保留多少证据.

实验应扫描召回 KK、重排保留数 kk 与 token 预算 BB, 报告质量—延迟曲线. Recall@100 最高的方案未必能在四段上下文中产生最好答案. 业务选择曲线上的工作点, 并为高峰流量准备减少改写、跳过昂贵重排或缩小候选的降级配置.

4. 共同的评测与阅读路线

4.1. 分层指标和域外边界

召回层使用 recall@k 判断参考证据是否出现, MRR 关注首个相关结果位置, nDCG 允许多级相关标签. 多跳问题还要测完整证据组覆盖. 排序指标提升后, 继续检查最终上下文、答案正确性与引用支持, 防止排名改善没有传到用户结果.

BEIR 一类跨领域基准表明, 同域强势的稠密检索器在新体裁和新任务上未必持续领先 BM25. 评测按实体、数字、否定、时间、多语言、多跳和无答案切片, 并保留时间外与来源外测试. exact dense 作为 ANN 对照, BM25 作为无需训练的词项锚点.

一个五查询的例子中, 首个充分证据名次为 1、2、8、未命中、4. recall@5 为 3/5=0.63/5=0.6, recall@10 为 4/5=0.84/5=0.8, MRR 为 (1+1/2+1/8+0+1/4)/5=0.375(1+1/2+1/8+0+1/4)/5=0.375. 从 k=5k=5 增到 10 只救回一个样本, 是否采用还要看重排延迟与答案收益. 多跳问题则要求完整证据组进入候选, 单篇命中不能算作可回答.

重排实验固定召回候选, 避免把候选变化归到排序器. 集合选择实验固定排序结果, 比较 top-k、MMR 和任务槽位. 端到端实验再把三段接回, 检查局部指标提升能否传到答案和引用. 这种顺序让失败定位保留明确分母.

生产 trace 为每个候选保存召回来源、单路名次、融合分数、重排分数、过滤状态与最终选择结果. 当答案缺少证据时, 可以判断目标从未召回、被重排压低、被判重复还是因预算丢弃. 只保存最终上下文会抹掉这些差异.

4.2. 两篇正文怎样分工

稀疏、稠密与混合召回沿评分函数展开 BM25、learned sparse、dense、late interaction、混合召回和 OOD 边界. 阅读时关注每种方法改变查询表示、文档表示还是交互函数, 以及新增候选是否真正提供独有证据.

重排、融合与证据选择从异质分数进入 RRF、校准、cross-encoder、LLM rerank 与集合选择. 它回答有限位置先给谁、互补证据怎样共同进入上下文以及增加的质量是否值得延迟. 两篇共享候选身份、语料版本和问题集, 结果才能复算与比较.

阅读顺序取决于已有系统. 从零建立基线时, 先完成稀疏与 exact dense 召回, 再加入 ANN、融合和重排; 已有成熟搜索时, 可以直接检查候选到证据集合的损失. 无论从哪一侧进入, 权限与版本都先定义候选集合, 不能由重排分数抵消.

本章的共同验收对象是一份可重放候选清单. 它绑定问题、身份、时间、语料快照和各路排名, 并保留进入证据集合前的每次变换. 算法比较、延迟分析和线上归因都使用这份清单, 避免不同实验各自更换输入后仍把分数放在一起比较.

共同坐标稳定以后, 方法差异才能准确解释.