前言

在前面的学习中,我们已经实现了一个基础版 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向量数据库

  • 检索流程

  • 简单问答实现

通过代码真正把今天学到的理论跑起来。

更多推荐