你搭好了 RAG,但检索质量却平平——这正是重排序(reranking)能派上用场的时候。你把嵌入(向量)检索粗略收集到的候选,按相关度重新排序,只保留排在最前面的那些。仅这一步就能大幅改变 RAG 系统的回答质量——它是检索精度的"最后一推"。

本文面向初学者,梳理重排序是什么、为什么需要它、两阶段检索如何运作、它为什么准确(bi-encoder 与 cross-encoder),以及模型与实现。

RERANKING · 广撒网 → 智能重排

用两阶段把"真正相关"的推到最前

— 用快速检索收集,用精准打分筛选

STEP 1 · 检索

嵌入检索

快速、广泛地收集候选(例如 100 个)。以召回为优化目标。

STEP 2 · 重排

重排序器

按相关度打分,只保留最前面的(例如 5 个)。以精度为优化目标。

1. 什么是重排序?

重排序就是把已经收集到的检索结果,按它们与查询的相关度重新打分并重新排序。在 RAG 中,你先用嵌入检索把大量可能相关的文档拉进来。但那个顺序只是"大致接近"。于是你再加上一个叫作重排序器(reranker)的专用模型,把真正相关的那些推到最前面。

可以想象成"初筛加终面"。初筛(嵌入检索)快速筛选应聘者,放过相当多的人。终面(重排序器)逐一仔细审视,把最优秀的排在最前面。快速的初筛加上精准的终面——这种两步结构正是关键所在。

💡 一句话概括:重排序 ="通过重新排序检索结果来提升精度的第二阶段"。在嵌入检索防止遗漏之后,它负责"把最好的放到最前面"。

2. 为什么需要它:嵌入检索的局限

嵌入检索又快又方便,但它有一个弱点。因为它把查询和文档分别向量化后再比较,所以看不到两者之间细粒度的关系。它擅长"大致接近",却在判断"这真的回答了问题吗?"上比较粗糙

结果,排在最前面的结果里混进了一些"关键词接近但跑题"的文档。由于 RAG 会把检索到的靠前文档直接交给 AI,糟糕的排序会直接拉低回答质量。这正是重排序器重新妥善测量相关度、修正顺序的用武之地。研究发现,加入重排序能显著提升 RAG 的准确率(某份报告称约提升 40%)——这是一个被引用的数字。

此外,把重排序叠加到混合检索(hybrid search)上——即把关键词检索与向量检索结合起来——已成为 2026 年生产环境 RAG 的标准配置。"广泛而多样地收集,最后让重排序器按相关度排序"——这套流程能提升精度。

3. 工作原理:两阶段检索

你把重排序作为"两阶段检索"构建进来。其原则是"广撒网,智能筛"

① 用嵌入检索广泛收集~100
快速收集大量候选(召回 = 一个都不遗漏)
↓ 用重排序器打分
② 用重排序器筛到最前面前 5 个
按相关度重新排序(精度 = 只留真正有用的)
↓ 只传递最前面的
③ 交给 LLM 生成
基于精挑细选的上下文作答

关键在于分工。用重排序器给每一篇文档都打分太慢,不切实际。所以先用快速的嵌入检索把候选收窄(例如 100 个),再只让重排序器审视这一小批。这样就在速度和精度之间取得了平衡。这也契合上下文工程"只交出最小量、信号最强的信息"的理念。

4. 为什么重排序器更准确

嵌入模型和重排序器内部构造不同。这正是准确度差距的原因。

BI-ENCODER(嵌入)

分开看,事后比

把查询和文档各自向量化,再测量距离。可预先计算、速度快,但它从不看两者的交互(近似)。

CROSS-ENCODER(重排序器)

放一起看,直接打分

把查询和文档一起喂入,直接输出一个相关度分数(0–1)。它能看到两者的交互,所以准确——但开销大。

打个比方,bi-encoder 是"分别给两篇文章写摘要,再比较两份摘要",而 cross-encoder 是"把两篇并排读,直接判断它们之间的关系"。后者自然更准确,但你不可能对每一篇文档都这么跑。这正是两阶段结构——用快速的 bi-encoder 收集,用准确的 cross-encoder 筛选——之所以合理的原因。

5. 模型与实现

你不必从零搭建重排序器——现成的专用模型和 API 已经就绪。

API 型(简单)

Cohere Rerank、Voyage、Jina Reranker。只需在现有检索之上加一层——仅一次 API 调用。

开源型

BGE reranker、mixedbread、FlashRank(轻量)。可免费自托管——在成本和隐私上更有优势。

用 LLM 打分(RankLLM 等)

让 LLM 本身来给"哪个更相关"打分。灵活,但成本更高。

实现起来出乎意料地简单。在你现有的 RAG(向量检索)上,只需"检索更大数量(例如 50–100 个),把它们过一遍重排序器,再筛到前 5 个"——加上这一步即可。用 AI 评测来衡量效果,并调整检索多少、保留多少。

※ 模型名称与数字引自各类指南与研究(截至 2026 年 6 月)。效果会随数据和设置而变,因此实测与调优才是稳妥之道。

总结

关于重排序的三点要义。

  • 它是什么:一个按相关度对检索结果重新打分、把最好的重排到最前面的第二阶段。RAG 精度的"最后一推"。
  • 它如何运作:两阶段检索——先用快速的嵌入检索广泛收集,再用准确的重排序器筛选。"广撒网,智能筛"。
  • 区别何在:嵌入模型(bi-encoder)分开看、速度快;重排序器(cross-encoder)放一起看、准确。分好工,两者兼得。

如果你的 RAG 精度不足,先从加一个重排序器开始。很多时候,只是把它放在现有检索之上,体感就会有明显变化。建议把嵌入RAG 实现一并阅读,以掌握检索的全貌。

FAQ

Q. 只用嵌入检索还不够吗?

A. 对某些用途来说够了——但当精度不足时,重排序就能帮上忙。嵌入擅长快速、广泛地收集,却在判断相关度上比较粗糙。加上重排序器,能让真正相关的文档更有可能落到最前面。

Q. 会不会变慢?

A. 重排序器开销大,但你只对嵌入检索收窄后的那一小批(例如 50–100 个)运行它,而非每一篇文档,所以速度仍在可用范围内。诀窍是不要检索太多。

Q. 重排序器和嵌入模型是不同的东西吗?

A. 是的。嵌入模型(bi-encoder)为检索生成向量;重排序器(cross-encoder)把两者放一起看,并给相关度打分。角色不同,所以两者要组合使用。

Q. 该检索多少个,又保留多少个?

A. 一个粗略的参考是"检索 50–100 个 → 保留前 3–10 个",但最优值取决于你的数据。用 AI 评测衡量精度并调整数量。太多会慢,太少会遗漏。