一篇模块化RAG之最新全面系统性综述

news2024/9/29 11:29:28

RAG访问外部知识库增强了LLMs处理知识密集型任务的能力,随着应用场景需求的增加,RAG系统变得更加复杂。传统的RAG依赖于简单的相似性检索,**面对复杂查询和变化多端的文本块时表现不佳:**对查询的浅层理解、检索冗余和噪声。

朴素RAG和高级RAG的案例。面对复杂问题时,两者都遇到了限制,难以提供令人满意的答案。尽管高级RAG通过分层索引、检索前和检索后的过程提高了检索精度,但这些相关文档并没有被正确使用。

提出了一种新的模块化RAG框架,通过将复杂的RAG系统分解为三层架构设计(模块、子模块和操作符)以统一和结构化的方式定义RAG系统,增强了系统的灵活性和可扩展性,这种框架超越了传统的线性架构,采用了集成路由、调度和融合机制的更先进设计

当前模块化RAG的案例。该系统整合了多样化的数据和更多功能性组件。过程不再局限于线性,而是由多个控制组件控制检索和生成,使整个系统更加灵活和复杂。

模块化RAG框架与符号

  1. RAG系统组成:典型的RAG系统主要由三个关键部分组成:索引(Indexing)、检索(Retrieval)和生成(Generation)。

  2. 索引(Indexing):文档被分割成可管理的块(chunks),并通过嵌入模型转换成向量,存储在向量数据库中。这一步骤是系统组织的关键。

  3. 检索(Retrieval):使用相同的编码模型将查询转换成向量,然后根据向量相似度筛选出最相关的文档块。

  4. 生成(Generation):获取相关文档后,将查询和检索到的文档一起输入到大型语言模型(LLM)中,生成最终答案。

  5. 模块化RAG框架:随着RAG技术的发展,系统整合了越来越多的功能组件。模块化RAG框架包括三个层次,从大到小分别是:

  • L1 模块(Module):RAG系统的核心过程。

  • L2 子模块(Sub-module):模块内的功能模块。

  • L3 操作符(Operator):模块或子模块中具体的功能实现。

  1. RAG Flow:模块和操作符的排列构成了RAG Flow,这是RAG系统的工作流程。RAG Flow可以分解为子功能的图形表示,在最简单的情况下,图形是线性链。

  2. 符号描述:文中提供了一个重要符号的表格,定义了如下符号:

模块化RAG模块和操作符

详细介绍了模块化RAG框架下的六个主要模块以及所使用的的具体技术:索引、检索前处理、检索、检索后处理、生成和编排

三种RAG范式的比较。模块化RAG从之前的范式中发展而来,并与当前RAG系统的实际需求相一致。

  1. 索引(Indexing):
  • 将文档分割成易于管理的块,是系统组织的关键步骤。

  • 面临的挑战包括内容表示不完整、块相似度搜索不准确和引用轨迹不清晰。

  • 解决方案包括块优化(如调整块大小和重叠)、元数据附加和结构化组织。

  • 技术包括:

  • 块优化(Chunk Optimization):调整块的大小和重叠以优化语义信息的捕获和噪声的控制。

  • 元数据附加(Metadata Attachment):为块附加元数据,如页码、文件名等,以增强检索的过滤能力。

  • 结构化组织(Structure Organization):建立文档的层次结构,如段落和句子的分割,以提高检索效率。

  • 知识图谱索引(KG Index):使用知识图谱来组织文档,明确概念和实体之间的关系。

  1. 检索前处理(Pre-retrieval):
  • 改进原始查询以提高检索效果,解决诸如查询表述不清、语言复杂性和歧义等问题。

  • 方法包括查询扩展、查询转换和查询构造。

  • 技术包括:

  • 查询扩展(Query Expansion):通过扩展查询来丰富上下文,提高检索的相关性。

  • 查询转换(Query Transformation):对原始查询进行改写或转换以提高检索的准确性。

  • 查询构建(Query Construction):根据需要将查询转换为不同的查询语言,如SQL或Cypher,以访问结构化数据。

  1. 检索(Retrieval):
  • 利用强大的嵌入模型在潜在空间中高效表示查询和文本,建立问题与文档之间的语义相似性。

  • 考虑因素包括检索器的选择、检索器微调以及检索效率和质量。

  • 技术包括:

  • 检索器选择(Retriever Selection):根据任务需求选择合适的检索器,包括稀疏检索器、密集检索器和混合检索器。

  • 检索器微调(Retriever Fine-tuning):对检索器进行微调以适应特定领域的数据和术语。

  1. 检索后处理(Post-retrieval):
  • 对检索到的文档块进行后处理,以更好地利用上下文信息。

  • 包括重新排序、压缩和选择操作,以提高最终生成答案的质量。

  • 技术包括:

  • 重排(Rerank):根据相关性对检索到的文档块进行重新排序。

  • 压缩(Compression):压缩检索到的内容,以减少噪声并提高LLM对关键信息的识别。

  • 选择(Selection):直接移除不相关或冗余的文档块。

  1. 生成(Generation):
  • 使用大型语言模型基于用户的查询和检索到的上下文信息生成答案。

  • 考虑因素包括生成器微调和答案的验证。

  • 技术包括:

  • 生成器微调(Generator Fine-tuning):根据特定领域或数据特性对生成器进行微调,以提高生成答案的质量。

  • 验证(Verification):通过知识库或模型基础的方法对生成的答案进行验证,以减少错误信息。

  1. 编排(Orchestration):
  • 控制RAG过程的模块,包括路由、调度和融合。

  • 动态选择后续步骤,根据前一个结果进行决策。

  • 技术包括:

  • 路由(Routing):根据查询的类型或内容将查询定向到不同的处理流程。

  • 调度(Scheduling):管理RAG流程中的决策点,如何时进行检索或生成。

  • 融合(Fusion):整合来自多个分支的信息,以形成一个全面且一致的响应。

模块化RAG流程及其模式

详细探讨了模块化RAG系统中的工作流模式,即RAG流程(RAG Flow)及其模式(Flow Pattern)。

RAG Flow的定义:

RAG Flow是模块和操作符之间的协作,形成模块化RAG系统中的工作流程。

通过控制逻辑,操作符可以按照预定的管道执行,也可以在必要时执行条件、分支或循环操作。

RAG Flow Pattern:

识别并定义了一组常见的RAG流程模式,这些模式跨越不同的应用领域,展现出高度的一致性和可重用性。

RAG流程模式可以定义为一系列模块的有序连接,每个模块包含一组操作符。

  • 线性模式(Linear Pattern):

最简单且最常用的模式,模块按照固定的顺序执行。

线性RAG流程模式。每个模块按固定的顺序依次处理。

技术包括查询转换(Query Transform Module)、检索(Retrieval)、重排(Rerank)、生成(Generation)。

例如,RRR(RewriteRetrieve-Read)模型,它在检索前引入了一个可学习的查询改写模块。

RRR是一种典型的线性流程,它在检索之前引入了一个可学习的查询重写模块。该模块基于大型语言模型(LLM)的输出结果进行强化学习。

  • 条件模式(Conditional Pattern)

根据不同的条件选择不同的RAG管道。

通过路由模块决定流程的下一个模块。

条件流程模式。存在一个路由模块,它控制查询被导向哪个 RAG 流程。通常,不同的流程用于不同的配置,以满足 RAG 系统的一般要求。

  • 分支模式(Branching Pattern)

RAG流程可能有多个并行运行的分支,通常是为了增加生成结果的多样性。

分为检索前分支(Pre-retrieval Branching)和检索后分支(Post-retrieval Branching)。

检索前分支模式(Pre-retrieval Branching Pattern):

技术包括查询扩展(Query Expansion)、并行检索(Parallel Retrieval)、生成(Generation)、合并(Merge)。

检索前分支流程模式。每个分支分别执行检索和生成,然后在最后进行聚合。

检索后分支模式(Post-retrieval Branching Pattern):

技术包括单一查询检索(Single Query Retrieval)、并行生成(Parallel Generation)、合并(Merge)。

检索后分支流程模式。只执行一次检索,然后对每个检索到的文档块分别进行生成,随后进行聚合。

REPLUG中的 RAG 流程,遵循典型的检索后分支模式。每个检索到的块都经历并行生成,然后使用加权概率集合进行聚合。

  • 循环模式(Loop Pattern)

涉及检索和生成步骤的相互依赖,通常包括一个调度模块来控制流程。

包括迭代检索(Iterative Retrieval)、递归检索(Recursive Retrieval)、自适应检索(Adaptive Retrieval)。

循环流程模式。通常,RAG 系统执行多轮检索和生成。它可以被分类为三种形式:迭代、递归和自适应。

ITER-RETGEN是一种典型的迭代结构。在最大迭代次数的限制内执行多轮检索和生成。

ToC的 RAG 流程。这个过程的一个典型特点是,每次递归检索都使用前一步生成的新查询,从而逐步深化对原始复杂查询的分析。

自适应检索:FLARE的RAG流程。生成的临时答案将进行置信度评估。如果它未达到所需的置信度水平,流程将返回到检索阶段并重新生成。评估标准是通过提示实现的。

自适应检索:SELF-RAG的RAG流程。首先,它提示 GPT-4 获取一个合适的指令微调数据集,以微调部署的开源大型语言模型(LLM)。这允许模型在生成过程中输出四个特定的令牌,这些令牌用于控制 RAG 流程。

  • 调优模式(Tuning Pattern)

RAG不断整合更多的LLM相关技术,其中许多组件由可训练的语言模型组成。

通过微调,可以进一步优化组件的性能和与整体流程的兼容性。

包括检索器微调(Retriever Fine-tuning)、生成器微调(Generator Fine-tuning)、双重微调(Dual Fine-tuning)。

检索器微调模式,主要包括直接的直接微调(SFT)、添加可训练的适配器、受语言模型监督的检索和基于大型语言模型(LLM)奖励的强化学习(RL)。

生成器微调模式,主要方法包括直接微调(SFT)、蒸馏以及来自大型语言模型(LLM)/人类反馈的强化学习(RL)。

双重微调模式。在这种模式下,检索器和生成器都参与微调,它们的偏好将被对齐。

最后,PaperAgent团队也根据在RAG方面的实践经验,梳理了一张模块化RAG全景框架图,共计8个模块,36种技术:

PaperAgent-RAG专栏试看:

https://docs.qq.com/aio/DR0dBWm9WYlJNckxw

1.https://arxiv.org/abs/2407.21059
2.Modular RAG: Transforming RAG Systems into LEGO-like Reconfigurable Frameworks

如何系统的去学习大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享]👈

在这里插入图片描述

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

在这里插入图片描述

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解
  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
      - L1.4.1 知识大模型
      - L1.4.2 生产大模型
      - L1.4.3 模型工程方法论
      - L1.4.4 模型工程实践
    • L1.5 GPT应用案例
阶段2:AI大模型API应用开发工程
  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容
    • L2.1 API接口
      - L2.1.1 OpenAI API接口
      - L2.1.2 Python接口接入
      - L2.1.3 BOT工具类框架
      - L2.1.4 代码示例
    • L2.2 Prompt框架
      - L2.2.1 什么是Prompt
      - L2.2.2 Prompt框架应用现状
      - L2.2.3 基于GPTAS的Prompt框架
      - L2.2.4 Prompt框架与Thought
      - L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
      - L2.3.1 流水线工程的概念
      - L2.3.2 流水线工程的优点
      - L2.3.3 流水线工程的应用
    • L2.4 总结与展望
阶段3:AI大模型应用架构实践
  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容
    • L3.1 Agent模型框架
      - L3.1.1 Agent模型框架的设计理念
      - L3.1.2 Agent模型框架的核心组件
      - L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
      - L3.2.1 MetaGPT的基本概念
      - L3.2.2 MetaGPT的工作原理
      - L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
      - L3.3.1 ChatGLM的特点
      - L3.3.2 ChatGLM的开发环境
      - L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
      - L3.4.1 LLAMA的特点
      - L3.4.2 LLAMA的开发环境
      - L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍
阶段4:AI大模型私有化部署
  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景
学习计划:
  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的所有 ⚡️ 大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

全套 《LLM大模型入门+进阶学习资源包↓↓↓ 获取~

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享👈

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1980393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch未授权访问漏洞

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索】擎,基于RESTful web:接口。Elasticsearch:是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。Elasticsearch的增别改…

Spring File Storage(文件的对象存储)框架基本使用指南

概述 本文仅作为快速入门,深入学习及使用详见官网 云存储 在开发过程当中,会使用到存文档、图片、视频、音频等等,这些都会涉及存储的问题,文件可以直接存服务器,但需要考虑带宽和存储空间,另外一种方式…

扑翼无人机仿生鸟技术详解

1. 仿生学原理 扑翼无人机仿生鸟技术,顾名思义,是受到自然界鸟类飞行机制的深刻启发而发展起来的一种无人机技术。仿生学原理在此技术中扮演着核心角色,它通过研究鸟类的翅膀结构、飞行姿态、气动效率、能量转换等生物学特性,力求…

Python酷库之旅-第三方库Pandas(066)

目录 一、用法精讲 261、pandas.Series.dt.year属性 261-1、语法 261-2、参数 261-3、功能 261-4、返回值 261-5、说明 261-6、用法 261-6-1、数据准备 261-6-2、代码示例 261-6-3、结果输出 262、pandas.Series.dt.month属性 262-1、语法 262-2、参数 262-3、功…

Hibernate Validator 数据校验框架

文章目录 一、数据校验框架简介1、JSR(Java 规范提案):Bean Validation2、javax.validation.api3、jakarta.validation.api 二、SpringBoot基础使用1、校验get请求参数2、校验post请求参数3、常用注解4、分组校验5、自定义校验规则5、校验模式6、全局异常处理 一、数…

LabVIEW远程开发

LabVIEW远程开发是指在不同地点的开发者通过网络协同工作,共同开发、调试和维护基于LabVIEW的应用程序。这种开发模式适用于分布式团队、远程办公和全球化项目合作,能够有效利用不同地区的人才和资源。以下是LabVIEW远程开发的详细介绍: 1. 远…

elasticsearch的使用(二)

DSL查询 Elasticsearch的查询可以分为两大类: 叶子查询(Leaf query clauses):一般是在特定的字段里查询特定值,属于简单查询,很少单独使用。 复合查询(Compound query clauses)&am…

C语言程序设计-[4] 算法和程序结构

1、算法 一个程序至少包含两个方面:数据结构和算法,算法就是为解决一个问题而采取的方法和步骤,即对程序操作步骤的描述。 算法有一定的评价标准和表示方法,其中流程图法和N-S结构图法是本章需要介绍的两种方法。 (…

校园商铺管理小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,商家管理,商品类型管理,商品信息管理,在线咨询管理,咨询回复管理,交流论坛,系统管理 微信端账号功能包括&a…

LabVIEW工件表面瑕疵识别系统

开发了一种利用LabVIEW和IMAQ Vision视觉工具进行工件表面瑕疵识别的系统。该系统通过图像处理技术识别并分类工件表面的裂纹、划痕等缺陷,从而提升生产线的分拣效率和产品质量。 项目背景 工业生产中,工件表面的缺陷直接影响产品质量和生产效率。传统人…

Web开发-html篇-下

这篇是接着上篇的内容&#xff0c;接着介绍html的其他标签及属性的用法&#xff0c;感兴趣的可以从我的html上篇看起 1. 超链接示例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&…

打造干净的Git历史:本地仓库整理操作详解

让你的Git提交如行云流水&#xff1a;本地仓库整理指南 一、背景二、整理上一次提交三、整理多次提交四、注意事项五、总结 一、背景 为什么需要本地仓库整理操作呢&#xff1f; 因为本地仓库提交到远程仓库是无法撤回的&#xff0c;只能是从远端仓库拉取数据到本地&#xff0…

安装ubuntu server24.04系统

0.写在前面 Legacy和UEFI比较legacyUEFI定义基于BIOS的传统引导模式新一代的系统引导模式兼容性较好&#xff0c;支持多数系统主要支持64位系统&#xff0c;对旧版本系统支持较差磁盘分区MBR,最大2.2TB&#xff0c;最多4个主分区GPT&#xff0c;最大16TB&#xff0c;理论上无分…

临床试验设计的干预、受试者和结果指标

临床试验是医学研究中至关重要的一环。通过科学设计和严格实施的临床试验&#xff0c;我们能够系统地评估新药、新疗法以及其他医学干预措施的安全性和有效性。临床试验的设计需考虑多个因素&#xff0c;其中干预、受试者和结局是三大关键要素。本文将详细探讨这些要素在临床试…

基于Jeecgboot3.6.3的vue3版本的流程中仿钉钉流程的鼠标拖动功能支持

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、因为原先仿钉钉流程里不能进行鼠标拖动来查看流程&#xff0c;所以根据作者提供的信息进行修改&#xff0c;在hooks下增加下面文件useDraggableScroll.ts import { ref, onMounted, on…

【Python】操作数据库

一、数据库编程接口 为了对数据库进行统一的操作&#xff0c;大多数语言都提供了标准化的数据库接口&#xff08;API&#xff09;。数据库提供了接口&#xff0c;Python定义了规范&#xff08;包括数据操作的对象、函数等&#xff09;&#xff0c;通过Python定义的对象就能直接…

对称加密 和 非对称加密

对称加密 和 非对称加密 文章目录 对称加密 和 非对称加密对称解密——异或运算非对称解密——RSA算法问题RSA算法社会地位缺点 PS&#xff1a;RSA算法的攻击方式 如果对你有帮助&#xff0c;就点赞收藏把&#xff01;(&#xff61;&#xff65;ω&#xff65;&#xff61;)&am…

支持10K长视频理解的多模态大模型MovieChat(CVPR 2024)

MovieChat: From Dense Token to Sparse Memory for Long Video Understanding 论文信息 paper&#xff1a;CVPR 2024 code&#xff1a;https://rese1f.github.io/MovieChat/ 视觉模型大语言模型&#xff1a;首个支持10K帧长视频理解任务的新型框架&#xff08;推荐这篇公众号…

小程序开发全攻略:从零到上线的实战历程

引言 在当今的数字化时代&#xff0c;小程序凭借其轻便、快捷的特点&#xff0c;成为了连接用户与服务的桥梁。作为一名开发者&#xff0c;你可能正考虑踏入小程序开发的领域&#xff0c;但面对纷繁复杂的开发流程和技术要点&#xff0c;或许会感到无从下手。今天&#xff0c;我…

C 语言文件操作详解

目录 引言 一、基本概念 1.什么是文件 2.文件的属性 3.为什么使用文件 4.二进制文件和文本文件 二、文件的打开和关闭 1.流和标准流 2.文件指针 3.文件的打开和关闭 三、⽂件的顺序读写 1.顺序读写函数 2.详细介绍 1.fgetc 2.fputc 3.fgets 4.fputs 5.fscan…