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-encoderquery 与一篇候选联合编码打分每个 pair 都要实时计算
pointwise每篇独立打分易批处理,列表比较较弱
pairwise比较同 query 下 A 与 B组合数和调用成本增加
listwise一次判断候选列表受窗口、顺序、格式和位置偏差影响
hard negativefirst-stage 高排但经确认不相关的候选未标记候选不自动是负例
output contract模型必须返回的 ID、分数、理由和版本结构空/重复/未知/非有限都应触发 fallback
fallback模型不可用时的已评测安全路径通常保留安全 first-stage 顺序

推荐学习顺序

顺序课程学习产出
1边界与候选集输入/输出契约、candidate recall 与安全窗口
2Cross-Encoder 重排联合编码、截断、分数、批处理和校准方案
3LLM、规则与组合重排明确硬规则、模型判断和业务策略的优先级
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安全覆盖越权、提示注入、第三方模型与审计风险

主要参考资料

来源获取日期:2026-07-22。模型、最大长度、服务 API、产品能力与价格会变化;按锁定版本和本地 qrels 验证。