【专栏一:AI基础08】-【一张图讲清楚:RAG的原理(从“查资料”到“生成答案”全过程)】 文章目录一、一句话先讲清 RAG第一步先把公司的资料准备好第二步把每张“知识卡片”变成可搜索的形式第三步员工提问时系统先不急着回答而是先去“查”第四步不是把所有查到的内容都扔进去而是再筛一遍第五步把“问题 查到的资料”一起交给大模型二、RAG 和普通搜索有什么区别思考RAG 本质上就是先查资料再回答。假设你在一家公司的内部办公系统里接入了一个 AI 助手。员工会直接问它问题比如“我们公司的年假有几天怎么申请”这时候AI 助手要怎么回答如果它只是一个普通大模型它可能会这样按自己训练时学到的一般常识回答猜一个“多数公司”的规则甚至编一个看起来很像真的答案但问题是每家公司制度都不一样真正准确的答案只在你们公司的制度文档里。这时候RAG 就派上用场了。一、一句话先讲清 RAG在这个案例里RAG 做的事情其实很简单员工提问 → 系统去知识库查制度文档 → 找到相关内容 → 把内容一起交给大模型 → 大模型基于资料回答也就是说AI 助手不再是“靠记忆回答”而是“查完资料再回答”。第一步先把公司的资料准备好在员工提问之前系统就已经在后台做准备了。比如公司有很多文档员工手册考勤制度年假制度报销流程加班规则这些文档本来只是 PDF、Word、网页之类的文件模型并不能直接高效地查。所以系统第一步要做的是把这些文档整理成“方便检索”的形式。具体怎么做比如《员工休假制度》这份文档有 20 页。系统不会整份整份去查而是会把它拆成很多小段。例如拆成第 1 段年假天数规则第 2 段试用期是否享受年假第 3 段请假申请流程第 4 段补休规则第 5 段法定假日说明你可以把它想象成本来是一整本手册现在被拆成很多“知识卡片”。这样做有个好处当用户问“年假有几天”时系统就不用把整本手册都塞给模型只需要找到最相关的那几张“知识卡片”就行。第二步把每张“知识卡片”变成可搜索的形式拆完之后还不够因为系统还得知道哪些内容和“年假有几天”这个问题最相关这里就要用到 RAG 里很核心的一步向量化Embedding这个词听起来有点吓人但在我们的案例里你可以这样理解系统会把每一段文字都变成一个“语义坐标”。比如“年假天数” 和 “休假几天” 在语义上很近“报销审批流程” 和 “年假申请” 就没那么近也就是说系统不只是看字面关键词而是在比较这段话的“意思”和用户问题的“意思”像不像。你可以把它想象成一个图书馆管理员不是只看标题而是大概知道每本书在讲什么。第三步员工提问时系统先不急着回答而是先去“查”现在真正的问题来了“我们公司的年假有几天怎么申请”普通大模型可能会立刻生成答案但 RAG 系统不会它会先做一件更稳妥的事先把用户的问题也做一次向量化然后去知识库里找最相关的内容。在这个案例里系统可能会从几百段公司制度里先筛出这些内容《员工休假制度》第 3 页正式员工每年享有 5 天年假《员工休假制度》第 4 页年假申请需在 OA 系统提交《员工手册》第 12 页年假需由直属主管审批你可以把这个过程想象成员工问了一个问题AI 助手没急着回答而是先冲进公司制度库里翻出最相关的三页资料摊在桌上。这就是 RAG 里面的“检索”。第四步不是把所有查到的内容都扔进去而是再筛一遍真实系统通常不会只查一次就结束。因为第一次检索到的内容里可能有些非常相关有些只是“沾边”。比如系统可能还顺手查到了调休制度病假制度节假日安排这些和“年假”有关但不是这次问题的重点。所以更高级一点的 RAG 系统会再做一步重新排序Rerank也就是再判断一次哪几段最值得给模型看哪几段可以先丢掉最后可能只保留最核心的 2~3 段内容。这一步你可以理解成图书馆管理员先抱来一摞书然后又快速翻了一遍只挑出最关键的几页给你。第五步把“问题 查到的资料”一起交给大模型现在系统已经拿到了最相关的资料接下来不是直接把文档原文甩给用户而是把用户问题和检索出来的资料一起打包成一个新的提示词再交给大模型。在这个案例里模型真正收到的内容可能是这样的你是公司内部制度助手请严格根据以下资料回答问题。资料 1正式员工每年享有 5 天年假。资料 2年假申请需通过 OA 系统提交并由直属主管审批。用户问题我们公司的年假有几天怎么申请这时候大模型就不是在“猜”而是在“看着资料回答”。所以它最后生成的回答就会变成我们公司的正式员工每年享有5天年假。申请时需要通过 OA 系统提交并由直属主管审批。这和普通大模型最大的区别就在这里普通大模型靠记忆、靠概率生成RAG 系统靠检索到的资料增强回答这时候你就能真正理解 RAG 了我们把整个案例再压缩一遍——用户视角——员工问“我们公司的年假有几天怎么申请”系统内部发生的事去公司知识库里找相关制度找到“年假天数”和“申请流程”两段内容把这两段内容和用户问题一起交给大模型大模型基于资料生成答案最终结果AI 助手不再瞎猜而是“有依据地回答”。为什么 RAG 很重要因为现实中很多问题答案并不在模型参数里而在外部资料里。比如公司内部制度客服知识库最新产品文档法律法规更新医疗指南学校通知项目 Wiki这些内容有几个特点经常更新属于私有知识不可能每次都重新训练大模型所以最现实的做法不是“把所有东西都塞进模型脑子里”而是让模型在回答前先去查资料。这就是 RAG 的价值。二、RAG 和普通搜索有什么区别有些人看到这里会问这不就是搜索吗不完全是。普通搜索通常只做到帮你找资料但 RAG 会继续往后走一步帮你找资料帮你读资料帮你整理成最终答案也就是说搜索负责“找到”RAG 负责“找到并回答”。在我们的案例里搜索返回《员工休假制度》第 3 页和第 4 页RAG直接告诉你“5天年假需要通过 OA 提交并由直属主管审批”RAG 也不是万能的讲到这里也要顺手提醒一句RAG 不是“查了资料就一定完美”。如果下面这些环节做不好回答质量依然会差文档切分不合理检索结果不准相关资料没被召回提示词构造不好上下文太长被截断所以你可以把 RAG 理解为一个“让模型更少胡说”的系统方法而不是百分之百准确的魔法。RAG 的本质不是让模型更聪明而是让模型回答前先查资料。思考如果 RAG 的效果不好到底是哪一环出了问题是文档切分不对、检索不准还是提示词没写好