RAG的运行过程原理

- PDFReader(文档读取器):读取文档并拆分为片段

- 向量大模型:将文本片段向量化

- 向量数据库:存储向量,检索向量

让我们梳理一下要解决的问题和解决思路:

- 要解决大模型的知识限制问题,需要外挂知识库

- 受到大模型上下文限制,知识库不能简单的直接拼接在提示词中

- 我们需要从庞大的知识库中找到与用户问题相关的一小部分,再组装成提示词

- 这些可以利用文档读取器、向量大模型、向量数据库来解决。

所以RAG要做的事情就是将知识库分割,然后利用向量模型做向量化,存入向量数据库,然后查询的时候去检索;

推荐一个向量模型:

阿里云百炼平台的通用文本向量-v3(具体使用方法可以自行去官网查看了解)

向量数据库:

SpringAI官方支持很多向量数据库(例如MongoDB、Redis等等 具体可以自行去官网查看了解)

其中仅有SimpleVectorStore不需要安装部署,其他的向量数据库都需要安装部署,可以根据需要自行选择。

这些库都实现了统一的接口VectorStore,因此操作方式一模一样,大家学会任意一个,其它就都不是问题。

第一阶段(存储知识库)

- 将知识库内容切片,分为一个个片段

- 将每个片段利用向量模型向量化

- 将所有向量化后的片段写入向量数据库

第二阶段(检索知识库)

- 每当用户询问AI时,将用户问题向量化

- 拿着问题向量去向量数据库检索最相关的片段

第三阶段(对话大模型)

- 将检索到的片段、用户的问题一起拼接为提示词

- 发送提示词给大模型,得到响应