RAG概述(一):RAG架构的演进

目录

概述

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核心步骤

  1. Indexing 索引
  2. Retrieval检索
  3. 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三个过程。

不足:效果不好

具体表现:

  1. 准确性低:Retrieval阶段查询到的块,和query本身的相关性低。可能导致LLM出现幻觉或空中掉物等问题。
  2. 召回低:Retrieval阶段查询的块,并没有返回足够多的相关块,进一步降低了LLM构建全面回应的可能性。
  3. 组装prompt的问题:这个阶段会将检索到的块和query融合,构建一个prompt给到LLM。若检索到的多个块中包含了相似或重复的内容,可能导致最终LLM生成内容的冗余和重复,也就是表现的婆婆妈妈。
  4. 灵活性问题:若检索阶段拿到了足够丰富的信息,和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的一个特例。这三种范式之间的关系是继承和发展。

(且听下回分解)

参考

  1. https://arxiv.org/pdf/2312.10997
  2. https://zhuanlan.zhihu.com/p/683651359

  • 24
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hugo Lei

赏你了,我的一点心意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值