

























在学习 RAG(Retrieval-Augmented Generation,检索增强生成)时,经常会听到一句话:
"RAG 首先要保证高召回率(High Recall)"
很多初学者都会疑惑:
什么是召回率?
为什么不是准确率?
它和大模型有什么关系?
其实,理解了一个简单的 Demo,就能彻底明白。
一句话概括:
召回率(Recall)表示:所有真正相关的文档中,被检索系统成功找出来了多少。
它关注的是:
有没有把真正需要的知识找到。
而不是:
排得是否最准确。
假设你的知识库中有 100 万个文档。
用户提出一个问题:
Redis 为什么这么快?
实际上,与这个问题真正相关的文档只有下面 5 篇:
① Redis 单线程模型
② Redis 基于内存存储
③ Redis IO 多路复用
④ Redis 高效数据结构
⑤ Redis Pipeline
也就是说:
真正相关文档 = 5 篇
现在,RAG 开始进行向量检索(Retriever)。
假设设置:
Top-K = 3
系统最终返回:
① Redis 单线程模型 ✅
② Redis 基于内存存储 ✅
③ Redis Cluster 集群 ❌
可以看到:
真正相关的文档一共有:
5 篇
但是系统只找到了:
2 篇
因此:
召回率(Recall)
= 找到的相关文档数量
─────────────────
所有相关文档数量
= 2 / 5
= 40%
这就是:
召回率只有 40%。
因为:
LLM(大模型)只能根据检索出来的内容回答。
继续上面的例子。
真正解释 Redis 为什么快的重要知识是:
Redis IO 多路复用
但是:
Retriever 没有找到。
于是,大模型最终只能看到:
Redis 单线程
Redis 内存
Redis Cluster
它可能回答:
Redis 使用内存存储,因此速度很快。
虽然回答没有错误,但遗漏了:
IO 多路复用
高效数据结构
Pipeline
所以答案并不完整。
原因不是:
大模型不会。
而是:
大模型根本没有看到这些知识。
如果把 Top-K 调整为:
Top-K = 10
系统可能返回:
① Redis 单线程
② Redis 内存
③ Redis IO 多路复用
④ Redis 数据结构
⑤ Redis Pipeline
⑥ Redis Cluster
⑦ Redis 发布订阅
⑧ Redis AOF
⑨ Kafka
⑩ MySQL
可以看到:
真正相关的 5 篇文档全部找到了。
这时:
Recall = 5 / 5 = 100%
虽然里面还有一些无关内容(例如 Kafka、MySQL),但是没关系。
因为:
真正重要的信息已经全部找回来了。
这就是:
高召回(High Recall)。
现代 RAG 一般分成两个阶段:
用户问题
│
▼
Retriever(检索)
│
▼
Top20
│
▼
Reranker(重新排序)
│
▼
Top3
│
▼
LLM
第一阶段(Retriever)的目标就是:
宁可多找,也不要漏找。
因为:
如果真正相关的文档都没有找回来,
后面的 Reranker 再厉害,
LLM 再智能,
也无法回答不存在于上下文中的知识。
可以把召回率理解成一句最简单的话:
召回率不是看找得准不准,而是看真正有用的文档有没有被找回来。
对于 RAG 来说:
找不到相关知识(低召回),大模型一定答不好。
找回来之后,再通过 Reranker 重新排序,提高最终答案质量。
因此,在企业级 RAG 中,经常会强调一句话:
Retriever 负责提高 Recall(召回率),Reranker 负责提高 Precision(准确率),LLM 负责生成最终答案。
这也是目前生产级 RAG 最经典的三层架构思想。
:::
如果你继续学习 RAG,下一篇建议写 《RAG 的准确率(Precision)是什么?为什么 Retriever 后面还要加一个 Reranker?》,这两篇结合起来,就能把 RAG 检索链路彻底理解清楚。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。