← AI 术语表

AI 术语表 · 进阶 · 语言模型

重排序器

重排序模型(reranker)会将检索初步筛选出的候选文档逐一与问题仔细比对,再按真正的相关程度重新排序。它主要在 RAG 等把检索结果交给 AI 的系统中承担“二次审核”的角色。

关于这个术语
难度
进阶 · 需要了解内部原理的专业术语
加入时间
2026-10-07
通俗解释 用招聘来比喻,就像在简历筛选阶段快速筛掉数百名应聘者后,再在面试中逐一深入考察剩下的候选人并确定最终排名。面试准确但耗时,因此不可能面试所有应聘者,这一点也很相似。

工作原理

检索通常分为两个阶段。第一阶段用向量检索等快速方法,从海量文档中筛选出几十到几百个候选。这一步会预先把每篇文档的含义压缩成一组数字(向量),只比较它与问题向量之间的距离,因此速度很快,但压缩过程中会丢失一部分信息。第二阶段,重排序器把问题和候选文档逐对一起读取,给出“相关程度”分数,再按分数重新排序。由于同时看问题和文档,结果更准确,但计算量大,所以只用于第一阶段筛出的候选,而不是全部文档。

两阶段检索:先广泛查找,再仔细重新排序问题 → 第一阶段:快速检索; 全部文档 → 第一阶段:快速检索; 第一阶段:快速检索 → 几十到几百个候选(广泛); 几十到几百个候选 → 第二阶段:重排序器; 第二阶段:重排序器 → 真正相关的几条(重新排序); 真正相关的几条 → LLM 阅读并回答问题第一阶段:快速检索向量·关键词几十到几百个候选第二阶段:重排序器问题+文档逐对打分全部文档LLM 阅读并回答真正相关的几条广泛重新排序
两阶段检索:先广泛查找,再仔细重新排序 第一阶段快但粗糙,第二阶段的重排序器慢但准确。因此重排序器只用于第一阶段筛出的候选。

为什么重要

在 RAG 系统中,如果只把检索结果的前几条交给 AI,真正需要的文档可能因为排名稍靠后而被漏掉。但如果交给 AI 的候选太多,又可能超出 AI 一次能读取的长度(上下文窗口),或者因内容过多反而遗漏重要信息。重排序器先广泛召回大量候选,再只挑出真正有用的几条排到前面,从而缓解这一问题。因此,在改进效果不如预期的 RAG 时,它常被视为一种相对简单、见效快的方法。

发展历程

2019 年,Rodrigo Nogueira 和 Kyunghyun Cho 的论文“Passage Re-ranking with BERT”把问题和段落一起输入语言模型 BERT 来打相关度分,用这种简单方法大幅提升了检索排名效果。不过,这种方法需要对每个问题-文档对都运行一次大模型,速度较慢。2020 年,Omar Khattab 和 Matei Zaharia 的“ColBERT”提出“延迟交互”方式:先分别预处理问题和文档,最后再以词为单位做轻量比较,在保持相近准确率的同时大幅提高了速度。2023 年的论文“Is ChatGPT Good at Search?”表明,只要给出合适的指令,ChatGPT 这样的大语言模型就能很好地为文档排序,并提出了把这种能力迁移到小模型上的方法(Distillation)。

注意事项

重排序器只能在第一阶段检索取回的候选中调整顺序,无法找出根本不在候选中的文档。此外,它要对每个候选运行模型,候选越多,响应越慢,成本也越高。因此在实际应用中,权衡第一阶段取回多少条、经重排序器后保留多少条非常重要。

示例

提供检索和 RAG 工具的公司纷纷把重排序器作为独立功能推出。例如,Cohere 介绍其 Rerank API 时说,只要传入一个问题和一组文档,它就会按与问题语义相关度从高到低重新排序后返回。向量数据库公司 Pinecone 也把“两阶段检索”——先用向量检索广泛召回候选,再用重排序器重新排序——介绍为提升 RAG 性能的代表性方法。

相关术语

参考资料