目录
概述
RAG核心步骤
Indexing索引
Retrieval检索
Generation生成
Native RAG
Advanced RAG
Modular RAG
参考
概述
RAG:Retrieval-Augmented Generation 检索增强生成。
RAG通过结合LLMs的内在知识和外部数据库的非参数化数据,提高了模型在知识密集型任务中的准确性和可信度。
RAG是一种通过整合外部知识库来增强LLMs的范式。
RAG的发展经历了三个主要阶段:初级(Native RAG)、高级(Advanced RAG)和模块化RAG(Modular RAG)。
RAG核心步骤
- Indexing 索引
- Retrieval检索
- Generation生成
Q&A场景下的RAG工作流示例:
用户询问ChatGPT关于一个最近的高调事件(例如,OpenAI首席执行官的突然解雇和复职),这引起了公众的广泛讨论。
ChatGPT作为最著名和广泛使用的LLM,受到其预训练数据的限制,缺乏对最近事件的了解。
RAG通过从外部知识库检索最新的文档摘要来解决这一差距。这些文章与初始问题一起,被合并成一个丰富的提示,使ChatGPT能够综合出一个知情的回应。
这个例子说明了RAG过程,展示了它通过实时信息检索增强模型响应的能力。
Indexing索引
索引过程是数据准备中的一个关键初始步骤,它在离线状态下进行,并涉及多个阶段。
【数据提取】它从数据索引开始,原始数据被清洗和提取,各种文件格式如PDF、HTML、Word和Markdown被转换成标准化的纯文本。
【分块】为了适应语言模型的上下文限制,这些文本随后被分割成更小、更易于管理的块,这个过程被称为分块。
【向量化】这些块随后通过一个嵌入模型转换为向量表示,这有助于在检索阶段进行相似性比较。
【索引】最后,创建一个索引来存储这些文本块及其向量嵌入作为键值对,这允许高效和可扩展的搜索能力。
Retrieval检索
【查询向量化】在收到用户查询后,系统使用与索引阶段相同的编码模型将输入转换为向量表示。
【相似度计算】然后计算查询向量与索引语料库中向量化块之间的相似度分数。
【topk】系统优先检索与查询最相似的前K个块。这些块随后被用作扩展的上下文基础,以解决用户的请求。
Generation生成
【组装prompt】提出的查询和选定的文档被渲染成一个提示(Prompt),大型语言模型生成回答。
【剩下的就交给模型了】模型的回答方法可能因任务特定标准而异,允许它要么利用其内在的参数知识,要么将其回应限制在提供的文档内包含的信息。
在持续对话的情况下,任何现有的对话历史可以被整合到提示中,使模型能够有效地参与多轮对话互动。
Native RAG
就是包括最基本的Indexing-Retrieval-Generation三个过程。
不足:效果不好
具体表现:
- 准确性低:Retrieval阶段查询到的块,和query本身的相关性低。可能导致LLM出现幻觉或空中掉物等问题。
- 召回低:Retrieval阶段查询的块,并没有返回足够多的相关块,进一步降低了LLM构建全面回应的可能性。
- 组装prompt的问题:这个阶段会将检索到的块和query融合,构建一个prompt给到LLM。若检索到的多个块中包含了相似或重复的内容,可能导致最终LLM生成内容的冗余和重复,也就是表现的婆婆妈妈。
- 灵活性问题:若检索阶段拿到了足够丰富的信息,和query一起构建扔给LLM后,LLM的生成完全基于检索出的内容,并没有增加新生成的内容,变成了复读机。
Advanced RAG
概述:对Native RAG做了些优化
Advanced RAG是为了解决Naive RAG的不足而开发的,它实现了预检索和后检索策略。
为了解决Naive RAG在索引过程中遇到的挑战,Advanced RAG改进了其索引方法,使用了滑动窗口、细粒度分割和元数据等技术。它还引入了各种方法来优化检索过程。
(且听下回分解)
Modular RAG
概述:Indexing-Retrieval-Generation三段论不变,额外配置了一个超大的武器库,你可以自由选用合适的组件加入到三段论中。
模块化RAG结构与传统的朴素RAG框架不同,提供了更大的灵活性和适应性。它整合了各种方法来增强功能模块,例如加入搜索模块进行相似性检索,并在检索器中应用微调方法。重构的RAG模块和迭代方法已被开发出来以解决特定问题。
模块化RAG范式在RAG领域越来越成为常态,允许通过多个模块进行序列化流水线或端到端训练。
然而,模块化RAG并非独立存在。高级RAG是模块化RAG的一种特殊形式,而朴素RAG本身是高级RAG的一个特例。这三种范式之间的关系是继承和发展。
(且听下回分解)
参考
- https://arxiv.org/pdf/2312.10997
- https://zhuanlan.zhihu.com/p/683651359