RAG知识库原理
一、如何与LLM交互?
绝大多数的交互场景,用户向LLM提出一个Question,LLM返回一个Answer。

二、LLM的局限—无法更新自身知识
LLM一旦训练完成并发布后,其自身所拥有的知识,无法与时俱进。

三、如何弥补LLM无法更新自身知识的局限?
- 原因
LLM自身知识无法与时俱进,是由于LLM自身的知识,是通过模型训练获得,更确切地说是训练时的数据集语料获得,训练数据集语料的多寡、质量高低,直接决定了LLM性能的优劣。
- 弥补LLM缺乏的知识
- 训练(预训练/微调/强化学习)
- RAG(检索-增强-生成)
- Knowledge Graph(知识图谱)
四、RAG为何能弥补LLM知识局限?
无论哪种大模型,无论其处于哪个层级,一旦发布后,其所拥有的知识总量是固定的,不会随着时间的流逝,而不断补充学习新的知识,也就是说,大模型不是万能的,不会每个行业、
每个方向、第个细节都会很清楚,这点和人非常想象,不管多厉害的一个人,总有他的短板。
为了弥补大模型的知识,通常有训练、RAG和知识图谱三种方式,这里只讨论RAG。RAG将大模型不了解的知识,以知识库的形式存储起来,然后在用户询问时,先通过对知识库的
检索,将与用户当前问题最相关的背景知识找出来,然后将用户问题与问题关联的背景知识,组装在一起,产生一个新的提示词,然后喂给大模型,这就好比让人做开卷考试,自然就一定
程度上提升了模型回答的准确率。
五、RAG框架RAG理论基础
- 向量相似度
RAG前提假设,即语义相近的两句话,其embedding向量相似度相近。
- RAG目标
筛选出与用户query最相近的文本段落。
- RAG框架包含2个阶段
第一阶段:构建知识库
第二阶段:用户查询

5.1 RAG理论基础--向量相似度
- 欧式距离

- 余弦相似度

5.2 RAG前提假设
- 文本向量化
AI模型实际上是一个数学模型,或者说是一个数学函数,其执行的都是数值计算,而文本在计算机里,是以UNICODE编码的形式存在,因此需将NLP输入的文本转换为数值向量。

- RAG前提假设
语义相近的两段话,其经过文本向量化后的两个向量,无论其欧氏距离,还是余弦相似度,都会越相近,反之亦然。

5.3 RAG目标
RAG的目标,是将与用户指令query高度相关的信息,从向量数据库中检索出来,并将这些检索出来的信息,作为最终喂给LLM的prompt的一部分。
下面是用户指令query与向量数据库匹配结果的示例:



5.4 RAG第一阶段
5.4.1 构建知识库
RAG框架第一阶段包含3个子阶段:
- 分段(Chunking)
- 嵌入(Embedding)
- 存入向量库(Vector Store)

5.4.2 构建知识库 — 分段
- 分段(Chunking)
指的是将文档资料(Document)切分为一个个更小的片段,文档类型可以为txt、pdf、docx、xlsx等。
分段策略的好坏,直接决定了RAG的最终效果,一般情况下,需确保分段后的每个Chunk拥有完整的语义。

5.4.3 构建知识库—嵌入
- 嵌入(Embedding)
将文档经切分后产生的Chunks,逐一经由Embedding大模型,转换为对应的语义向量。
Embedding大模型将Chunk文本,映射到一个高维空间,其维度通常为[128, 1024],在该高维空间,相似度越高的向量,其代表的原始Chunk文本语义越相近。



5.4.4 构建知识库—存入向量库
- 存入向量库(Vector Store)
Chunk文本经由Embedding大模型,映射到一个高维空间后,需将Chunk文本及其对应的高维空间向量形成一条记录,一起保存到向量数据库。
后续在查询阶段,向量数据库中的每条记录,至少有向量、Chunk文本2个字段,其中向量字段用于与查询向量进行相似度匹配,以筛选出与查询高度相关的Chunk文本。

5.5 RAG第二阶段:用户查询
RAG框架第二阶段包含3个子阶段:
- 检索(Retrieval)
- 增强(Augmentation)
- 生成(Generation)

5.5.1 用户查询 — 检索
- 检索(Retrieval)
该阶段先将用户query文本,经由Embedding大模型,映射到与构建知识库时相同的高维空间,然后将query向量与知识库中的每条记录逐项匹配相似度,最后将匹配度高的前k个Chunk文本返回。

5.5.2 用户查询 — 增强
- 增强(Augmentation)
该阶段将用户query文本,与上一步检索阶段输出的Chunk文本集合,按新的提示词模板(Prompt Template),重新组装为新的增强版提示词,该增强版提示词除了包含用户原始query文本,还包含一个
上下文字段(Context),该上下文字段包含的信息即为检索阶段输出的Chunk文本集合。

5.5.3 用户查询—增强后的提示词模板

5.5.4 用户查询—生成
- 生成(Generation)
这个阶段比较简单,就是将包含上下文信息后的增强Prompt,喂给大模型,并等待大模型返回最终的响应结果。


浙公网安备 33010602011771号