---
title: "重排（rerank）解决什么问题"
description: "向量召回只是粗排。这一页讲清 rerank 用交叉编码器对候选精排的机制、召回与重排的取数关系、延迟与成本，以及没有重排模型时的兜底和效果评估方法。"
updated: 2026-11-13
canonical: https://docai.cc/concepts/rerank/
markdown_mirror: https://docai.cc/concepts/rerank.md
---
## 它是什么

重排（rerank）是在召回之后追加的一步精排。检索先用向量或关键词粗筛出一批候选，再由一个专门的模型逐条判断「这个片段到底能不能回答这个问题」，按相关性重新排序，只把最前面的几条交给大模型。

## 怎么工作

召回和重排的目标不同。召回追求快和全，向量检索把查询和片段分别编码成向量再比相似度，代价低，但它比较的是整体语义像不像，而不是能不能回答问题。

重排通常用交叉编码器：把查询和候选片段拼在一起送进模型，直接输出相关性分数。查询和文档在模型内部发生交互，判断更准；代价是每条候选都要单独跑一次，开销随候选数量增长。

常见的取数方式是召回 top-k，重排后取前 n 条放进上下文。k 和 n 要一起调：k 太小，正确答案进不了候选；n 太大，无关片段占满预算。

重排是同步链路里新增的一跳，候选多、文本长时延迟明显。工程上要设超时和降级：重排服务不可用时退回原始召回顺序，而不是让整个问答失败。

没有重排模型时，可以用规则兜底：关键词命中、字段权重、时间新近度、来源可信度。对专名、编号、错误码这类查询，关键词规则往往更稳。索引层也能直接设置相似度阈值和过滤条件。

## 常见误解

- **重排能救回没召回到的内容**：不能。重排只对候选集排序，召回漏掉的内容它看不到。
- **重排模型越大越好**：延迟和成本一起涨，收益还取决于候选质量。
- **上了重排就一定更好**：召回本来就好、n 又小时，提升可能抵不过延迟。
- **只看最终答案**：要把召回质量和排序质量分开评估，否则无法判断问题出在哪一层。

## 怎么评估重排有没有用

用一批带标注的问题，固定召回结果，比较重排前后正确片段进入前 n 的比例；再看端到端答案正确率和延迟变化。如果命中没有提升、延迟明显增加，就不要上重排。评估方法可以参考[如何评估一次改动](/learn/evaluate-changes/)。

## 延伸阅读

- 召回的基础：[什么是 RAG](/concepts/rag/)
- 向量怎么来：[什么是 embedding](/concepts/embedding/)
- 向量存在哪：[什么是向量数据库](/concepts/vector-database/)
- 动手搭一条链路：[最小可用 RAG](/learn/minimal-rag/)
