






















下面是一篇适合作为学习笔记或博客的内容,重点解释 Retriever 和 Reranker 的区别,通过生活案例和 RAG Demo 来帮助理解。
学习 RAG 时,很多人都会看到下面这张架构图:
用户问题
│
▼
Retriever(检索)
│
▼
Top20
│
▼
Reranker(重排序)
│
▼
Top3
│
▼
LLM
很多初学者都会有一个疑问:
Retriever 已经找到了文档,为什么还要再来一个 Reranker?
其实,两者的职责完全不同。
一句话概括:
Retriever 负责"找",Reranker 负责"排"。
假设你去一家大型图书馆。
你问管理员:
我想学习《Go 高并发编程》。
管理员不会马上给你一本书。
他会先跑到书架,把所有可能相关的书全部拿回来。
例如:
① Go语言入门
② Go高并发编程
③ Go网络编程
④ Go微服务开发
⑤ Java并发编程
⑥ Python协程
注意:
管理员为什么把 Java 和 Python 也拿来了?
因为:
他怕漏掉真正相关的书。
这就是:
Retriever 的目标只有一个:
宁可多找,也不要漏找。
接下来。
图书馆真正的专家开始工作。
他会一本一本翻。
然后告诉你:
⭐⭐⭐⭐⭐ Go高并发编程
⭐⭐⭐⭐ Go网络编程
⭐⭐⭐ Go语言入门
⭐⭐ Java并发
⭐ Python协程
最后:
只推荐前两本。
这就是:
Reranker 的目标:
把真正最相关的内容排到最前面。
假设知识库里面有:
Redis 单线程模型
Redis 内存存储
Redis 数据结构
Redis Cluster
Redis 发布订阅
Kafka 消息队列
MySQL 索引
用户问:
Redis 为什么这么快?
Retriever 去向量数据库检索。
返回:
Top5
① Redis Cluster
② Redis 单线程
③ Redis 内存
④ Redis 发布订阅
⑤ Kafka
为什么 Redis Cluster 排第一?
因为:
Retriever 使用的是:
向量相似度。
它只能判断:
"语义比较像。"
但是:
并不知道:
Redis Cluster 是否真正回答了:
Redis 为什么快?
Reranker 拿到这 5 篇文档以后。
开始重新分析:
用户问的是:
Redis 为什么这么快?
然后:
逐个判断。
例如:
Redis 单线程
⭐⭐⭐⭐⭐
真正解释了性能原因。
Redis 内存
⭐⭐⭐⭐⭐
也回答了问题。
Redis Cluster
⭐⭐
相关。
但是:
不是重点。
Kafka
⭐
基本无关。
于是:
最终排序变成:
① Redis 单线程
② Redis 内存
③ Redis 发布订阅
④ Redis Cluster
⑤ Kafka
最后:
只把前几篇交给 LLM。
很多新人都会想到:
那为什么不用 Reranker 去搜索整个知识库?
答案:
因为:
太慢。
假设:
知识库:
100 万个 Chunk
如果:
Reranker:
一个一个比较:
问题
+
100 万篇文档
可能:
几分钟才能完成。
用户根本等不了。
而:
Retriever:
利用向量索引。
几毫秒:
就能从:
100 万
↓
Top20
速度非常快。
因此:
企业都会采用:
100 万
↓
Retriever
↓
Top20
↓
Reranker
↓
Top3
既保证速度。
又保证准确率。
Retriever 更像:
快速筛选。
例如:
HR 收到:
10000 份简历
第一步:
只看:
学历
工作年限
技能关键词
快速筛出:
Top100
这一步:
速度最快。
但是:
并不一定最准。
Reranker 更像:
技术面试官。
只看:
100 份
但是:
每一份:
认真阅读。
最后:
选出:
Top10
这一步:
速度慢。
但是:
准确率最高。
| 对比项 | Retriever | Reranker |
|---|---|---|
| 核心职责 | 找文档 | 排文档 |
| 输入 | 用户问题 + 整个知识库 | 用户问题 + TopK 候选文档 |
| 检索范围 | 整个知识库(百万级) | 候选文档(几十条) |
| 工作方式 | 向量相似度检索 | 深度语义理解并重新打分 |
| 速度 | 非常快(毫秒级) | 相对较慢 |
| 目标 | 高 Recall(高召回) | 高 Precision(高准确) |
原因只有一句话:
没有 Retriever,速度太慢;没有 Reranker,排序不准。
因此:
现代企业几乎都会采用下面这种架构:
用户问题
│
▼
Retriever
(快速找到 Top20)
│
▼
Reranker
(重新排序 Top20)
│
▼
Top3
│
▼
LLM
Retriever 保证:
真正相关的文档不要漏掉。
Reranker 保证:
真正最重要的文档排在最前面。
两者结合,才能让 LLM 获得质量最高的上下文。
可以把 Retriever 和 Reranker 用一句最容易记住的话来区分:
Retriever 像图书馆管理员,负责把可能相关的书全部找出来;Reranker 像专业老师,负责从这些书里挑出最值得阅读的几本。
因此,它们并不是竞争关系,而是协作关系。
在企业级 RAG 中:
Retriever:负责高召回(Recall),保证"不要漏。"
Reranker:负责高准确(Precision),保证"排得准。"
LLM:负责根据最终上下文生成答案。
这就是目前几乎所有生产级 RAG 系统采用的经典三层架构。
:::
如果从面试角度来看,你还可以记住一句非常经典的话:
Retriever 解决的是"能不能找到",Reranker 解决的是"找到了以后谁最重要",LLM 解决的是"如何把这些知识组织成自然语言回答用户"。
这句话既准确,又能体现你对整个 RAG 检索链路职责划分的理解。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。