Reranker(重排序)

Reranker

检索后再精排

亦作、亦称:重排序

Reranker(重排序器)是信息检索与 RAG 流水线中的第二阶段精排模块,对粗检索返回的 Top-K 候选文档重新计算相关性得分并重新排序,显著提升最终送入大语言模型的上下文质量。相比第一阶段的向量检索或关键词检索,Reranker 通过交叉编码器对查询与文档做联合建模,精度更高但计算代价也更大。

概述

Reranker(重排序器)是信息检索与 RAG 流水线中的第二阶段精排模块,对粗检索返回的 Top-K 候选文档重新计算相关性得分并重新排序,显著提升最终送入大语言模型的上下文质量。相比第一阶段的向量检索或关键词检索,Reranker 通过交叉编码器对查询与文档做联合建模,精度更高但计算代价也更大。

为什么需要重排序

单阶段向量检索速度快、覆盖广,但语义精度有限,重排序作为补偿机制承担「粗召回后精选」的职责。

  • 双编码器的局限 : 双编码器(Bi-Encoder)将查询和文档分别独立嵌入为向量,无法捕捉词级别的细粒度交互,相关性评估较粗糙。
    -
    全库精排不可行 交叉编码器推理代价随候选数量线性增长,对百万级文档库直接精排在延迟和成本上均不可接受。
    -两阶段分工第一阶段负责高速粗召回(Recall),第二阶段负责精准精排(Precision),两者协同兼顾效率与准确性。
    -
    RAG 质量瓶颈
    送入 LLM 的上下文片段质量直接决定生成答案的准确率,Reranker 是提升上下文相关性最直接的手段。

交叉编码器核心机制

交叉编码器将查询与候选文档拼接为单一序列,允许两者之间发生全注意力交互,从而产生精确的相关性评分。

  • 输入格式[CLS] 查询 [SEP] 文档 [SEP],与 BERT 句对分类格式完全一致,联合编码后输出单一相关性分数。
  • 全注意力交互:查询中每个 token 均可与文档中任意 token 相互关注,能捕捉精确的语义匹配与上下文依赖信号。
  • 输出相关性分数:取 [CLS] 位置隐层向量经线性层映射为 0-1 的相关性得分,用于重新排序候选列表。
  • 无法离线预计算:查询与文档必须同时输入,不能像双编码器那样预先缓存文档向量,因此只适合对几十至数百条候选做在线推理。
  • 计算复杂度:时间复杂度约 O(K × L²),其中 K 为候选数量,L 为序列长度,K 较大时需批处理或换用更高效的变体。

典型两阶段检索流水线

现代 RAG 系统普遍采用「粗检索 + 精排」的两阶段架构,Reranker 处于流水线的关键衔接节点。

  • 第一阶段(粗检索):使用 BM25向量数据库(FAISS、Milvus、Pinecone 等)从大规模文档库中快速召回 Top-K(通常 K=20~100)候选。
  • 第二阶段(精排):Reranker 对上述候选逐对打分,输出相关性降序列表,取 Top-N(通常 N=3~10)送入 LLM 生成答案。
  • 混合检索增强:第一阶段可结合稠密检索与稀疏检索(混合搜索),扩大召回覆盖率,再由 Reranker 做跨来源统一精排。
  • 延迟权衡:Reranker 通常增加约 100-500ms 延迟,生产部署中需根据 SLA 合理设置 K 值与模型规格。

发展脉络

重排序技术从经典信息检索延伸至神经网络时代,随 BERT 和大语言模型的崛起持续演进。

  • 2000年代前:传统 IR 系统已有多阶段排序雏形,使用 BM25、TF-IDF、PageRank 等特征做粗精两轮排序。
  • 2019:Nogueira & Cho 发表「Passage Re-ranking with BERT」(arXiv:1901.04085),在 MS MARCO 排行榜上 MRR@10 相对提升约 27%,确立 BERT 交叉编码器重排序为现代范式。
  • 2020ColBERT(斯坦福)提出延迟交互(Late Interaction)机制,实现速度与精度的新平衡;monoBERT、duoBERT 进一步扩展点式与对式排序。
  • 2022:Cohere 推出商业化 Rerank API;BGE-Reranker(BAAI)等中文优化模型开源,推动中文 RAG 实践。
  • 2023:LangChain、LlamaIndex 等框架将 Reranker 纳入原生组件,RankGPT 探索以 LLM 直接做列表级重排序。
  • 2024 至今Rank-DistiLLM 等工作通过知识蒸馏将 LLM 排序能力迁移至轻量交叉编码器,兼顾效果与部署成本。

代表性模型与工具

业界已有丰富的开源与商业 Reranker 可直接集成到 RAG 流水线。

  • cross-encoder/ms-marco 系列(Hugging Face):基于 BERT/MiniLM 在 MS MARCO 上微调,推理轻量,是最常用的开源基线。
  • BGE-Reranker(BAAI):中英双语重排序模型,对中文语料效果显著,是国内 RAG 实践的首选之一。
  • ColBERT / ColBERTv2(斯坦福 DAWN 实验室):延迟交互范式,预计算文档向量,推理速度介于双编码器与交叉编码器之间。
  • Cohere Rerank API:商业化多语言重排序接口,可零代码集成至 LangChain、LlamaIndex 等主流框架。
  • RankGPT / RankLLM:以大语言模型输出文档排列顺序,精度更高但成本显著上升,适合离线或低频场景。

评估指标

重排序质量通常用信息检索领域的标准指标衡量,聚焦相关文档在排名列表中的位置质量。

  • MRR@K(平均倒数排名):衡量第一个相关文档出现位置的倒数均值,是 MS MARCO 的核心指标,K 通常取 10。
  • NDCG@K(归一化折损累积增益):综合考虑多文档分级相关性与排名位置,对排序顺序更敏感,常用于 TREC 系列评测。
  • MAP(平均精度均值):综合衡量相关文档在整个排名列表中的分布,反映系统整体精排能力。
  • Recall@K:第一阶段粗检索的召回率,决定 Reranker 能精排的文档上限,通常需 ≥ 80% 才值得精排。

局限与注意事项

Reranker 并非万能,工程落地时需关注其固有约束与常见误区。

  • 无法补救粗检索遗漏:Reranker 只能在粗排候选集内重排,若粗检索未召回相关文档,精排无法凭空补救,「垃圾进,垃圾出」同样适用。
  • 计算延迟瓶颈:对每对「查询-文档」单独推理,候选数量越多延迟越高,不适合实时性要求极高的场景,需批处理优化。
  • 长文档截断问题:主流交叉编码器通常限制输入在 512 或 1024 tokens,超长文档需提前做分块(Chunking),可能丢失跨块关键信息。
  • 语言与领域适配:通用英文模型在中文或专业领域效果可能显著下降,需针对目标语料做领域微调或选用适配模型。

常见误解

日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。

  • 「检索后再精排」
  • 「大模型圈高频词」
  • 「跟 Reranker 是一回事吗」

相关术语

和本术语关联紧密的其他词条,便于串联理解。

🎯 考点练习

含该术语的高频面试题,含标准答案与追问。

延伸阅读

从知识库精选 2 篇文章,帮助深入理解该术语。

  1. 1

    RAG 检索增强生成架构指南

    如何结合外部知识库增强 LLM 的准确性和时效性

  2. 2

    NLP 基础:从词嵌入到 Transformer

    自然语言处理的核心技术路线。从 One-Hot 到 Word2Vec,从 RNN/LSTM 到注意力机制,再到 Transformer 架构的完整演进历程。包含词向量可视化、注意力权重计算和简易 Transformer 的 Python 实现。