跳到主内容
快讯直播
AI智模界
AI 词典

重排序(Reranking):先海选,再面试

一句话定义

重排序(Reranking)是在检索系统先用便宜快速的方法捞出一批候选文档,再用更贵、更准的模型对这一小批文档重新打分排序的步骤。它不负责"找得到",只负责"排得准"。

为什么要分两步

在检索增强生成(RAG)里,最怕的不是检索不到,而是检索到了却排得太靠后。大语言模型(LLM)能读的上下文有限,把上百条结果全塞进去,既费钱又容易被噪声带偏,所以必须把真正相关的那几条顶到最前面。

问题在于,第一阶段用的方法快是快,但粗。常见做法是把问题和文档分别编码成向量,再算余弦相似度。这类双塔(Bi-encoder)结构意味着问题和文档在打分之前从未"见过面",只能比整体语义是否接近,细粒度的词语对应关系对不上。于是就有了第二阶段:交叉编码器(Cross-encoder)——把问题和文档拼在一起送进模型,让它们做充分的内部交互,直接输出一个相关性分数。

打个比方

像招聘。HR 先按关键词从一万份简历里筛出五十份,速度快,但"做过推荐系统"和"负责推荐系统相关模块"的人可能被漏掉。接着用人经理把这五十份逐份精读,判断谁真的合适——准,但一天只能看五十份,不可能对一万份都这么干。

重排序就是这个"用人经理"。它的贵和慢,恰恰是它准的原因:每一对"问题 + 文档"都要单独跑一次模型,无法提前算好缓存起来。所以业界的通用做法是让第一级召回放宽标准、多捞一些(几十到上百条),再让重排序把它压到三五条交给模型生成答案。

和相邻概念的区别

维度粗召回(Retrieval / Recall)重排序(Reranking)
模型结构双塔、稀疏检索等交叉编码器
打分方式问题与文档各自编码后算相似度拼在一起整体打分
速度快,向量可预计算慢,必须在线计算
处理量级百万级 → 几十上百条几十上百条 → 前几条
优化目标别漏(高召回)排准(高精度)

一句话概括:召回追求"宁可错杀,不可放过",重排序负责"把对的挑出来、按对的程度排好"。

对实际工作的意义

对做 RAG 的工程师来说,一个反复出现的教训是:问答答不准,很多时候不是向量模型不够好,而是整个链路里少了重排序这一环。加上它之后,改善往往比换一个更大的嵌入模型更明显。需要权衡的是延迟和成本——重排的条数越多越准,但每次查询都要多跑几十次模型推理,这个数字是典型的调参点。也可以做级联:先用小模型从一百条筛到二十条,再用更重的模型精排到前五。

对普通职场人来说,这件事的启发更朴素:搜索、问答机器人、推荐流,背后都是同一套"多级漏斗"逻辑。你觉得某个助手"答非所问",未必是它不懂,而是最该看的那份材料压根没被排进它视野里的前几名。找得到和找得准,从来是两件事。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。