重排Rerank
你可能会说
搜出来 20 条,凭什么决定给模型看哪 3 条?
把初步搜出的候选和问题逐对再读一遍、重新打分排序,只把最靠得住的几条送到模型面前。例如问「买回来的东西要退,运费谁出」,向量检索先召回 20 条含「退款」的段落;重排模型把问题和每条段落放在一起读,判断哪段真能回答,把《退换货流程》第 2 节顶到第一,其余丢掉。
也常被叫作精排重排序Reranker
运行流程 · 先捞再挑
① 召回:先捞 20 条候选退款政策 v30.62运费说明0.58退换货流程 第 2 节0.51还有 17 条……只比过单句相似度
② 成对打分:问题和每条候选放在一起读退换货流程 第 2 节0.91退款政策 v30.88运费说明0.34
③ 截断只把前 3 条给模型第 4 名以后丢掉
④ 阈值
用快的办法(向量或关键词)先捞出几十条候选,追求别漏
把问题和候选一起送进模型判「这段能不能回答」,比各算各的准,但慢且贵
按新排名只留前几条。给模型的内容越少越聚焦,token 花费也越低
全都低于分数线时干脆说「资料里没有」,比硬凑一个答案安全
容易混淆?这样区分
检索≠重排
检索负责「找得到」,重排负责「排得准」。重排只在已经捞出的候选里排序:该内容没被召回,它变不出来。
各算各的(bi-encoder)≠成对读(cross-encoder)
前速度快、可以提前算好存起来,但只比句子像不像;后者把问题和候选放在一起判,准得多,也慢贵得多——所以先用快的捞一批,再用慢的挑几条。
常见做法 · Variants
交叉编码器重排Cross-encoder
问题 + 候选→一个分数
主力做法:候选几十条时又快又稳,有专门的 rerank 模型
让大模型来挑LLM Rerank
把候选都塞进上下文→请它排序
候选少、判断复杂(要看时效和版本)时;成本和延迟明显更高
多样性重排MMR
相关+不重复
前几条不能都是同一页的近似内容时,避免答案只来自一个角落
典型使用场景
问答系统里「参考来源」那三行,通常就是重排留下的
问:数码类退货谁付运费?
1退换货流程 第 2 节0.91
2退款政策 v30.88
模型只看到这两条,所以答案有依据、也能追
重排救不回没被召回的内容
候选 20 条里没有「2026 版运费规则」
重排只在候选里排序,翻不出没被捞上来的那一页——该调的是切块和召回
延伸阅读 · 权威出处