重排精排

Rerank

Rerank 重排也叫精排,是 RAG 检索增强生成链路最后一段:把粗召回阶段(向量检索/关键词检索)返回的 Top-20 至 50 个候选片段,用交叉注意力模型重新打分排序,选出 Top-3 至 5 最相关的喂给大模型。

详细解释

Rerank(重排 / 精排) 和搜索推荐系统里的”召回 → 排序”两阶段架构完全对齐:

  1. 第一阶段:召回(Retrieve / Recall)——快但不准。用 向量数据库 或 Elasticsearch 关键词/BM25 从几十万条知识库中快速捞 Top-N(一般 20 至 50),目标是”尽量别漏掉正确答案”(高召回率),但这 50 条里可能有 40 条其实不相关。
  2. 第二阶段:重排(Rerank)——准但慢。把这 50 条和用户问题一对一喂给一个 Cross-Encoder(交叉编码器)模型,让它做”相关性二分类/打分”,然后按分数从高到低重排,只取 Top-K(一般 3 至 5)给 LLM。

两者模型结构的本质区别:

  • 召回用的 Embedding 模型是 Bi-Encoder(双塔 / 双编码器):问题和文档分别过一次编码器得到两条向量,再算内积。好处是文档向量能提前离线算好存进 VDB,查询时只要算一次问题向量,快。缺点是”文档和问题之间没有注意力交互”,语义匹配粗。
  • Rerank 模型是 Cross-Encoder(交叉编码器):把 <[BOS_never_used_51bce0c785ca2f68081bfa7d91973934]> 问题 [SEP] 文档片段 [SEP] 拼接成一个序列送进 Transformer,让问题和文档在每一层注意力里互相对齐,最后输出一个 0 至 1 的相关性分数。打分准很多(RAG 最终准确率一般涨 15–30%),但”50 条就要跑 50 次前向”,比召回慢 20 至 50 倍。所以它只适合对召回结果做最后一小撮精排

代表模型:BAAI/bge-reranker-v2-m3、Cohere Rerank 3、Jina Reranker v2、唯元智创 内置默认 bge-reranker-large(中文场景)。

标准 RAG 三段式管线 + 指标提升对照

方案Recall@10(召回 10 条里有正例的占比)Final Answer Accuracy(最终回答准确率)
只用向量召回 Top-565%55%
混合检索(向量 + BM25 关键词)Top-2082%68%
Top-20 → Rerank → Top-594%85% 至 92%
再叠 HyDE(假设文档嵌入) → Rerank97%90% 至 95%

一句话判断你需不需要 Rerank:如果你召回 Top-10 里经常”相关的答案排到第 8、9 位”,加上 Rerank 基本就是免费的 20 分提升。

怎么接入 Rerank(三种模式,复杂度从低到高)

#接入方式典型实现适用场景
1SaaS 托管 Rerank APICohere / Jina / 唯元智创rerank endpoint,入参 query + documents[],出分绝大多数业务,零运维
2开源模型 + 推理框架本地部署bge-reranker-v2-m3,ONNX/TensorRT-LLM 单机部署数据不出域、合规要求严
3同进程小模型把 Rerank 模型直接放进你的 Python 应用进程(FastAPI 启动时加载 ONNX)延迟最敏感场景,省一次 RPC

常见问题

Rerank 之后 RAG 准确率还不满意怎么办?
按优先级查 4 件事:(1)切片(Chunking)做对没有—— 80% 的 RAG 失败根因是切片切得稀碎(建议改 Semantic Chunking 语义切片);(2)召回量是不是不够大?从 Top-20 拉到 Top-50 再 Rerank 往往就有了;(3)Embedding 和 Rerank 模型是不是同语种同语料训练的(中英文别搞混);(4)还不行,叠 HyDE 前置增强检索。
我把 Embedding 模型升级成更大的,还用 Rerank 吗?
仍然强烈建议。Embedding 再大也属于 Bi-Encoder,它的结构天生没有”问题和文档互看注意力”的环节,匹配是粗粒度的。业界规律是:大 Embedding + Rerank 总是比”再大一级的 Embedding 单独用”效果好,而且成本更低、延迟可控。
Rerank 会不会把我 TPM 账单爆掉?
Rerank 的 Token 计费一般远低于 LLM。以 Cohere Rerank 3 为例,输入是 query + 50× 256 tokens 文档 = 约 13k tokens 量级,一次仅几毛钱;而最终 LLM 问答按输出计费一次可能几块。综合看,加 Rerank 之后你反而会省钱——因为 Top-K 喂给 LLM 的上下文变短了,输入 ITPM 消耗下降,且 LLM 不用在一大坨不相关文档里找信息,幻觉 率下降,少了”回答错了返工重答”的双倍账单。