RAG(Retrieval Augmented Generation)检索增强生成

一、RAG介绍

1.1 LLM的缺陷
  • LLM的知识不是实时,不具备知识更新
  • LLM可能不知道你私有的领域 / 业务知识
  • LLM有时会在回答中生成看似合理但实际上是错误的信息
1.2 为什么会用到RAG
  • 提高准确性:通过检索相关的信息,RAG可以提高生成文本的准确性。
  • 减少训练成本:与需要大量数据来训练的大型生成模型相比,RAG可以通过检索机制来减少所需的训练数据量,从而降低训练成本。
  • 适应性强:RAG模型可以适应新的或不断变化的数据,由于它们能够检索最新的信息,因此在新数据和事件出现时,它们能够快速适应并生成相关的文本。
1.3 RAG概念

​ RAG(Retrieval Augmented Generation)顾名思义,通过外部数据,增强大模型的生成效果。

​ RAG即检索增强生成,为LLM提供了从某些数据源检索到的信息,并基于此修正生成的答案。RAG基本上是Search + LLM提示,可以通过大模型回答查询,并将搜索算法所找到的信息作为大模型的上下文。查询和检索到的上下文都会被注入到发送到LLM的提示语中。

1.4 RAG vs Fine-tuning

​ RAG(检索增强生成)是把内部的文档数据先进行embedding(向量化),借助检索先获得大致的知识范围答案,再结合prompt给到LLM,让LLM生成最终的答案。

​ Fine-tuning(微调)是用一定量的数据集对LLM进行局部参数的调整,以期望LLM更加理解我们的业务逻辑,有更好的zero - shot能力。

1.5 RAG的流程(见下图)

在这里插入图片描述

**索引(Indexing):**索引首先清理和提取各种格式的原始数据,如PDF、HTML、Word和Markdown,然后将其转换为统一的纯文本格式。为了适应语言模型的上下文限制,文本被分割成更小的,可消化的块(chunk)。然后使用嵌入模型将块编码成向量表示,并存储在向量数据库中。这一步对于在随后的检索阶段实现高效的相似性搜索至关重要。知识库分割成chunks,并将chunks向量化至向量库中。

检索(Retrieval):在收到用户查询(Query)后,RAG系统采用与索引阶段相同的编码模型将查询转换为向量表示,然后计算索引语料库中查询向量与块向量的相似性得分。该系统优先级和检索最高k(Top - K)块,显示最大的相似性查询。

在这里插入图片描述

  • 将文本转成一组浮点数:每个下标i,对应一个维度
  • 整个数组对应一个n维空间的一个点,即文本向量又叫Embeddings
  • 向量之间可以计算距离,距离远近对应语义相似度大小

在这里插入图片描述

这个块随后被用作prompt中的扩展上下文。Query向量化,匹配向量空间中相近的chunks.

RAG 具体实现流程:加载文件 - > 读取文本 ->文本分割 -> 文本向量化 -> 输入问题向量化 -> 在文本向量中匹配出与问题向量最相似的top k个 -> 匹配出的文本作为上下文和问题一起添加到prompt中 -> 提交给LLM生成回答。

二、RAG核心

2.1 传统 VS 大模型

智能客服系统在没有大模型之前我们也是可以设计完成的,只是实现的效果没有大模型那么好。下面是两则设计的原理

在这里插入图片描述

2.2 向量与Embeddings的定义

​ 在数学中,向量(也称为欧几里得向量、几何向量),指具有大小(magnitude)和方向的量,它可以形象化地表示为带箭头的线段。箭头所指:代表向量的方向;线段长度:代表向量的大小。

2.3 向量间的相似度计算

​ 常用的相似度计算方法:欧式距离和余弦距离

1、欧式距离:

​ 是最直观的向量相似度计算方法,它衡量的是两个向量在多维空间中的直线距离。

特点:

- 距离的取值范围是(0,∞),其中 0 表示两个向量完全相机。
- 欧式距离受向量各维度数值大小的影响较大,因此它对尺度敏感。

2、余弦距离

​ 余弦距离衡量的是两个向量在方向上的相似性,而不是它们在空间中的实际距离。

特点:

  • 余弦相似度的取值范围是 [-1,1],其中 1 表示两个向量完全相同,-1 表示两个向量完全相反
  • 余弦距离的聚会范围是 [0,2],其中 0 表示两个向量完全相同。
  • 余弦距离对向量的尺度不敏感,因此它更多地关注向量的方向而不是大小。
2.4 文档的加载和分割

1、把文本切分成chunks的方式

  • 按照句子来切分
  • 按照字符数来切分
  • 按固定字符数,结合overlapping window
  • 递归方法 RecursiveCharacterTextSplitter
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐