AI Agent入门实战 Day6:RAG检索增强生成入门
前言
在前面的学习中,我们已经实现了一个基础版 AI Agent。
它已经具备:
-
调用大模型 API
-
理解用户需求
-
调用自定义工具
-
保存上下文记忆
-
读取本地文件
但是,随着应用场景变得越来越复杂,Agent 会遇到一个新的问题:
如果 AI 不知道我们的私有知识怎么办?
例如:
-
企业内部文档
-
产品说明书
-
技术手册
-
安全规范
-
历史漏洞报告
这些内容通常不在大模型的训练数据中。
因此,本节将学习一个非常重要的技术:
RAG(Retrieval Augmented Generation)
也就是:
检索增强生成
让 Agent 具备从知识库中查找资料,再结合大模型生成答案的能力。
一、为什么需要RAG?
普通聊天机器人只能根据模型本身的知识回答问题。
例如:
用户:
什么是AI Agent?
模型可以直接回答。
但是如果用户问的是企业内部资料:
用户:
公司的密码策略是什么?
模型通常无法准确回答,因为它并不知道你的私有文档内容。
这时候就需要 RAG。
RAG 的作用就是:
用户问题
↓
先去知识库检索相关内容
↓
把检索结果交给大模型
↓
生成最终答案
这样 AI 就不再只依赖训练时学到的知识,而是可以结合外部资料进行回答。
二、RAG是什么?
RAG 全称:
Retrieval Augmented Generation
中文意思是:
检索增强生成
可以拆成三部分理解:
1. Retrieval(检索)
先从知识库中找到和用户问题相关的内容。
例如:
用户:
密码长度要求是多少?
系统先去知识库中搜索:
密码长度必须至少12位
2. Augmented(增强)
把检索到的内容补充给大模型。
也就是把:
用户问题
和:
相关资料
一起交给 AI。
3. Generation(生成)
大模型根据问题和资料生成最终答案。
例如:
根据企业安全规范,密码长度至少为12位。
三、RAG的核心流程
一个完整的 RAG 系统一般分为两个阶段:
第一阶段:构建知识库
这一阶段主要是把文档处理成可以检索的形式。
流程如下:
文档
↓
文本切片
↓
Embedding向量化
↓
存入向量数据库
第二阶段:回答用户问题
当用户提问时,系统会执行以下流程:
用户问题
↓
问题向量化
↓
相似度搜索
↓
找到相关文本
↓
发送给大模型
↓
生成答案
四、RAG完整流程图
完整流程可以理解为:
文档
↓
切片
↓
Embedding
↓
向量数据库
↓
用户提问
↓
问题Embedding
↓
相似度搜索
↓
检索相关内容
↓
LLM生成回答
五、Embedding是什么?
Embedding 是 RAG 中最核心的概念之一。
它的作用是:
把文字转换成计算机可以理解的数字向量。
例如:
文本:
苹果
经过 Embedding 模型后,可能变成:
[
0.21,
0.56,
0.78
]
这个数字数组就叫做:
向量(Vector)
为什么需要Embedding?
因为计算机无法直接理解文字之间的语义关系。
例如:
苹果
香蕉
水果
人类知道它们之间有关系,因为它们都属于水果。
但是计算机如果只看字符串,是无法理解这种语义联系的。
Embedding 的作用就是把语义相近的文本映射到相近的向量空间中。
这样就可以通过计算向量距离,找到和用户问题最相关的内容。
六、向量数据库是什么?
Embedding 之后,文本会变成:
文本 + 向量 + 元数据
例如:
{
"text": "密码长度必须12位",
"vector": [0.12, 0.56, 0.78],
"source": "security.pdf"
}
这些数据需要保存起来,方便后续检索。
这时候就需要:
向量数据库(Vector Database)
向量数据库的作用是:
-
存储文本向量
-
支持相似度搜索
-
快速找到和问题最接近的内容
普通数据库和向量数据库的区别
普通数据库
例如 MySQL,擅长的是精确查询。
例如:
select * from user where name='张三';
它适合查找完全匹配的数据。
向量数据库
向量数据库擅长的是语义搜索。
例如:
用户问:
Linux怎么查看端口?
数据库中可能存的是:
Linux查看网络端口的方法
虽然关键词不完全一样,但语义接近,向量数据库可以找到它。
七、常见的向量数据库
目前常见的向量数据库有很多,学习阶段可以先了解以下几种:
1. Chroma
特点:
-
简单易用
-
适合学习和小型项目
-
很适合做 RAG 入门实验
2. FAISS
特点:
-
搜索速度快
-
适合本地向量检索
-
常用于高性能场景
3. Milvus
特点:
-
企业级向量数据库
-
支持大规模数据
-
适合生产环境
八、RAG和Agent的关系
很多人会把 RAG 和 Agent 混在一起,其实它们不是同一个概念。
Agent负责什么?
Agent 负责:
判断什么时候需要调用工具。
例如:
用户提问
↓
Agent判断是否需要查知识库
↓
如果需要,就调用RAG工具
RAG负责什么?
RAG 负责:
从知识库中找到相关内容。
也就是说:
-
Agent 负责决策
-
RAG 负责检索
它们的关系
可以理解为:
用户
↓
Agent
↓
调用RAG工具
↓
向量数据库检索
↓
返回相关资料
↓
LLM生成回答
九、RAG和Tool Calling的关系
前面我们已经学习了 Tool Calling。
例如:
calculator()
read_file()
这些都是工具。
其实 RAG 也可以看作一种工具。
例如:
search_knowledge()
这个工具的作用就是:
-
接收用户问题
-
去知识库中搜索
-
返回相关文本
然后再交给大模型生成答案。
所以可以理解为:
RAG 本质上也是 Agent 的一种工具能力。
十、一个简单的RAG应用场景
假设我们要做一个企业安全知识库 Agent。
知识库中包含:
-
安全规范
-
漏洞报告
-
应急预案
-
历史事件分析
用户提问:
公司的密码策略是什么?
系统流程如下:
用户问题
↓
Agent判断需要查询知识库
↓
调用 search_knowledge 工具
↓
向量数据库检索相关内容
↓
返回:
密码长度至少12位
↓
LLM生成最终回答
最终回答可能是:
根据企业安全规范,密码长度至少为12位,并且需要包含大小写字母和数字。
十一、RAG的优势
RAG 之所以重要,是因为它解决了大模型的几个核心问题。
1. 让AI拥有私有知识
大模型不知道你的内部文档,但 RAG 可以把这些文档接入 AI。
2. 减少无关信息
不需要把整本大文档全部塞给模型,只需要检索相关片段即可。
3. 提高回答准确率
AI 不是凭空回答,而是基于真实资料生成答案。
4. 方便知识更新
只需要更新知识库,不需要重新训练模型。
十二、今天实现的Agent能力
经过本节学习,Agent 从:
只能聊天
升级为:
能够调用知识库
↓
检索相关资料
↓
结合资料生成回答
这意味着 Agent 已经开始具备“知识增强”的能力。
十三、知识总结
本节学习内容:
RAG部分
-
什么是 RAG
-
为什么需要 RAG
-
RAG 的核心流程
-
Retrieval、Augmented、Generation 的含义
Embedding部分
-
什么是 Embedding
-
为什么文字要转换成向量
-
向量为什么能表示语义相似度
向量数据库部分
-
什么是向量数据库
-
普通数据库和向量数据库的区别
-
常见向量数据库:Chroma、FAISS、Milvus
Agent部分
-
Agent 和 RAG 的关系
-
RAG 作为一种工具能力
-
如何让 Agent 调用知识库
总结
RAG 是 AI Agent 走向实用化的重要一步。
它的核心思想非常简单:
先检索,再生成。
通过 RAG,Agent 可以连接外部知识库,回答企业文档、技术资料、内部规范等问题。
未来更复杂的 AI 应用,例如:
-
ChatPDF
-
企业知识库问答
-
AI客服
-
安全知识助手
本质上都是在 RAG 的基础上不断扩展。
下一步
下一节我们将继续深入:
Day7:手写第一个简单RAG系统
内容包括:
-
文本切片
-
Embedding
-
Chroma向量数据库
-
检索流程
-
简单问答实现
通过代码真正把今天学到的理论跑起来。
更多推荐


所有评论(0)