什么是 RAG?从原理到工作流,一篇讲清 RAG 增强生成流程

2026-05-16· AI 应用开发· 0 次阅读· 阅读约 13 分钟

为什么你的AI助手总爱“编答案”?RAG 就是那个能帮它作弊的“小抄本”。

你有没有遇到过这种情况:问AI一个公司内部的问题,它回答得头头是道,但细看全是网上搜来的通用信息,甚至还会凭空捏造一些不存在的流程?或者让它推荐最新的技术方案,它却翻出三年前的过时资料?

这不是AI不够聪明,而是它天生有个“硬伤”——知识截止日期。大模型的知识来自训练时的数据,之后发生的事情它一概不知。更麻烦的是,为了让你满意,它偶尔会“自信地胡说八道”,这就是传说中的幻觉

怎么破?答案是 RAG(检索增强生成)。今天这篇文章,我会用最通俗的方式,把RAG的原理、工作流程和关键技术讲清楚。

一、RAG到底是什么?给AI配个“外挂知识库”

RAG = 检索(Retrieval) + 增强(Augmented) + 生成(Generation)

你可以把它想象成:让AI在回答之前,先偷偷翻一下“小抄”

传统大模型就像一个闭卷考试的学生——只能靠脑子里的记忆答题,遇到没学过的或者记错了,就会瞎蒙。而RAG相当于允许大模型开卷:先到知识库里快速查找相关段落,然后结合查到的资料和自己的语言能力,给出一个有理有据的回答。

所以,RAG改造后的AI:

  • 回答更准:基于真实资料,不易胡说
  • 能及时更新:知识库换新内容,AI马上学会
  • 有据可查:甚至可以告诉你答案来自哪份文档
  • 更懂你:知识库可以是你自己的业务数据,语气、风格都可以定制

对比一下传统大模型 和 RAG增强模型的区别:

特性 传统大模型 RAG增强模型
知识新鲜度 截止到训练时 随时可更新
专业深度 泛知识,通用 可接入专业库
胡扯概率 较高 大幅降低
可控性 不可控 通过知识库控制
资源消耗 模型巨大 模型可小,成本更低

二、RAG工作流程拆解

一个完整的RAG系统包含四个关键步骤:文档收集和切割向量转换和存储文档过滤和检索查询增强和关联。我们跟着一个具体例子来走一遍。

假设:你是一家公司的客服AI,需要回答产品规格问题。知识库里存着《产品手册2026版》等文档。

第一步:文档收集与切分

先把你的PDF、Word、网页、数据库内容统统抓过来,清洗掉乱码、统一格式。然后,把长文档切成一个个小片段(chunk),每个片段通常在几百个token左右。

切分的方式很有讲究,常见的切分方式:

  • 按固定长度切(比如512个token)——简单但可能打断句子
  • 按语义边界切(段落、章节)——更合理
  • 递归切分(优先按段落,太长再按句子)——折中方案

这一步其实是最容易影响最终效果的。切得好,召回率高;切得烂,神仙也救不了。我之前专门写了一篇不同文档切分策略的实测,感兴趣的可以阅读我的另一篇文章 【TODO】别再乱切文档了:实测5种切分策略在RAG中的效果

第二步:向量化与存储

计算机看不懂文字,但看得懂数字。所以要把每个文本片段“翻译”成一组数字,这就是向量

  • Embedding模型 负责这个翻译工作。它会把一段文字映射到高维空间中的一个点。
  • 语义相似的文本,在这个空间里距离更近。比如“电脑”和“笔记本”的向量会挨着,“电脑”和“香蕉”就离得远。
  • 生成的向量和它对应的原文,一起存进向量数据库

向量数据库专门为这种“找近邻”的查询做了优化。常见的包括Milvus、Pinecone,以及传统数据库的向量插件(PGVector、RediSearch等)。

为什么要这么折腾将**文本转换成向量?**

了解了基本文本向量化基本概念,有的朋友读到这里可能就会有疑问了,我们为什么需要将文本向量化呢?直接将文本输入给大模型或者存储起来不可以吗?

回答是——**不可以!!!**总结原因有三:

  • (1)让文本可计算:把文本转换成向量,最根本的原因在于:计算机只能处理数字,无法直接理解文字符号。而向量是文本的一种数值化表示,有了它才能让计算机“读懂”文本,并执行各种智能任务
  • (2)语义表征:在向量空间中,词的语义关系(相似、类比、蕴含)可以被映射为可量化的距离与方向,从而让机器“理解”含义而非字面匹配。
  • (3)降低维度与抽象表示 :原始文本通常是极高维且稀疏的,直接使用会导致计算爆炸且泛化能力差。通过向量化(尤其是降维技术)既避免计算灾难与过拟合,又为各类机器学习模型提供高效、泛化的特征输入

第三步:检索与过滤

当用户问“产品A的防水等级是多少?”时,系统先把这个问题也转成向量,然后去向量数据库里找和它最相似的几个文档片段。常用的相似度算法有余弦相似度、欧氏距离等。

有时候还会加上一些过滤条件,比如只查最近三个月更新的文档,或者指定文件来源。这样就能快速拿到一批和问题高相关的候选段落。

这里涉及几个术语

  • 召回:就是快速捞出可能相关的一堆结果,不要求特别准,但必须快、广。
  • 精排:对上一步捞出的一两百个结果,用更复杂的模型算分,挑出最相关的3-5个给大模型。精排通常会用Rank模型(如BERT排序)。

第四步:增强生成

最后一步,把检索到的几个相关段落和用户原问题,拼成一个增强提示(Augmented Prompt),喂给大模型。模型会根据这些上下文生成最终答案,甚至可以引用具体来源。

比如提示词可能是:

plain
请根据以下参考资料回答用户问题。
参考资料1:产品A防水等级IP68...
参考资料2:...
用户问题:产品A的防水等级是多少?

这样模型就不会瞎编,老老实实照资料说。

三、一张图看懂RAG全流程

四、RAG 进阶——混合检索让结果更聪明

只靠向量检索有时候也会翻车——比如用户搜“iPhone 15”,向量检索可能把“iPhone 14”也当成相近的,但关键词“15”却没有被重视。解决办法是混合检索

  • 同时跑关键词检索(经典算法BM25)和向量检索。
  • 把两者的结果按一定权重合并(比如各占50%)。
  • 很多RAG框架(如Dify、LlamaIndex)都支持这种策略,还可以调权重。

这样既保留了关键词的精确匹配,又利用了语义的泛化能力。关于RAG的混合检索,大家感兴趣可以阅读我的另一篇文章:什么是混合检索?在RAG系统中如何结合BM25与向量检索实现混合检索?

五、RAG 相关术语速查表

这里汇总一下关于 RAG 的相关的技术术语,方便大家查阅:

术语 一句话解释
向量 向量就像是一个有序的数字列表,或者说是多维空间中的一个点、一条有方向的线段。这些数字共同描述了对象在某一个"特征空间"中的位置。
Embedding(嵌入) 把文本转换为多维向量的过程叫做Embedding(嵌入)。
Embedding Model 嵌入模型 嵌入模型可以把文本转换成多维向量。
向量数据库 能够存储向量并且具有向量相似度检索相关能力的数据库。
向量维度 向量的维度就是这个列表里数字的个数。例如,向量[0.12,-0.870.33,1.24]的维度是4;较高维度通常能提供更丰富的语义信息和更强的区分能力,尤其利于处理复杂语义或需要高精度的场景。但这会增加计算量占用更多内存和存储,也可能使计算速度变慢
召回 第一轮筛选,快但不太准
精排 第二轮筛选,慢但准
Rank模型 给结果打分的模型
混合检索 关键词+向量一起上,效果更稳

总结

关于 RAG 的基本原理,本文就讲到这里。但理论只是第一步,接下来我会陆续输出更落地的内容:

  • Spring AI + 本地知识库 RAG 实战:从零搭建一个完整的问答系统,代码、配置、踩坑点全记录。
  • 向量数据库选型对比:Milvus、PGVector、Redis Stack 怎么选?
  • RAG 评估与调优:如何量化你的 RAG 系统到底好不好用?

如果你不想错过这些实战教程,欢迎关注我的公众号 AutowiredAI,每一篇都会第一时间推送。后台回复 「RAG」 还能获取本文的完整代码仓库链接(实战篇发布后自动更新)。

评论

评论功能即将上线,敬请期待...

🏷️ 文章标签

RAGAI 大模型基础Spring AIAI 编排框架

©2026 EasyBlog 版权所有. Powered by Nuxt.