内容整理自 www.bilibili.com/video/BV1JL…
RAG 的整体流程
- 准备部分(提问前): 分片 --> 索引
- 回答部分(提问后): 召回 --> 重排 --> 生成
分片
分片:将一个大的文本内容分割成多个片段
分片的方式
- 按照字数分
- 按照段落分
- 按照章节分
- 按照页码分
索引
索引的过程
- 通过
Embedding将片段文本转换成向量 - 将片段文本和片段向量存入
向量数据库中
向量数据库
向量数据库是一种专为存储和检索被称为“向量嵌入”的特殊数据类型而构建的数据库。向量嵌入是文本、图像、视频、音频等内容的含义或特征的数字表示。
用于存储和查询向量的数据,并提供了计算向量相似度等相关的函数
Embedding 模型
向量相似度计算方法
- 余弦相似度
- 欧式距离
- 点积
召回
搜索与用户问题相关片段的过程
- 获取用户问题的向量
- 将上述向量值与向量数据库中的片段向量做计算(计算方法有余弦相似度等等)
- 并进行排序,并获取分数较高的几个
重排
重排:将召回得到的结果重新排序
为什么要进行两轮排序?
因为召回准确率低但成本也低, 而重排成本高但准确率也高. 所以先进行一轮成本低的运算获取一个大概范围的结果,再进行一个准确率较高的计算获取精确结果