RAG 浅显知识

什么是 Rag?

检索增强生成(Retrieval-augmented Generation),简称 RAG。

简单来讲,RAG 就是通过检索获取相关的知识并将其融入 Prompt,让大模型能够参考相应的知识从而给出合理回答。

因此,可以将 RAG 的核心理解为 “检索 + 生成”,前者主要是利用 [[向量数据库]] 的高效存储和检索能力,召回目标知识;后者则是利用大模型和 Prompt 工程,将召回的知识合理利用,生成目标答案。

RAG 架构

完整的 RAG 应用流程主要包含两个阶段:

  • 数据准备阶段:数据提取 ——> 文本分割 ——> 向量化(embedding)——> 数据入库。
  • 应用阶段:用户提问 ——> 数据检索(召回)——> 注入 Prompt ——> LLM 生成答案。

向量化(embedding)

向量化是一个将文本数据转化为向量矩阵的过程,该过程会直接影响到后续检索的效果。

数据检索

常见的数据检索方法包括:相似性检索、全文检索等,根据检索效果,一般可以选择多种检索方式融合,提升召回率。

  • 相似性检索:即计算查询向量与所有存储向量的相似性得分,返回得分高的记录。常见的相似性计算方法包括:余弦相似性、欧氏距离、曼哈顿距离等。

注入 Prompt

Prompt 作为大模型的直接输入,是影响模型输出准确率的关键因素之一。在 RAG 场景中,Prompt 一般包括任务描述、背景知识(检索得到)、任务指令(一般是用户提问)等。

1
2
3
4
5
6
【任务描述】
假如你是一个专业的客服机器人,请参考【背景知识】,回
【背景知识】
{content} // 数据检索得到的相关文本
【问题】
石头扫地机器人P10的续航时间是多久?

参考文献