RAG 简介
检索增强生成 (Retrieval-Augmented Generation, RAG)
大语言模型 (Large Language Models, LLM) 在庞大的数据集上训练,这些数据集往往不包含您个人的具体数据。检索增强生成技术 (RAG) 通过在生成过程中动态地结合用户数据,来弥补这一缺陷。重点在于,不是修改大语言模型的训练数据集,而是让模型能够实时接入并利用这些用户数据,从而提供更加定制化且与上下文相关的回答。
常规普通流程
数据预处理
- 非结构化数据的文本提取(pdf、word等解析)
- 文档的拆分(因为受限于模型的输入token限制以及embedding模型的最佳token长度,需要把文本拆分成合适的大小)
- 文本的向量化处理
- 向量入库
检索
- 用户的query经过embedding之后去向量数据库检索查topN(最常规的做法是只处理用户的原始query,也可以对用户的query进行改写,然后多个query同时搜索,MapReduce)
结合
- 结合搜索到的结果(也就是相关文档的片段)与用户的query,两个数据拼接之后,请求到模型输出结果
模型输出答案
- 模型在这个流程中的作用就是作为一个阅读理解很厉害的工具人
其他
需要搭建有效的评估体系,评估是流程中一个至关重要的步骤,它用于检查流程相较于其他策略的有效性或进行调整时的表现如何。评估为查询回应的准确性、一致性和速度提供了客观的量度标准。
RAG可以做什么?
- 客服知识问答
- 公司规章制度问答
- 任何基于特定私有知识库的问答
额外的话
我认为RAG最后的发展就是agent,或者说是作为agent的一个子模块。