目录:
-
前文回顾 -
背景引入:大模型为什么会"不知道"? -
核心概念一:什么是 RAG -
核心概念二:RAG 解决的三大痛点 -
核心概念三:RAG 的工作原理 -
核心概念四:向量数据库——RAG 的"记忆库" -
核心概念五:RAG vs 微调——怎么选? -
RAG 的实际应用案例 -
RAG 的局限性和挑战 -
本文小结 -
今日思考题
一、前文回顾
在前面的文章中,咱们聊了:
-
大模型的"思考"是预测下一个词 -
大模型会产生 幻觉 ,因为它们没有真假概念 -
提示词工程 可以提高AI的回答质量
但是!大模型有一个很致命的问题:
它的知识是"冻结"在训练时间的
今天咱们就来聊一个解决这个问题的重要技术—— RAG(检索增强生成) 。
二、背景引入:大模型为什么会"不知道"?
先来看几个真实的场景。
场景一:问今天的事
你:"今天天气怎么样?"
ChatGPT:"抱歉,我的知识截止日期是2023年1月,无法提供实时信息。"
为什么?
因为模型训练完之后,就 不再学习新知识 了。
场景二:问公司内部文档
你:"我们公司的请假制度是什么?"
AI:"抱歉,我没有关于您公司请假制度的信息。"
为什么?
因为公司的 内部文档不在训练数据里 。
场景三:编造答案
你:"《飞驰人生3》电影什么时候上映?"
AI:"《飞驰人生3》电影已于2026年上映,由韩寒编剧..."
(这是编造的!实际上当时还没有上映)
为什么?
因为模型 不知道答案,但又要回答 ,于是就产生了幻觉。
这些问题,RAG 都能解决!
三、核心概念一:什么是 RAG
3.1 RAG 的定义
RAG = Retrieval-Augmented Generation(检索增强生成)
听起来很高大上?说白了就是:
给大模型配一个"图书馆",让它回答问题前先去查资料
咱们用一张图来感受一下:
传统大模型
RAG 大模型
3.2 RAG 的本质
RAG = 开卷考试
传统大模型:
- 闭卷考试
- 只能靠记忆
- 记不住就瞎编
RAG 大模型:
- 开卷考试
- 可以查资料
- 照着资料回答
3.3 RAG 的三个关键词
|
|
|
|
|---|---|---|
| 检索 |
|
|
| 增强 |
|
|
| 生成 |
|
|
四、核心概念二:RAG 解决的三大痛点
RAG 主要解决大模型的三大问题。
痛点一:知识过时
问题: 大模型的知识"冻结"在训练时间。
用户:"GPT-4 发布了什么新功能?"
没有 RAG 的模型:
"GPT-4 是 OpenAI 发布的多模态大语言模型..."
(泛泛而谈,没有最新信息)
有 RAG 的模型:
"根据最新资料,GPT-4 Turbo 发布于2023年11月,
新增了以下功能:
1. 上下文窗口扩展到128K
2. 支持视觉输入
3. 价格降低60%..."
RAG 解决方案:检索最新的资料
痛点二:幻觉问题
问题: 大模型会"一本正经地胡说八道"。
用户:"我们公司的报销流程是什么?"
没有 RAG 的模型:
"一般来说,公司报销流程是..."
(编造一个通用流程,完全不对)
有 RAG 的模型:
"根据《XX公司员工手册》第5章,
报销流程如下:
1. 填写报销单
2. 部门经理审批
3. 财务审核
4. 3-5个工作日到账"
RAG 解决方案:基于真实资料回答
痛点三:私有数据
问题: 公司/个人的私密数据不可能训练到模型里。
典型场景:
- 公司内部文档
- 个人笔记
- 私有数据库
- 最新合同
- 内部知识库
RAG 解决方案:让模型访问外部数据源
咱们用一张表来总结:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
五、核心概念三:RAG 的工作原理
这是本文的核心!咱们要深入理解 RAG 是怎么工作的。
5.1 RAG 的完整流程
咱们用一个完整的例子来演示:
用户问题:"Python 里怎么读取 CSV 文件?"
Step 1:检索(Retrieval)
用户问题:"Python 里怎么读取 CSV 文件?"
↓
问题转向量
↓
在向量数据库中搜索
↓
找到相关资料:
"pandas.read_csv() 是读取CSV文件最常用的方法..."
"csv 模块提供了 reader 对象..."
Step 2:增强(Augmentation)
原始问题:
"Python 里怎么读取 CSV 文件?"
检索到的资料:
["pandas.read_csv() 是最常用的方法...",
"csv 模块也提供了读取功能..."]
增强后的输入:
"请根据以下资料,回答用户的问题:
资料1:pandas.read_csv() 是读取CSV文件最常用的方法...
资料2:csv 模块提供了 reader 对象...
用户问题:Python 里怎么读取 CSV 文件?"
Step 3:生成(Generation)
大模型根据增强后的输入生成回答:
"根据参考资料,Python 中读取 CSV 文件有以下两种方法:
方法一:使用 pandas(推荐)
import pandas as pd
df = pd.read_csv('file.csv')
方法二:使用 csv 模块
import csv
with open('file.csv') as f:
reader = csv.reader(f)
...
"
5.2 详细流程图
5.3 为什么要把文本转向量?
这是 RAG 最关键的技术点!
向量 = 数学的"距离"可以表示"相似度"
文本A:"苹果很好吃"
文本B:"香蕉很好吃"
文本C:"今天天气不错"
转换成向量:
文本A → [0.8, 0.2, 0.1, ...]
文本B → [0.7, 0.3, 0.1, ...]
文本C → [0.1, 0.1, 0.9, ...]
计算距离:
A和B的距离很近 → 相似(都是说水果)
A和C的距离很远 → 不相似
向量搜索 = 找到最"相近"的资料
六、核心概念四:向量数据库——RAG 的"记忆库"
6.1 什么是向量数据库?
向量数据库是专门存储和搜索向量的数据库 。
咱们来对比一下:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
WHERE name = "张三" |
|
|
|
|
|
|
|
|
|
6.2 向量数据库的工作原理
存储阶段:
1. 文档分块
"Python 是一种编程语言..."
"Python 有很多应用场景..."
...
2. 每块转向量
块1 → [0.23, 0.56, ...]
块2 → [0.34, 0.12, ...]
...
3. 存入向量数据库
检索阶段:
1. 问题转向量
"Python 有什么用?" → [0.25, 0.53, ...]
2. 计算相似度
与块1的距离:0.05(很接近!)
与块2的距离:0.23(比较接近)
3. 返回最相似的块
返回块1、块2...
6.3 主流向量数据库
|
|
|
|
|---|---|---|
| Pinecone |
|
|
| Milvus |
|
|
| Weaviate |
|
|
| Chroma |
|
|
| FAISS |
|
|
6.4 文档怎么切分?
这是 RAG 实践中的重要问题!
切分原则:既要完整,又要好检索
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
经验值:每块 500-1000 字比较合适
七、核心概念五:RAG vs 微调——怎么选?
很多人会问:RAG 和微调,到底用哪个?
咱们来详细对比一下。
7.1 本质区别
微调:
- 改变模型的知识
- 把知识"烙"进参数里
- 像让学生背书
RAG:
- 不改变模型
- 给模型配个"参考书"
- 像开卷考试
7.2 详细对比表
|
|
|
|
|---|---|---|
| 原理 |
|
|
| 知识更新 |
|
|
| 成本 |
|
|
| 知识准确性 |
|
|
| 适用知识 |
|
|
| 透明度 |
|
|
| 上线速度 |
|
|
7.3 怎么选?
选微调的场景:
✅ 需要改变说话风格
✅ 需要特定格式输出
✅ 需要学习通用能力(如写代码风格)
✅ 知识相对稳定
例子:
- 让模型学会公司的话术风格
- 让模型按固定格式输出JSON
- 让模型学会特定领域的编码规范
选 RAG 的场景:
✅ 知识经常变化
✅ 需要准确的事实
✅ 有大量文档
✅ 需要追溯来源
例子:
- 客服知识库(经常更新)
- 法律文档检索(要求准确)
- 技术文档问答(内容多)
- 新闻资讯(实时性)
7.4 最佳实践:RAG + 微调
很多情况下,两者结合效果最好
场景:智能客服系统
微调部分:
- 学会公司的话术风格
- 学会标准回复格式
- 学会如何组织回答
RAG 部分:
- 检索最新的产品信息
- 检索具体的技术文档
- 检索最新的政策规定
组合效果:
既专业(微调)又准确(RAG)
八、RAG 的实际应用案例
咱们来看几个真实的 RAG 应用。
案例一:智能客服系统
问题: 某电商公司客服每天回答大量重复问题
解决方案:
1. 构建知识库
- 产品说明书
- 常见问题解答
- 退换货政策
- 物流信息
2. RAG 系统
- 用户提问:"怎么退货?"
- 检索到退货政策文档
- 基于文档生成回答
3. 效果
- 回答准确率 95%
- 客服工作量减少 70%
案例二:法律文档助手
问题: 律师需要快速查找相关法条和案例
解决方案:
1. 构建法律知识库
- 法律法规
- 判例文书
- 法律注释
2. RAG 系统
- 用户提问:"合同违约怎么赔偿?"
- 检索相关法条和案例
- 生成带引用的回答
3. 效果
- 检索时间从几小时缩短到几分钟
- 每个回答都有法条依据
案例三:企业知识管理
问题: 公司大量文档,员工找不到需要的信息
解决方案:
1. 整合公司文档
- 技术文档
- 流程规范
- 会议纪要
- 项目报告
2. RAG 系统
- 员工提问:"我们的报销流程是什么?"
- 检索到相关制度文档
- 生成准确回答
3. 效果
- 信息查找效率提升 10 倍
- 新员工培训周期缩短 50%
九、RAG 的局限性和挑战
RAG 虽然强大,但也不是万能的。
挑战一:检索质量
问题: 检索到的资料可能不相关
用户问题:"Python 里的装饰器是什么?"
可能检索到:
"Python 是一种流行的编程语言..."(不相关!)
"室内装饰风格..."(完全无关!)
解决方案:
-
优化文档切分 -
使用更好的嵌入模型 -
调整检索参数
挑战二:上下文窗口限制
问题: 检索到的资料太多,放不进上下文
假设:
- 上下文窗口:8K Token
- 用户问题:100 Token
- 检索到的资料:100K Token
→ 资料放不下!
解决方案:
-
只检索最相关的 Top-K 资料 -
对资料进行压缩摘要 -
使用更长上下文的模型
挑战三:实时性问题
问题: 向量数据库的更新有延迟
场景:新闻资讯 RAG 系统
问题:
- 新闻每分钟都在更新
- 向量数据库更新有延迟
- 用户可能看到过时的信息
解决方案:
-
增加数据库更新频率 -
对时效性强的内容单独处理 -
结合实时搜索API
挑战四:成本问题
问题: RAG 系统需要额外成本
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
但相比重新训练模型,RAG 仍然便宜很多
十、本文小结
咱们今天主要讲了以下几点:
1. 什么是 RAG
-
RAG = 检索增强生成 -
给大模型配个"图书馆" -
让它回答问题前先查资料
2. RAG 解决的三大痛点
-
知识过时:可以检索最新资料 -
幻觉问题:基于真实资料回答 -
私有数据:可以访问外部数据源
3. RAG 的工作原理
检索(找资料)→ 增强(合并问题+资料)→ 生成(回答)
4. 向量数据库
-
存储和搜索向量的专用数据库 -
通过向量距离表示相似度 -
主流产品:Pinecone、Milvus、Weaviate
5. RAG vs 微调
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
6. 实际应用
-
智能客服系统 -
法律文档助手 -
企业知识管理
7. 挑战
-
检索质量 -
上下文窗口限制 -
实时性问题 -
成本
8. 关键公式
好用的 RAG = 优质知识库 + 好的嵌入模型 + 精准检索 + 大模型生成
十一、今日思考题
今天留一个思考题:
如果你要为公司搭建一个 RAG 系统,你会怎么设计?
提示:
-
知识库包含哪些内容? -
如何保证资料的实时更新? -
如何评估检索质量? -
RAG 和微调需要结合吗?
欢迎在评论区分享你的想法!

