Appearance
1.1.4 哪些场景适合用 RAG,哪些场景不适合?
RAG 很有用,但不是所有大模型应用都应该上 RAG。
判断是否适合,最关键的不是看“这个技术火不火”,而是看你的问题是否真的依赖外部知识检索。
哪些场景适合用 RAG
适合用 RAG 的场景,通常有一个共同点:回答时必须参考外部资料,而且这些资料对答案质量影响很大。
常见场景包括:
1. 基于知识库的问答
比如企业内部文档问答、产品手册问答、帮助中心问答、FAQ 助手。
这类场景里,答案本来就应该建立在已有资料之上。RAG 能把这些资料接入进来,让系统不是凭感觉说话。
2. 依赖私有数据的场景
比如公司流程、内部规范、售后记录、客户文档、项目资料、代码仓库说明。
这类内容不在模型通用训练语料里,所以不接外部知识,系统就没有真正可用的信息基础。
3. 知识经常变化的场景
比如政策更新、产品版本更新、库存和价格变化、规则频繁调整。
这类场景中,如果你希望系统尽量跟上最新资料,RAG 通常比“把知识写死在模型里”更现实。
4. 希望答案可追溯、可引用的场景
比如医疗、金融、法律、企业知识系统、面向客户的专业问答。
这类场景中,用户往往不仅关心答案是什么,还关心答案依据是什么。RAG 更容易和引用来源、证据链、人工复核结合。
5. 问题本身像“先找资料,再组织答案”
还有一类很适合 RAG 的问题,判断方式很直接:
如果你让一个专业人员来回答,他也会先去:
- 查制度
- 查手册
- 查 FAQ
- 查项目文档
然后再把信息组织成答案
那这类问题通常就很适合 RAG。
因为它的本质,本来就是“基于现有资料回答”,而不是“凭脑内规则直接执行”。
哪些场景不一定适合用 RAG
有些问题看上去也在用大模型,但核心并不在“查资料”,这时 RAG 可能不是重点,甚至会增加不必要的复杂度。
1. 主要是行为类任务,而不是知识类任务
比如:
- 文案改写
- 风格模仿
- 分类打标签
- 情感分析
- 固定格式抽取
这类任务更关注模型“怎么做”,而不是“去哪里查资料”。如果外部知识不是关键依赖,RAG 通常不会带来决定性收益。
2. 输出高度固定、规则明确的任务
如果一个任务本质上更像规则系统、表单校验或工具调用编排,那么直接用程序规则、工作流、结构化约束往往更稳。
RAG 可以补充背景知识,但不一定应该成为主方案。
3. 问题不依赖外部知识,只依赖模型通用能力
比如基础翻译、文本润色、标题生成、摘要改写等。
这类任务即使接了检索,很多时候也不会带来明显收益,反而会让链路更长、成本更高。
4. 需要极强确定性的场景
如果一个问题必须严格按规则输出,不允许自由生成,那就不能只依赖 RAG。因为 RAG 本质上仍然是“检索 + 生成”,而生成天然带概率性。
这时更合理的做法通常是:
- 规则系统
- 工具调用
- 数据库查询
- 工作流编排
把 RAG 放在辅助位置,而不是核心执行位置。
5. 本质上是“查状态”而不是“查知识”的问题
比如:
- 这张订单现在是什么状态
- 这个用户今天有没有下单
- 当前库存还剩多少
- 这个审批单是谁卡住了
这类问题看起来也像“问答”,但底层更像:
- 数据查询
- 实时状态读取
- 工具调用
如果把这类问题一股脑做成 RAG,系统反而容易变慢、变贵,还更不稳定。
更合理的做法通常是:
- 先查数据库或业务系统
- 必要时再用 RAG 补背景解释
一个更有操作性的判断框架
很多时候,读者真正难的不是“听懂这些原则”,而是遇到一个新问题时,不知道到底该怎么选。
更实用的判断方式,是先把问题分成下面四类:
第一类:我要找资料,但想自己判断
这类更像:
- 搜索
- 搜索结果页
- 文档导航
重点是“把资料找出来”,而不是“系统替你下结论”。
第二类:我要基于资料,直接得到一个答案
这类更像:
- RAG
- 知识库问答
- 检索增强回答
重点是“先找到证据,再组织答案”。
第三类:我要查一个确定状态或执行一个确定动作
这类更像:
- 数据库查询
- API 调用
- 工作流
- 工具调用
重点是“拿到确定结果”或“完成确定动作”,而不是生成一段自然语言。
第四类:我要完成一个多步目标
这类更像:
- Agent
- Workflow + Agent
- 多工具协作系统
重点是“规划、决策、调用工具、根据中间结果继续往下做”。
为什么很多场景会被误判成“适合上 RAG”
最常见的误判有三种:
1. 只要是问答界面,就以为应该上 RAG
但问答界面只是一种交互形式,不代表底层问题一定是知识检索问题。
有些问答界面背后真正需要的是:
- 实时数据库查询
- 工具执行
- 流程审批
2. 只要有文档,就以为文档一定该进 RAG
但如果用户真正关心的是当前实时状态,文档往往只是背景资料,不是主答案来源。
3. 只要模型回答不稳定,就下意识加 RAG
但如果问题本质上是:
- 格式控制
- 行为稳定
- 确定性执行
那更合理的方向可能是规则、工具、工作流或微调,而不是先加检索。
一种实用判断方式
遇到一个新场景时,可以先问自己四个问题:
- 回答是不是必须依赖外部资料?
- 这些资料是不是会变化?
- 这些资料是不是模型默认拿不到?
- 用户是不是很在意答案的依据和可核验性?
如果这四个问题里,大多数答案都是“是”,RAG 往往值得认真考虑。
如果大多数答案都是“否”,那就要警惕自己是不是把 RAG 用成了默认答案。
如果你还想再判断得更稳一点,可以再追问两个问题:
- 这个问题的答案更像“知识说明”,还是“实时状态”?
- 即使没有大模型,这个问题本来是不是也会先去查资料?
这两个问题往往能帮你把“RAG 问题”和“查询 / 工具 / 工作流问题”更快分开。
不要把“适合”理解成“只能”
最后要注意,适合与不适合,不是绝对二元判断。
很多系统都是组合方案:
- 用 RAG 解决知识接入
- 用规则或工具解决确定性执行
- 用微调解决格式和行为稳定性
真正成熟的设计,通常不是“什么都交给 RAG”,而是把 RAG 放在它最擅长的位置上。