RAG 浅显知识
什么是 Rag?
检索增强生成(Retrieval-augmented Generation),简称 RAG。
简单来讲,RAG 就是通过检索获取相关的知识并将其融入 Prompt,让大模型能够参考相应的知识从而给出合理回答。
因此,可以将 RAG 的核心理解为 “检索 + 生成”,前者主要是利用 [[向量数据库]] 的高效存储和检索能力,召回目标知识;后者则是利用大模型和 Prompt 工程,将召回的知识合理利用,生成目标答案。
RAG 架构
完整的 RAG 应用流程主要包含两个阶段:
- 数据准备阶段:数据提取 ——> 文本分割 ——> 向量化(embedding)——> 数据入库。
- 应用阶段:用户提问 ——> 数据检索(召回)——> 注入 Prompt ——> LLM 生成答案。
向量化(embedding)
向量化是一个将文本数据转化为向量矩阵的过程,该过程会直接影响到后续检索的效果。
数据检索
常见的数据检索方法包括:相似性检索、全文检索等,根据检索效果,一般可以选择多种检索方式融合,提升召回率。
- 相似性检索:即计算查询向量与所有存储向量的相似性得分,返回得分高的记录。常见的相似性计算方法包括:余弦相似性、欧氏距离、曼哈顿距离等。
注入 Prompt
Prompt 作为大模型的直接输入,是影响模型输出准确率的关键因素之一。在 RAG 场景中,Prompt 一般包括任务描述、背景知识(检索得到)、任务指令(一般是用户提问)等。
1 | 【任务描述】 |