学习契约与正确模型
先明确为什么学、学完能做什么,以及如何证明自己真的掌握。
很多团队在召回不足时添加 reranker,结果只是更精确地排序错误候选。B2B 搜索应先确保相关文档进入 top-k,再评估更昂贵交互能否提升前几位并满足延迟预算。
- 区分召回器与重排器的职责
- 解释 cross-encoder 相对 bi-encoder 的质量/延迟取舍
- 设计候选深度与重排深度实验
精读 32 分钟 → 引导练习 28 分钟 → 实战任务 60 分钟。实战时间单列,不再把浏览页面和项目操作混成一个数字。
- 它是什么
- 重排器接收较小的查询—候选集合,以更丰富的交互或更多特征重新打分;cross-encoder 将查询与文档联合输入模型。
- 为什么重要
- 在数十或数百候选上可承担逐对计算,以捕捉精细关系,而不必对全语料运行昂贵模型。
- 什么时候使用
- 用于候选 Recall 已足够、但前排顺序差,或需要融合多路召回与精细语义判断。
- 什么时候不要套用
- 相关文档不在候选集时,reranker 无法创造它;严格低延迟或超长文档场景需评估成本。
- 边界与不确定性
- 重排提升依赖候选、训练域与截断;cross-encoder 分数不是校准概率,也不是 Google Web 排名分数。
机制精讲
先读完整因果链,再看每个环节留下什么可观察信号。
重排是在较小候选集上使用更昂贵的比较方法重新组织顺序。第一阶段用 BM25、稠密或混合检索追求高召回,重排器再联合读取查询与文档片段,处理词序、否定、实体关系或任务匹配。它不能创造上游没有提供的文档:相关页面若不在 top-k 候选,任何强重排模型都无能为力。因此评估要把候选 Recall 与重排 nDCG/MRR 分开,避免把召回失败误归因于模型打分。
重排的代价随候选数、文本长度和模型复杂度增长。top-k 太小会漏掉相关文档,太大则增加延迟、截断和成本;批处理、缓存和模型压缩也会改变质量。生产必须有超时回退:返回第一阶段稳定排序,不能让昂贵模型失败变成空结果。重排是通用 IR 架构,不表示 Google 对网页公开采用某一模型或参数。本课重点是候选—重排—回退的可审计系统契约。
候选上限决定可达到的召回
若相关文档不在候选 top-k,重排后最大 Recall 不会增加。扩大 k 可以提高覆盖,却增加计算与噪声。
联合编码增强细粒度交互
cross-encoder 可让查询 token 与文档 token 交互,通常比独立向量更能识别否定、关系和短语,但无法预计算全部查询—文档对。
融合分数需要明确策略
可直接按重排分数重排,也可与第一阶段分数、业务规则融合。不同尺度需校准;硬权限不能只作为软分数。
超时回退保证系统可用
重排服务超时、特征缺失或模型版本不一致时,应回退到已验证候选排序。回退质量、比例和用户影响都需测试。
关键概念
掌握术语之间的关系,才能迁移到不同网站、行业和工具。
候选上限
最终质量受第一阶段 Recall@k 限制;重排只能在收到的文档中选择。
Cross-encoder
查询和文档 token 联合注意力,交互细但每对都需推理,成本随候选数增长。
Late interaction
如 ColBERT 保留 token 级表示并延迟交互,在效率与细粒度匹配之间取中间方案。
完整示范
跟随一次“输入 → 分析 → 中间产物 → 结论”,看见专家是怎样做判断的。
五候选重排的收益与边界
以下均为教学用合成数据。查询“支持 SSO 的供应商门户”,BM25候选依次 D1、D2、D3、D4、D5;人工等级为 [1,3,0,2,0],重排分数为 [0.42,0.91,0.15,0.76,0.10]。
- 候选 top5 已固定,重排按分数降序
- D6 是人工等级3但位于BM25 rank8,不在候选
- 不代表 Google 或任何真实模型的网页排序方式
检查候选上限
- 输入
- top5相关等级含1、3、2,另一个高相关D6在rank8。
- 分析
- 重排最多改善top5顺序,无法把D6召回;候选Recall上限已确定。
- 输出
- 记录候选缺失D6,后续需比较k=10或混合召回。
按重排分数排序
- 输入
- 分数D2 .91、D4 .76、D1 .42、D3 .15、D5 .10。
- 分析
- 新顺序 D2>D4>D1>D3>D5,把最高相关和次相关移到前列。
- 输出
- 重排前 top2 等级[1,3],重排后[3,2]。
评估延迟边界
- 输入
- top5 P95=48ms,top10 P95=83ms,业务预算70ms。
- 分析
- 直接把k扩到10可找回D6但超预算;可用混合召回优化D6进入前5、轻量模型或分查询路由。
- 输出
- 选择先修召回并保留top5,另做轻量top10实验。
设计失败回退
- 输入
- 重排服务1%请求超过70ms。
- 分析
- 超时即返回BM25原顺序,记录回退;不能等待到用户超时或返回空列表。
- 输出
- 系统SLO含回退率、回退质量和告警,发布可逆。
决策规则与证据边界
把“看到什么、意味着什么、下一步做什么”连起来,同时区分公开事实、实践推断和未知项。
- 重排只能重新组织输入候选,无法恢复候选外文档。
- 给定候选、分数和排序规则,可以复算重排顺序及延迟成本。
- 联合编码常能改善细粒度匹配,但收益依赖领域数据、输入长度和任务。
- 按查询路由可平衡质量与成本,需要线上验证。
- Google 网页搜索的重排阶段、模型、候选规模和延迟预算未完整公开。
- 第三方 cross-encoder 得分不能解释或预测 Google 排名。
引导练习
先独立完成,再按提示修正,最后展开参考解法并用 0–4 级量规评分。
教学用合成数据:BM25 top3候选等级[1,0,2],相关等级3文档在rank6;top3重排后[2,1,0],P95=35ms;top10重排可把等级3排首但P95=110ms,预算80ms。请选择方案并定义实验。
给定材料
- 候选rank1–10、人工等级、BM25/dense来源、重排分数和输入截断
- k=3/5/10的Recall、nDCG、P50/P95/P99、成本与超时回退表
需要提示时再展开
- top3重排改善顺序,却永远看不到rank6;不要把两层指标混在一起。
- 可尝试让dense把rank6文档送入top5,而非只有扩大到10。
完成后核对参考解法
先承认top3候选Recall不足,重排提升不能解决等级3文档缺失。优先测试混合召回使该文档进入top5,再对top5重排;同时测轻量top10模型或按高价值查询启用。发布必须在80ms预算内提高候选Recall与nDCG,并设超时回退到BM25。输入截断、否定和权限应作为护栏。所有数值为教学用合成数据,不能外推真实搜索引擎。
自评分量规
真实项目实战
把理解变成一个可以检查、复核和复用的工作产物。
为混合检索选择重排深度
BM25 与 dense 合并后 Recall@50 很高,但首位答案经常只是主题相近。
- 固定 union 候选与 qrels,确认 Recall@20/50/100 上限
- 选择公开或领域 reranker,锁定输入长度与模型版本
- 测试重排 top 20、50、100 的 nDCG、MRR、P95 延迟和成本
- 逐项检查否定、数字、权限与长文截断失败
- 设超时回退到融合排序,并记录模型与候选版本
验收条件
- 先报告候选 Recall,再报告重排指标
- 延迟包含模型调用、序列化与网络成本
- 超时、模型不可用和文档过长都有确定回退
诊断练习
目标不是猜中答案,而是提出竞争假设并选择能区分它们的证据。
reranker 上线后 MRR 提升,但 P95 延迟翻三倍且长指南退化。
竞争假设
- 重排候选过深导致逐对推理成本过高
- 长指南被截断,答案段落不在输入前部
- 批处理或缓存策略未生效
应该检查的证据
- 按候选数与 token 长度的延迟分布
- 截断前后文本及段落级结果
- 批量大小、缓存命中和模型服务追踪
常见陷阱:只换更小模型,不检查候选深度与 chunk/截断设计。
完成后用本页决策规则复核
- 若观察到:相关文档未进入重排候选
应优先:扩大或改善 BM25/dense候选,分析分词、混合与k。
扩大k会增加延迟与噪声,应联合评估。 - 若观察到:候选包含相关文档但顺序错误
应优先:加入标注对、困难负例和任务特征,比较强基线。
标签错误或截断也会造成顺序问题,先复核输入。 - 若观察到:增益只在长文档消失
应优先:改进 passage选择、窗口或分段重排,记录输入覆盖。
更多片段提高成本,也可能重复放大同一文档。 - 若观察到:P99超预算或服务不稳定
应优先:压缩、缓存、路由或降低k,并启用第一阶段回退。
回退系统也需定期评估,不能成为无人维护的旧模型。
自测与误区
先口头回答,再展开检查。无法给出例外与证据,说明还没真正掌握。
你应该能回答
1. 相关文档进入 reranker 了吗?
参考答案:先查看相关文档在第一阶段的名次与候选 k。若不在候选,它没有进入 reranker,问题属于召回;若进入但被打低,才检查重排标签、模型、输入截断和融合。报告必须同时保存候选和重排列表,不能只看最终结果。
为什么:重排的能力被候选集严格上限约束,这是诊断第一问。
2. 增益来自哪类查询,成本由哪类文档造成?
参考答案:按查询类型比较 nDCG/Recall增益、P95/P99延迟、候选数和推理成本。成本通常由更大k、更长片段和复杂模型产生。只有在关键任务质量增益明显且SLO达标时启用;否则压缩、路由、缩小k或保留基线。
为什么:平均质量无法单独决定生产方案,增益必须覆盖用户等待和运维成本。
3. 当重排失败或超时时用户会得到什么?
参考答案:准备已验证的第一阶段排序作为回退;设置超时而不是无限等待,记录原因和回退率。回退仍执行权限、版本和安全过滤,返回明确可用结果。通过故障注入确认模型不可用、慢响应和部分错误时不会空白,并监控回退查询质量。
为什么:可降级设计把重排从单点依赖变为可选增强。
需要避开的误区
- reranker 能修复任何召回问题
- cross-encoder 分数可以跨查询直接比较
- 重排候选越多,效果必然越好
术语与复盘
用自己的话复述术语和结论;如果只能认出、不能解释,就还没有形成可调用的知识。
- Reranker
- 对较小候选列表使用更昂贵方法重新排序的组件。
- Cross-encoder
- 联合编码查询和文档、允许细粒度token交互的模型。
- 候选上限
- 候选集合缺失相关文档时,重排无法超过的Recall限制。
- Top-k
- 送入重排或返回用户的前k个候选数量。
- 截断
- 因输入长度限制丢弃部分文本,可能移除关键证据。
- 回退
- 重排失败或超时时返回已验证第一阶段结果的机制。
离开本页前记住
- 重排能改变候选顺序,不能找回候选外文档。
- 候选 Recall 与重排质量必须分开报告。
- top-k、文本长度、模型复杂度共同决定质量、延迟和成本。
- 细粒度交互适合否定和关系,但输入截断会破坏证据。
- 生产必须有权限安全的第一阶段回退和故障注入。
- 重排模型不是 Google 公开网页算法,第三方分数不可外推。
资料与证据
优先采用官方和一手资料。实践材料用于补充工作方法,不替代机制证据。