Reranking
知识库简介
Reranking(重排序)接收第一阶段已授权候选,用更昂贵、能联合观察 query—document 的模型或可审计规则重新排序,再把少量高价值证据交给下游。它擅长区分“同主题但没回答”“数字或条件冲突”“精确证据与泛泛相关”,但有一个不可突破的上限:不在 candidate window 中的文档无法被重排器创造出来。
一条可上线的重排管线不只包含模型,还要包含:
- candidate window 与输出 top-n 的独立预算;
- query、候选文本、first-stage rank/score 与 source revision 契约;
- Cross-Encoder、规则、LTR 或 LLM 的选择与组合;
- 长文截断、chunk 聚合和 canonical-document 去重;
- pointwise/pairwise/listwise 数据与 hard negatives;
- 模型输出 schema、ID 完整性、非有限分数与重复结果校验;
- timeout、5xx、空响应、畸形响应和容量降级;
- candidate recall、nDCG/MRR、p95/p99、成本与 fallback 质量。
安全边界
Tenant、ACL、状态、有效期与删除等硬约束应在 语义搜索 阶段执行。Reranker 适合做输入防御复核,但不能让模型决定“越权内容是否相关”。正常与 fallback 都只能对同一安全候选集合排序。
在总路线中的位置
本库位于“检索与数据”知识域。在 RAG 角色路径中,语义搜索 先提供高召回候选,本库改善候选前排的 relevance、纯度和多样性,再由 RAG 压缩、引用并生成回答。这是推荐的系统集成顺序,不是三门完整课程的硬依赖链;向量数据库 的 ANN 参数和本库模型质量仍须分别评测。
学习目标
完成本库后,你应能:
- 计算 candidate Recall@window,并解释 reranker 的可达质量上限;
- 区分召回 window、rerank window、输出 top-n 和 RAG evidence budget;
- 解释 bi-encoder 与 cross-encoder 的交互、缓存和计算成本差异;
- 为 query/title/body/metadata 定义输入模板、tokenizer 与截断策略;
- 正确解释 logit、回归分、概率与跨 query 阈值;
- 比较规则、Cross-Encoder、LTR、pointwise/pairwise/listwise LLM;
- 从真实 first-stage 高排误召回中构造经确认的 hard negatives;
- 对长文做 passage 化或分块重排,并评测聚合与重复来源;
- 验证模型输出 ID 完整、唯一、有限且仅来自输入窗口;
- 为 timeout、错误、空/畸形输出设计确定性、安全、可观测 fallback;
- 同时报告 relevance、尾延迟、吞吐、成本、稳定性和端到端收益。
前置知识
- 语义搜索:候选、qrels、Recall/MRR/nDCG 与过滤;
- Embedding:bi-encoder 与表示契约;
- 数据标注:相关性等级、裁决和偏差;
- LLM API集成:若使用托管/LLM reranker,需要超时、重试、限流和 schema;
- 评测体系:后续把组件指标与端到端目标联结。
本库项目只用 Python 3 标准库,无模型、网络或密钥依赖。
核心术语
| 术语 | 初学者解释 | 关键边界 |
|---|---|---|
| candidate window | 实际送入 reranker 的候选集合 | 决定相关文档能否被看见 |
| candidate recall | 窗口包含的正 qrels 比例 | 是排序质量上限,不等于最终 nDCG |
| cross-encoder | query 与一篇候选联合编码打分 | 每个 pair 都要实时计算 |
| pointwise | 每篇独立打分 | 易批处理,列表比较较弱 |
| pairwise | 比较同 query 下 A 与 B | 组合数和调用成本增加 |
| listwise | 一次判断候选列表 | 受窗口、顺序、格式和位置偏差影响 |
| hard negative | first-stage 高排但经确认不相关的候选 | 未标记候选不自动是负例 |
| output contract | 模型必须返回的 ID、分数、理由和版本结构 | 空/重复/未知/非有限都应触发 fallback |
| fallback | 模型不可用时的已评测安全路径 | 通常保留安全 first-stage 顺序 |
推荐学习顺序
| 顺序 | 课程 | 学习产出 |
|---|---|---|
| 1 | 边界与候选集 | 输入/输出契约、candidate recall 与安全窗口 |
| 2 | Cross-Encoder 重排 | 联合编码、截断、分数、批处理和校准方案 |
| 3 | LLM、规则与组合重排 | 明确硬规则、模型判断和业务策略的优先级 |
| 4 | 候选窗口、长文与多样性 | window 曲线、passage 聚合与 canonical cap |
| 5 | 训练数据与 Hard Negatives | 监督形式、hard-negative mining 与无泄漏数据版本 |
| 6 | 指标、延迟、成本与降级 | 组件/端到端指标、失败矩阵与发布门禁 |
| 7 | 项目:可降级规则重排器 | 严格 fixture、输出契约和四类故障安全回退 |
动手实践入口
- reranker-fixture.json:9 个候选、授权修订、graded qrels、时间/租户/ACL 边界和窗口设置;
- toy_reranker.py:硬过滤、透明评分、输出校验、完整输入指纹、canonical cap、指标与 fallback;
- test_toy_reranker.py:30 项契约、指纹绑定、半开有效期边界、排序、故障、安全和 CLI 测试;拒绝会在 float 转换时溢出的候选/模型数值。
从项目根目录(同时包含 docs/ 与 .website/)运行正常与超时路径:
$env:PYTHONDONTWRITEBYTECODE = '1' # 禁止测试或示例运行产生 __pycache__ 文件。
$script = '.\docs\Reranking\examples\toy_reranker.py' # 保存教学重排器脚本路径,后续命令可复用。
$fixture = '.\docs\Reranking\examples\reranker-fixture.json' # 保存严格 JSON fixture 路径,避免手工重复输入。
python -B -W error $script --fixture $fixture # 执行正常 provider 路径,输出保护审计 envelope。
python -B -W error $script --fixture $fixture --failure timeout # 模拟超时,验证只使用安全 first-stage fallback。透明规则分只用于验证 orchestration,不是 Cross-Encoder/LLM 质量基线。CLI JSON 含候选 ID、过滤原因、qrels 指标与证据指纹,visibility=protected_audit 表示它是受保护的教学/审计 envelope,不是面向终端用户的公共响应;该标签本身也不提供访问控制。
掌握标准
- 先报告 candidate Recall@window,再评价 reranker。
- First-stage、model 与 final rank/score 分开保存。
- Query/title/body 模板、tokenizer、最大长度和截断可回放。
- Cross-Encoder/LLM 分数不被默认当通用相关概率。
- Hard negatives 来自真实候选并经标注确认。
- 长文与重复来源策略有 evidence-coverage 实验。
- 输出只包含输入窗口的唯一 ID,分数有限且数量完整。
- 授权修订与全部安全/评分输入进入完整 SHA-256 证据绑定。
- 公开响应与含候选、过滤原因、指标的 protected audit 分离。
- Timeout、错误、空/畸形输出都走相同安全 fallback。
- Fallback 自身有 relevance、安全、延迟和容量测试。
- 上线门禁同时覆盖关键切片、p99、成本和端到端回答。
与其他知识库的关系
| 知识库 | 关系 |
|---|---|
| 语义搜索 | 生成高召回、已授权候选和 first-stage provenance |
| Chunking策略 | 决定 reranker 能看到的 passage 与截断风险 |
| 向量数据库 | ANN/filter 是上游执行层,不等于 reranking |
| RAG | 消费 top-n 证据并受上下文预算/顺序影响 |
| 评测体系 | 联结 candidate recall、排序与回答/任务质量 |
| 运行监控 | 监测推理队列、timeout、fallback、漂移和成本 |
| AI安全 | 覆盖越权、提示注入、第三方模型与审计风险 |
主要参考资料
- Nogueira & Cho, Passage Re-ranking with BERT
- Nogueira, Jiang & Lin, monoT5
- Zhuang et al., RankT5
- Sun et al., RankGPT
- Sentence Transformers: Cross-Encoder Applications
- Sentence Transformers: Retrieve & Re-Rank
- Sentence Transformers: Cross-Encoder Training Overview
- Elasticsearch: Semantic reranking
来源获取日期:2026-07-22。模型、最大长度、服务 API、产品能力与价格会变化;按锁定版本和本地 qrels 验证。