惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Security Latest
Security Latest
Recorded Future
Recorded Future
人人都是产品经理
人人都是产品经理
S
SegmentFault 最新的问题
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学
Know Your Adversary
Know Your Adversary
Spread Privacy
Spread Privacy
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
量子位
L
LINUX DO - 热门话题
L
Lohrmann on Cybersecurity
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tor Project blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
T
Threatpost
T
Tenable Blog
有赞技术团队
有赞技术团队
大猫的无限游戏
大猫的无限游戏
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
C
Cisco Blogs
H
Heimdal Security Blog
Attack and Defense Labs
Attack and Defense Labs
A
About on SuperTechFans
Last Week in AI
Last Week in AI
N
News and Events Feed by Topic
T
Threat Research - Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
I
Intezer
V
V2EX
Cyberwarzone
Cyberwarzone
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
B
Blog RSS Feed
V
Vulnerabilities – Threatpost
N
Netflix TechBlog - Medium
T
The Blog of Author Tim Ferriss
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
U
Unit 42
PCI Perspectives
PCI Perspectives
P
Privacy International News Feed
D
Docker

博客园 - 若-飞

企业AI Agent落地的核心逻辑与路径 基于langchain,Function Call的成功率怎么解决? LangChain Checkpoint(检查点)是什么?—— Agent 的"存档机制" RAG 设计:Embedding 如何切分 AI 客服系统设计:RAG 知识库设计 Go 百万连接服务器设计:从网卡到业务的全链路解析 深度解析 sync.Pool:从设计哲学到生产实践 Goroutine 泄漏:原因、检测与防范 Go Channel 关闭与超时机制完全指南 Go Map 无限增长问题解决方案 LangChain 聊天记录压缩:原理、机制与实战 揭开 sklearn 文本分类的核心原理:从词袋到逻辑回归 大模型“胡说八道”怎么办?一张图读懂检测、评估与修复全方案 企业级AI知识库权限隔离设计:让AI“懂规矩”比“懂知识”更重要 RAG系统设计全解析:从架构到多模态的核心知识图谱 RAG召回率提升全攻略:7大核心方法让检索更精准 RAG召回率提升秘籍:Metadata过滤的底层原理与实践 构建更好的RAG系统:深入理解混合搜索 一文搞懂 RAG 的召回率(Recall)是什么? LangChain / LangGraph、MCP、Harness Engineer 与 Claude Code 的对应关系 Agent Harness 技术笔记:从 Trajectory 到 Function Calling Loop BLEU 是什么?——从原理到工程实践 一文讲清:Approve / Permit / Permit2 的本质区别 分库分表后跨分页查询的完整方案 ai如何处理私有数据 ai幻觉是啥,以及如何解决 别再让大模型“凭空瞎猜”了!带你认识AI最强外挂:ChromaDB 用 useQuery 管请求:TanStack React Query 入门小结 HD钱包--BIP44 TRON 四种 API 面怎么选:从节点协议到 JSON-RPC 再到 TronGrid 以太坊节点存储与共识机制全解析 BSC节点发现协议全解析:UDP发现、Bootnode引导与Gossip交易广播 以太坊节点发现背后的分布式哈希表(DHT)与 Kademlia 原理解析 Solidity中的bytes与string:深入理解这两种特殊的动态数组 智能合约自毁:当资产还在,合约死了 —— 深度解析 selfdestruct 导致的资产锁定风险 TDengine CLI (taos) 使用指南 —— Docker 本地开发实战 在 macOS 上用 DBeaver 连接 TDengine:踩坑总结与最终配置指南 Solidity Storage Slot 深度解析 Geth Snapshot Export/Import 深度解析: 不是备份工具,而是数据分析利器 基于BSC 公链的数据备份与 Snapshot 机制深度解析 Docker 共享内存完全指南:从原理到实践,避免常见的理解误区 Docker容器"僵尸状态"问题排查与自动重启方案 SSE协议深度解析:被低估的HTTP服务器推送标准 TDengine vs MySQL:时序数据处理的时代之选 Proxmox 启用 QEMU Guest Agent 实战指南 解决 Blockscout "batch too large" 错误的完整指南 一文讲清楚什么是基准测试(Benchmark) Rust中的宏(Macro):编译时的代码生成魔法 Docker优雅关闭的艺术:为什么stop_grace_period能防止数据丢失 为什么 Go 没有依赖注入和 Bean 机制?语言设计哲学对比
一文搞懂 RAG 中 Retriever 和 Reranker 的区别
若-飞 · 2026-07-06 · via 博客园 - 若-飞

下面是一篇适合作为学习笔记或博客的内容,重点解释 Retriever 和 Reranker 的区别,通过生活案例和 RAG Demo 来帮助理解。

一文搞懂 RAG 中 Retriever 和 Reranker 的区别

学习 RAG 时,很多人都会看到下面这张架构图:

用户问题
    │
    ▼
Retriever(检索)
    │
    ▼
Top20
    │
    ▼
Reranker(重排序)
    │
    ▼
Top3
    │
    ▼
LLM

很多初学者都会有一个疑问:

Retriever 已经找到了文档,为什么还要再来一个 Reranker?

其实,两者的职责完全不同。

一句话概括:

Retriever 负责"找",Reranker 负责"排"。


先看一个最容易理解的例子

假设你去一家大型图书馆。

你问管理员:

我想学习《Go 高并发编程》。

管理员不会马上给你一本书。

他会先跑到书架,把所有可能相关的书全部拿回来。

例如:

① Go语言入门
② Go高并发编程
③ Go网络编程
④ Go微服务开发
⑤ Java并发编程
⑥ Python协程

注意:

管理员为什么把 Java 和 Python 也拿来了?

因为:

他怕漏掉真正相关的书。

这就是:

Retriever(检索)

Retriever 的目标只有一个:

宁可多找,也不要漏找。


接下来。

图书馆真正的专家开始工作。

他会一本一本翻。

然后告诉你:

⭐⭐⭐⭐⭐ Go高并发编程
⭐⭐⭐⭐ Go网络编程
⭐⭐⭐ Go语言入门
⭐⭐ Java并发
⭐ Python协程

最后:

只推荐前两本。

这就是:

Reranker(重排序)

Reranker 的目标:

把真正最相关的内容排到最前面。


一个 RAG 的 Demo

假设知识库里面有:

Redis 单线程模型
Redis 内存存储
Redis 数据结构
Redis Cluster
Redis 发布订阅
Kafka 消息队列
MySQL 索引

用户问:

Redis 为什么这么快?

第一步:Retriever

Retriever 去向量数据库检索。

返回:

Top5

① Redis Cluster
② Redis 单线程
③ Redis 内存
④ Redis 发布订阅
⑤ Kafka

为什么 Redis Cluster 排第一?

因为:

Retriever 使用的是:

向量相似度。

它只能判断:

"语义比较像。"

但是:

并不知道:

Redis Cluster 是否真正回答了:

Redis 为什么快?


第二步:Reranker

Reranker 拿到这 5 篇文档以后。

开始重新分析:

用户问的是:

Redis 为什么这么快?

然后:

逐个判断。

例如:

Redis 单线程
⭐⭐⭐⭐⭐

真正解释了性能原因。

Redis 内存
⭐⭐⭐⭐⭐

也回答了问题。

Redis Cluster
⭐⭐

相关。

但是:

不是重点。

Kafka
⭐

基本无关。

于是:

最终排序变成:

① Redis 单线程
② Redis 内存
③ Redis 发布订阅
④ Redis Cluster
⑤ Kafka

最后:

只把前几篇交给 LLM。


为什么不能直接使用 Reranker?

很多新人都会想到:

那为什么不用 Reranker 去搜索整个知识库?

答案:

因为:

太慢。

假设:

知识库:

100 万个 Chunk

如果:

Reranker:

一个一个比较:

问题

+

100 万篇文档

可能:

几分钟才能完成。

用户根本等不了。

而:

Retriever:

利用向量索引。

几毫秒:

就能从:

100 万

↓

Top20

速度非常快。

因此:

企业都会采用:

100 万

↓

Retriever

↓

Top20

↓

Reranker

↓

Top3

既保证速度。

又保证准确率。


Retriever 和 Reranker 的工作方式有什么不同?

Retriever 更像:

快速筛选。

例如:

HR 收到:

10000 份简历

第一步:

只看:

  • 学历

  • 工作年限

  • 技能关键词

快速筛出:

Top100

这一步:

速度最快。

但是:

并不一定最准。


Reranker 更像:

技术面试官。

只看:

100 份

但是:

每一份:

认真阅读。

最后:

选出:

Top10

这一步:

速度慢。

但是:

准确率最高。


两者最核心的区别

对比项 Retriever Reranker
核心职责 找文档 排文档
输入 用户问题 + 整个知识库 用户问题 + TopK 候选文档
检索范围 整个知识库(百万级) 候选文档(几十条)
工作方式 向量相似度检索 深度语义理解并重新打分
速度 非常快(毫秒级) 相对较慢
目标 高 Recall(高召回) 高 Precision(高准确)

为什么企业级 RAG 都要采用两阶段检索?

原因只有一句话:

没有 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 检索链路职责划分的理解。