Appearance
1.1.5 RAG、知识库问答、搜索、Agent 的边界分别是什么?
这几个概念经常一起出现,但它们不是一个层级的东西。
如果不先把边界理清,后面很容易出现两种问题:
- 看到一个会回答问题的系统,就叫它 Agent
- 看到一个接了知识库的系统,就默认它一定是 RAG
更清楚的理解方式是:它们分别强调的是不同层面的能力。
搜索:重点是找到资料
搜索的核心目标,是把和问题最相关的信息找出来并排序。
一个搜索系统做得好不好,主要看:
- 能不能找到相关内容
- 结果排序是不是合理
- 用户能不能据此自己继续判断
搜索不一定要生成答案。很多时候,它只需要把最有价值的结果呈现给你就够了。
知识库问答:重点是围绕某个知识范围回答问题
知识库问答更像是一类应用形态,而不是某一种底层技术。
它强调的是:
- 问题集中在一个知识范围内
- 系统要围绕这批知识回答问题
- 用户通常期待“直接得到答案”
知识库问答可以用很多方式实现:
- 传统搜索 + 人工查看
- 搜索 + 模板化回答
- RAG
- RAG + Agent
所以“知识库问答”是应用场景,“RAG”是其中一种常见实现方式。
RAG:重点是检索增强生成
RAG 的重点不是“这个系统是不是知识库问答”,而是它有没有采用这样一条链路:
- 先检索外部知识
- 再基于检索结果生成回答
所以 RAG 更像是一种系统设计方法。
一个系统是不是 RAG,关键看它是不是在回答时使用了外部检索到的上下文,而不是只看它有没有知识库页面。
Agent:重点是规划、决策和工具协同
Agent 关注的是另外一层能力:系统不只是回答一个问题,而是能够为了完成目标,去做一系列动作。
比如:
- 判断该先查什么
- 决定调用哪个工具
- 分步骤执行任务
- 根据中间结果调整下一步
所以 Agent 的重点是:
- 任务分解
- 工具调用
- 状态管理
- 动态决策
它不一定必须用 RAG,但很多 Agent 会把 RAG 作为其中一个能力模块。
这几个概念之间是什么关系
可以把它们理解成下面这种关系:
搜索:解决“找什么”RAG:解决“找到以后怎么基于资料回答”知识库问答:解决“围绕一批知识为用户提供问答服务”Agent:解决“为了完成目标,如何规划、调用工具、协同多个步骤”
它们之间不是互相排斥,而是经常组合出现。
比如一个企业问答助手可能是:
- 应用形态上:知识库问答
- 检索链路上:RAG
- 能力上:带一点搜索
- 高级形态上:再加上 Agent 来做多步推理和工具调用
真正判断时,可以按什么顺序区分
读者最容易卡住的地方,通常不是“背不住定义”,而是遇到一个实际需求时,不知道该把它归到哪一类。
更实用的判断顺序通常是这样:
第一步:先问自己,这个系统的第一目标是什么
如果第一目标是:
把资料找给用户看
那它更接近搜索基于资料直接给一个答案
那它更接近 RAG围绕某一批知识做持续问答服务
那它更接近知识库问答为了完成目标去做多步决策和执行
那它更接近 Agent
很多概念混淆,本质上都是因为一开始没有先分清“系统的第一目标”。
第二步:再问系统有没有“执行动作”
如果系统主要在做:
- 查资料
- 排序资料
- 组织答案
那它大概率还不是 Agent。
如果系统已经开始做:
- 调 API
- 调工具
- 分步骤推进任务
- 根据中间结果改下一步计划
那它才开始明显进入 Agent 范畴。
第三步:再看用户需不需要自己判断原始资料
如果用户很在意:
- 自己点开原文
- 自己比较多个结果
- 自己继续筛选
那搜索的重要性就更高。
如果用户主要想要:
- 一个直接可读的答案
- 最好顺手带引用
那 RAG 的价值通常更高。
第四步:最后看问题是不是围绕一个明确知识范围持续发生
如果系统长期围绕一批固定知识服务用户,比如:
- 企业内部制度
- 产品手册
- 帮助中心
- 项目文档
那它在应用形态上就很接近知识库问答。
这时底层可能用搜索,也可能用 RAG,也可能再叠加 Agent。
也就是说,知识库问答更像“这个产品是干什么的”,而 RAG 更像“这个产品底层怎么回答”。
一个常见误区
很多系统其实只是“带检索的问答”,但因为用了大模型,就容易被直接叫成 Agent。
这会导致设计思路过早复杂化。因为一旦按 Agent 去设计,你就会开始引入:
- 规划
- 多步执行
- 工具路由
- 状态管理
而有些问题其实只需要一条稳定的 RAG 链路就够了。
再具体一点:哪些信号说明你可能不需要 Agent
下面这些信号经常说明,问题更像 RAG 或搜索,而不是 Agent:
- 用户每次只问一个知识问题
- 系统不需要真的执行动作
- 没有明显的多步决策过程
- 回答主要取决于能不能找到正确资料
如果这些特征都成立,通常先把搜索或 RAG 做稳,比一开始上 Agent 更现实。
反过来,哪些信号说明可能已经超出 RAG
如果你开始遇到下面这些要求,就要警惕是不是已经超出“单纯知识问答”了:
- 系统要自己决定先查什么、后查什么
- 系统要调用多个工具组合完成任务
- 系统要根据中间结果动态改计划
- 系统要把“回答问题”升级成“完成目标”
这时再只把它当 RAG 去设计,往往就会开始吃力。
所以在实际判断时,可以先问:
- 我现在是要“找资料”?
- 还是“基于资料回答”?
- 还是“完成一个多步骤任务”?
问题不同,系统重点就不同。
如果你想把这套判断再压缩成一句话,可以记成:
- 想让用户自己看资料,优先想搜索
- 想让系统基于资料直接回答,优先想 RAG
- 想围绕一批知识长期服务用户,优先想知识库问答
- 想让系统自己规划并执行任务,优先想 Agent