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

大语言模型 (Large Language Models, LLM) 在庞大的数据集上训练,这些数据集往往不包含您个人的具体数据。检索增强生成技术 (RAG) 通过在生成过程中动态地结合用户数据,来弥补这一缺陷。重点在于,不是修改大语言模型的训练数据集,而是让模型能够实时接入并利用这些用户数据,从而提供更加定制化且与上下文相关的回答。

常规普通流程

  1. 数据预处理

    1. 非结构化数据的文本提取(pdf、word等解析)
    2. 文档的拆分(因为受限于模型的输入token限制以及embedding模型的最佳token长度,需要把文本拆分成合适的大小)
    3. 文本的向量化处理
    4. 向量入库
  2. 检索

    1. 用户的query经过embedding之后去向量数据库检索查topN(最常规的做法是只处理用户的原始query,也可以对用户的query进行改写,然后多个query同时搜索,MapReduce)
  3. 结合

    1. 结合搜索到的结果(也就是相关文档的片段)与用户的query,两个数据拼接之后,请求到模型输出结果
  4. 模型输出答案

    1. 模型在这个流程中的作用就是作为一个阅读理解很厉害的工具人

其他

需要搭建有效的评估体系,评估是流程中一个至关重要的步骤,它用于检查流程相较于其他策略的有效性或进行调整时的表现如何。评估为查询回应的准确性、一致性和速度提供了客观的量度标准。

RAG可以做什么?

  • 客服知识问答
  • 公司规章制度问答
  • 任何基于特定私有知识库的问答

额外的话

我认为RAG最后的发展就是agent,或者说是作为agent的一个子模块。

rag-2024-01-25.png