前言

在前面的学习中,我们已经完成了一个基础版 AI Agent。

学习内容包括:

  • Python调用大模型API

  • Prompt设计

  • Memory上下文记忆

  • Tool Calling工具调用

  • Agent基本结构

但是,一个新的问题出现了:

如果大模型不知道我们的专业知识怎么办?

例如:

  • 企业内部文档

  • 项目开发说明

  • 产品使用手册

  • 技术学习笔记

这些内容可能没有出现在大模型训练数据中。

如果直接询问大模型:

公司的服务器架构是什么?

模型并不知道真实信息。

甚至可能生成一个看似合理但是错误的答案。

这就是大语言模型中的一个典型问题:

幻觉(Hallucination)

所以,我们需要一种方式:

让 AI 在回答问题之前,先查询我们的知识库。

这就是:

RAG(Retrieval-Augmented Generation)

中文:

检索增强生成


一、什么是RAG?

RAG是一种让大语言模型结合外部知识的方法。

简单理解:

先搜索相关资料,再让大模型根据资料生成答案。

传统大语言模型:

用户问题

↓

大语言模型

↓

生成答案

例如:

用户:

公司产品有哪些功能?

模型:

根据训练数据回答

问题:

模型不知道你的私有数据。


加入RAG之后:

用户问题

↓

知识库搜索

↓

找到相关资料

↓

发送给大语言模型

↓

生成答案

例如:

用户:

公司产品有哪些功能?

RAG流程:

第一步:

搜索产品文档。

第二步:

找到:

产品支持账号管理、
权限控制、
日志审计等功能。

第三步:

发送给大模型。

最终:

根据产品文档,
该产品支持账号管理、
权限控制和日志审计功能。

二、RAG整体流程

一个完整的RAG系统主要分为三个阶段:

第一阶段:知识库构建

把文档转换成计算机可以理解的数据。

流程:

文档

↓

文本处理

↓

Embedding模型

↓

向量

↓

向量数据库

第二阶段:用户查询

用户提出问题:

例如:

RAG是什么?

系统:

问题

↓

Embedding转换

↓

向量搜索

↓

找到相关知识

第三阶段:生成答案

找到知识后:

发送给大模型。

流程:

用户问题

+

检索到的知识

↓

大语言模型

↓

答案

三、RAG核心组成

RAG主要包含三个重要部分:


1. 文档加载(Document Loading)

首先需要读取知识文件。

例如:

项目:

day7

├── data

│   └── knowledge.txt

knowledge.txt:

RAG是一种让大语言模型结合外部知识的方法。

RAG包括三个主要步骤:

1. 文档加载
2. 文本转换为向量
3. 根据用户问题检索相关内容

代码:

with open(
    "data/knowledge.txt",
    "r",
    encoding="utf-8"
) as f:
    text = f.read()

读取之后:

程序得到:

RAG是一种让大语言模型结合外部知识的方法。

2. Embedding文本向量化

计算机无法直接理解文字。

例如:

RAG是什么?

对于计算机:

只是字符串。

所以需要转换:

文字

↓

数字

↓

向量

这个过程叫:

Embedding

例如:

文本:

人工智能正在改变世界

转换:

[
-0.167,
-0.363,
-0.066,
...
]

这一串数字就是:

向量。


本次使用:

sentence-transformers

模型:

paraphrase-multilingual-MiniLM-L12-v2

生成:

384维向量

代码:

embedding = model.encode(text)

输出:

向量长度:
384

四、为什么文本需要转换成向量?

因为向量可以计算相似度。

例如:

知识库:

RAG是一种让大语言模型结合外部知识的方法。

用户问题:

RAG是什么?

虽然两个句子:

文字不同。

但是:

含义相近。

转换成向量后:

知识向量

↓

计算距离

↓

判断相似程度

距离越近:

代表语义越相似。

这就是:

向量搜索


五、向量数据库 ChromaDB

生成向量之后,需要保存。

普通数据库保存:

用户名

密码

时间

文本

但是向量数据库保存:

文本

+

对应向量

本次使用:

ChromaDB

项目结构:

vector_db

├── chroma.sqlite3

└── 向量索引文件

保存代码:

collection.add(

    documents=[
        text
    ],

    embeddings=[
        embedding
    ],

    ids=[
        "doc1"
    ]

)

执行之后:

知识文本和向量被保存。


六、向量搜索实现

现在数据库中已经有知识:

RAG是一种让大语言模型结合外部知识的方法。

用户输入:

RAG是什么?

第一步:

生成问题向量。

RAG是什么?

↓

Embedding

↓

问题向量

第二步:

查询向量数据库。

代码:

result = collection.query(

    query_embeddings=[
        question_embedding
    ],

    n_results=1

)

第三步:

返回最相关内容。

结果:

RAG是一种让大语言模型结合外部知识的方法。

七、RAG + 大语言模型

目前我们已经完成:

用户问题

↓

搜索知识

↓

返回相关内容

但是:

还没有让AI回答。

最后一步:

把搜索结果交给大模型。

完整流程:

用户问题

↓

问题Embedding

↓

向量数据库搜索

↓

相关知识

↓

发送给大模型

↓

生成答案

例如:

用户:

RAG是什么?

检索:

RAG是一种让大语言模型结合外部知识的方法。

发送给AI:

请根据以下知识回答:

RAG是一种让大语言模型结合外部知识的方法。

AI:

根据提供的知识,
RAG是一种让大语言模型结合外部知识的方法。

八、Day7完整项目结构

最终项目:

day7

├── data

│   └── knowledge.txt


├── src

│   ├── embedding.py

│   ├── create_vector_db.py

│   ├── save_vector.py

│   ├── search.py

│   └── rag_chat.py


├── tests


└── vector_db

    └── chroma.sqlite3

九、完整RAG流程图

                知识文件

                    |

                    ↓

              文档加载

                    |

                    ↓

             Embedding模型

                    |

                    ↓

              文本向量

                    |

                    ↓

             ChromaDB

                    |

                    ↓


用户问题

    |

    ↓

问题向量化

    |

    ↓

相似度搜索

    |

    ↓

找到相关知识

    |

    ↓

大语言模型

    |

    ↓

生成答案


十、Day7实践成果

本次完成:

1. Embedding模型调用

实现:

文本 → 向量


2. ChromaDB向量存储

实现:

向量持久化保存。


3. 向量检索

实现:

根据用户问题找到相关知识。


4. RAG问答

实现:

用户问题

↓

知识库检索

↓

AI生成答案

十一、Day7学习总结

今天学习了AI Agent开发中非常重要的一部分:

RAG(检索增强生成)

掌握:

✅ RAG是什么

✅ 为什么需要RAG

✅ Embedding作用

✅ 文本如何转换向量

✅ 向量数据库作用

✅ ChromaDB基本使用

✅ 向量搜索流程

✅ RAG结合大模型


十二、后续学习方向

完成基础RAG之后,可以继续学习:

1. 文档切分(Chunk)

解决:

长文档无法直接处理的问题。


2. 多文档知识库

实现:

多个文件同时检索。


3. RAG优化

包括:

  • 召回优化

  • 重排序

  • Prompt优化


4. Agent + RAG

让Agent:

不仅会调用工具,

还可以查询自己的知识库。


总结

Day7完成了从:

大模型只能依靠训练数据回答问题

到:

大模型可以查询外部知识并回答问题

的重要升级。

RAG也是目前企业级AI应用中最常见的技术之一。

通过今天的学习,我们已经完成了一个基础版知识库问答系统,为后续学习更复杂的AI Agent架构打下基础。

更多推荐