作者 | 江南一点雨
来源 | 江南一点雨
一 什么是RAG
RAG,英文全称是 Retrieval-Augmented Generation,中文我们一般叫做检索增强生成,这是一种结合信息检索技术与生成式大语言模型(LLM)的框架。
RAG 的核心思想是:在生成答案前,先从外部知识库中检索相关信息,并将这些信息作为上下文输入大模型,从而提升生成内容的准确性和时效性。
简单来说,由于大模型知识比较陈旧,当我们提问时,我们可以利用搜索工具在互联网上搜索我们问题的答案,并且将搜索到的答案和我们原本的问题一起发给大模型,由大模型进行处理。
想象一下:你有一个特别聪明的朋友,但他有个毛病——喜欢“不懂装懂”
-
-
他可能会瞎编:“《星际穿越2》上周刚上映,评分 9.8!”(其实根本没这部电影)
-
这个“先查资料再回答”的过程,就是 RAG(检索增强生成)的核心!
具体来说,RAG 就是让 AI 学会“先查资料再说话”。
二 为什么要用 RAG
-
防止 AI 胡说八道
:比如你问“华为手机最新款多少钱”,AI 如果不知道,可能乱报价格。但 RAG 会先查华为官网的数据,回答更靠谱。
-
回答最新信息
:AI 的知识停留在训练的时候(比如只学到 2023 年),但 RAG 能查 2025 年的新闻,比如“比亚迪全民智驾发布会”。
-
保护隐私
:比如医院的 AI 只用内部病历资料回答,不会泄露病人信息到网上。
举个松哥之前遇到的例子:
场景
:你问 AI 客服:“退货需要带什么?”
-
没用 RAG 的 AI
:可能说“带身份证和购物小票”(其实我们公司规定只要手机订单截图)。
-
用了 RAG 的 AI
:立刻查公司最新的《退货政策文档》,回答:“您好!请出示手机订单截图即可~”
当我们使用 RAG 之后,有如下一些优势:
-
减少幻觉
:LLM 可能生成看似合理但缺乏事实依据的内容(如虚构航空公司行李限额),而 RAG 通过引用权威数据源降低错误率。
-
突破知识时效性限制
:大模型训练数据存在截止日期(如 GPT-4 知识截止至 2023 年),RAG 可实时更新知识库(如政策变更时同步文档)。
-
数据安全与隐私
:企业敏感数据无需上传至公有模型,仅通过本地知识库增强回答(如客服系统引用内部退货政策)。
-
降低微调成本
:无需频繁重新训练模型,仅更新外部知识库即可适应新需求。
三 如何实现 RAG
我们来看下这张经典的 RAG 流程图:
这张图清晰展示了检索增强生成(RAG)的核心流程,分为
数据准备
和
问答生成
两大阶段。
我们分别来看。
3.1 数据准备阶段
3.1.1 文档分块(Documents → Chunked Texts)
文档分块就是将长文档(如 PDF、网页、手册)切割为短文本块,便于后续处理和检索。
比如你有一本 500 页的医疗教科书,直接丢给电脑处理会卡住。就像吃西瓜要切开,我们会把书按章节切块:
这样电脑处理起来轻松,找信息也精准。就像你问"发烧怎么办",电脑直接翻到"发热症状处理"那小块回答你。
具体切块的方法可以按固定长度(如每段 512 字)或语义边界(段落/标题)分割,常用工具包括 LangChain 的
TextSplitter
。
3.1.2 生成嵌入(Generate Embeddings)
生成嵌入(Embedding)的核心目的是让计算机能像人类一样“理解”复杂的数据,比如文字、图片甚至用户行为。
计算机天生只能处理数字,但现实世界的数据(比如文字、图片)是抽象的。嵌入就像一种“翻译器”,把抽象内容转换成
多维向量
(一串有规律的数字)。
举个简单例子,比如“猫”对应数字
[0.2, -0.4, 0.7]
,而“狗”对应
[0.3, -0.3, 0.6]
。这两个向量在数学上距离很近,说明它们的含义相似,都是描述宠物。
传统方法(如独热编码)只能机械地给数据编号,但嵌入能挖掘数据之间的
语义关系
。比如“国王”和“王后”在向量空间中的位置接近,因为它们都代表统治者。
一般来说,这种相近的关系通过
向量夹角
来衡量——角度越小,相关性越高。例如,金融类文章和计算机类文章的向量夹角接近90度(正交),说明主题完全不同。
这块相关知识点松哥在前面文章中也有介绍,这里不再赘述。
另一方面,通过 Embeddings 也能节省资源,提升效率。假设原始数据(如 10 万个单词)如果用独热编码会占用大量内存,而嵌入通过
降维
(Dimensionality Reduction)将信息压缩到低维向量(如 300 维),既保留关键特征,又减少计算量。
举个简单例子,一张图片原本由百万像素组成,嵌入后只需几百个数字就能表达其主要内容,方便机器学习模型快速处理。
嵌入模型(如 Word2Vec、BERT)通过大量数据自动学习,无需人工标记。例如,它发现“苹果”和“香蕉”常出现在相似语境中(比如水果沙拉),于是将它们分配到相近的向量位置。
在具体实践中,我们可以使用一些成熟的嵌入模型,如 OpenAI 的
text-embedding-3-small
、开源的 BAAI/bge 系列等将文本块转换为高维向量,捕捉语义信息。
那么这块需要注意的是,向量质量直接影响检索效果,需选择与领域匹配的模型(如法律文本用专业微调模型)。
3.1.3 存储向量数据库(Vector DB)
想象一下,你有一个图书馆,传统的图书馆只能通过书名、作者这类关键词找书,但如果你要找“和《哈利波特》风格相似的书”,传统方式就得一本本翻,效率极低。而向量数据库就像是一个“智能图书馆管理员”,它能把每本书的内容转化成一组数字(比如《哈利波特》可能被编码成[0.3, 0.7, 0.2...]这种数字串),然后通过计算这些数字之间的距离(比如相似度),快速帮你找到内容、风格相近的书。
向量数据库的核心作用就是专门处理图片、文字、语音等非结构化数据,把它们变成“数字指纹”,再通过“指纹”快速匹配相似内容。比如人脸识别、推荐你喜欢的短视频、让聊天机器人理解你的问题背后含义,都离不开它。
常见的向量数据库有如下几种:
Milvus
免费开源,适合技术团队折腾。能处理千亿级数据,适合大规模场景(比如公安系统用它在几十亿人脸中快速匹配罪犯)。
腾讯云 VectorDB
不用自己维护服务器,一键托管。最高支持 10 亿级数据,延迟控制在毫秒级。适合不想折腾的中小企业,还能直接上传文档自动切分、转成向量(比如把公司内部资料库变成 AI 能理解的格式)。
Pinecone
完全托管,提供简单 API,支持实时更新数据。比如电商网站想根据用户最新点击行为实时推荐商品,用它能快速调整推荐结果。
Faiss
Facebook 开源的高效搜索库,适合研究人员和开发者自己集成到系统里。比如学术论文里做实验,需要快速对比百万级数据。
Annoy
简单易用,适合小规模数据或快速验证想法。比如个人开发者想做个“以图搜图”的小程序Demo。
当然,除了上面这些,还有很多其他的,如 Chroma 等,这里松哥就不逐一列举了。
3.2 问答生成阶段
3.2.1 用户提问
当用户问“巴黎奥运会在哪举办?”时:
-
语义理解
:系统先用同样的嵌入模型把问题转成向量坐标。
-
意图补充
:自动推测隐藏信息(例如补充“2024年”的时间限定)。
3.2.2 检索阶段
-
余弦相似度计算
:用数学公式比对问题向量和知识库所有向量,找出角度最接近的坐标(角度越小越相关)。
-
多维度筛选
:除了相似度,还会考虑文档权威性、时效性(比如优先选择官网文件)。
3.2.3 生成答案
-
上下文拼接
:把检索到的 3-5 个相关段落(如奥运会历史背景、2024 年主办城市信息)和用户问题一起喂给大模型。
-
可控性生成
:通过
Prompt 工程
指定回答风格(如“用小学生能听懂的话解释”),避免专业术语堆砌。
-
幻觉过滤
:后处理模块检查是否存在编造内容(例如“巴黎奥运会将在月球举办”这类错误),通过置信度评分自动拦截。
3.2.4 举个例子
如何给手机充电?
-
检索层
找到知识库中的《电子设备维护指南》段落:“使用原装充电器,避免过度放电”
-
生成层
将其转化为:“亲,建议您使用手机配套的充电器哦~电量低于 20% 就及时充电,对电池更好呢!(来源:XX 产品手册)”
-
修正层
自动删除原文的专业术语“锂离子电池循环寿命”,替换为口语化表达
通过这种“检索+生成”的协作模式,RAG 既能像图书馆精准定位资料,又能像作家写出自然流畅的回答,成为企业知识管理的“智能大脑”。
四 RAG 优势
五 流程特点(从设计视角)
-
-
数据准备与生成阶段解耦,支持独立优化(如更换向量数据库不影响生成模块)。
-
蓝色突出核心流程(文档→嵌入→检索→生成),灰色背景降低视觉干扰。
-
向量数据库支持动态更新(如第三节图中箭头指向 VectorDB),可实时同步新知识。
六 典型应用场景
-
-
员工提问“报销流程” → 检索内部制度文档 → 生成步骤化指引。
-
输入“量子计算最新进展” → 检索 arXiv 论文摘要 → 生成综述性回答。
-
用户询问“适合夏天的轻薄外套” → 检索商品特征库 → 生成推荐理由+链接。
企业知识库问答也是松哥目前在做的方向。
七 RAG 的局限性
尽管 RAG 优势显著,但仍面临以下挑战:
-
-
若知识库包含错误或无关信息(如过时政策),生成的答案可能受影响。
-
案例
:模糊查询可能导致检索偏差(如“AI 芯片”误匹配到显卡型号)。
-
检索+生成的双阶段流程增加响应时间,难以满足高实时性场景(如实时翻译)。
-
专业领域(如法律、医学)需构建高质量知识库,数据清洗和标注成本较高。
优化方向
:
-
混合检索
:结合关键词、向量、图谱等多模态检索提升查全率。
-
动态评估与迭代
:通过用户反馈和 A/B 测试持续优化检索策略。
最后,我们再通过下面这张图总结下今天的内容:
-
-
-
Transform 则是我们对文档进行分块处理等操作。
-
-
-
好啦,后面松哥将会逐一介绍这里涉及到的每一步操作。