当前位置:   article > 正文

模块化的RAG和RAG流程:第二部分_rrr rag

rrr rag

定义了模块和运算符之后,它们可以帮助我们从流程角度查看各种RAG方法。每个RAG可以使用一组运算符进行排列。

 模块化RAG框架

那么,在模块化RAG范式下,我们应该如何设计我们的RAG系统?

在第二部分中,我们将深入探讨典型的RAG流程模式、具体的RAG流程实施以及最佳行业案例。

典型的RAG流程模式和实施

首先,让我们探索RAG流程的突出模式,以及每个模板下的具体流程,展示不同的模块和运算符是如何协调的。

在RAG Flow的背景下,我们将为微调阶段划分三个不同的流程,并为推理阶段划分四个流程。

 微调阶段

检索微调、生成微调和双重微调。

Retriever FT

在RAG流程中,微调检索器的常见方法包括:

  • 直接对检索器进行微调。构建用于检索的专门数据集并对密集检索器进行微调。例如,使用开源检索数据集或基于特定领域的数据构建一个数据集。
  • 添加可训练的适配器模块。有时,直接微调API基础嵌入模型(例如OpenAI Ada-002和Cohere)是不可行的。添加适配器模块可以增强您的数据表示。

    此外,适配器模块有助于更好地与下游任务对齐,无论是针对特定任务(例如,PCRA)还是一般用途(例如,AAR)。
  • LM-监督检索(LSR)。根据LLM生成的结果对检索器进行微调。
  • LLM奖励强化学习:仍然使用LLM的输出结果作为监督信号。采用强化学习来使检索器与生成器对齐。整个检索过程以生成式马尔可夫链的形式进行拆解。

Retriever FT的典型RAG流动模式

 Generator FT

在RAG Flow中,微调生成器的主要方法包括:

  • 直接对检索器进行微调。构建用于检索的专门数据集并对密集检索器进行微调。例如,使用开源检索数据集或基于特定领域的数据构建一个数据集。
  • GPT-4蒸馏。在使用本地部署的开源模型时,一种简单有效的方法是使用GPT-4批量构建微调数据,以增强开源模型的能力。
  • 从LLM/人类反馈中进行强化学习。基于最终生成答案的反馈进行强化学习。除了使用人类评估外,GPT-4还可以充当评判者。

发电机FT的典型RAG流动模式

 双FT

在RAG系统中,同时对检索器和生成器进行微调是RAG系统的一个独特特点。需要注意的是,系统微调的重点在于检索器和生成器之间的协调。

优化检索器和生成器分别属于前两者的组合,而不是Dual FT的一部分。

双FT的典型RAG流动模式

一个典型的实现是RA-DIT,它对LLM和检索器进行了微调。

LM-ft组件根据检索增强指令更新LLM,以最大化给出正确答案的可能性,而R-ft组件则更新检索器,以最小化检索器得分分布与LLM偏好之间的KL散度。

该框架采用本地的Llama作为生成器,以及基于最先进的双编码器的密集检索器DRAGON+作为检索器。

在REPLUG之后,RA-DIT根据语言模型提示检索相关的文本块。每个检索到的文本块都会被添加到提示之前,并且多个文本块的预测会并行计算,并通过加权可能性进行集成,以生成最终的输出。

 RA-DIT中的RAG流程

 推理阶段

在推理阶段,我们提炼出了四种典型的RAG流模式。

 连续的

RAG Flow的顺序结构将RAG的模块和运算符组织成线性流水线,如下图所示。

如果它包括预检索和后检索模块类型,它代表典型的高级RAG范式;否则,它体现了典型的天真RAG范式。

顺序RAG流模式

目前最广泛使用的RAG Pipeline是Sequential,通常在检索之前包括Query Rewrite或HyDE,并在检索之后包括Rerank操作符,例如QAnything的情况。

最常用的顺序RAG流程

重写-检索-读取(RRR)也是一种典型的顺序结构。

查询重写模块是一个较小的可训练语言模型,在强化学习的背景下,重写器的优化被形式化为马尔可夫决策过程,其中LLM的最终输出作为奖励。

检索器使用了一种稀疏编码模型,BM25。

 RRR中的RAG流程

 条件的

RAG流程与条件结构涉及根据不同条件选择不同的RAG路径。通常,这是通过一个路由模块来实现的,该模块根据查询关键词或语义来确定路由。

根据问题的类型选择不同的路线,针对特定情景进行不同的流程。例如,当用户询问严肃问题、政治问题或娱乐话题时,对于大型模型的回答容忍度不同。

不同的路由分支通常在检索来源、检索过程、配置、模型和提示方面有所不同。

条件RAG流模式

条件RAG的经典实现是语义路由器。

 分支

RAG流程具有分支结构,与条件方法不同的是,它涉及多个并行分支,而不是在条件方法中从多个选项中选择一个分支。从结构上看,它可以分为两种类型:

  • 预检索分支(多查询,并行检索)。这涉及扩展原始查询以获取多个子查询,然后针对每个子查询进行单独的检索。在检索后,该方法允许根据子问题和相应的检索内容立即生成答案。

    或者,它可能涉及仅使用扩展的检索内容,并将其合并到统一的上下文中进行生成。
  • 后检索分支(单一查询,并行生成)。该方法保留原始查询并检索多个文档块。随后,它同时使用原始查询和每个文档块进行生成,最后将生成的结果合并在一起。

分支式RAG流程模式

REPLUG体现了一个经典的后检索分支结构,其中预测了每个分支的每个标记的概率。

通过加权可能性集成,将不同的分支聚合在一起,并使用最终的生成结果通过反馈来微调检索器,称为Contriever。

 REPLUG中的RAG流程

 循环

RAG流程具有循环结构,这是模块化RAG的一个重要特征,涉及相互依赖的检索和推理步骤。通常包括用于流程控制的判断模块。这可以进一步分为迭代、递归和自适应(主动)检索方法。

 循环RAG流模式

 迭代检索

有时,单次检索和生成可能无法有效解决需要广泛知识的复杂问题。因此,在RAG中可以使用迭代方法,通常涉及固定次数的检索。

迭代检索的一个典型案例是ITER-RETGEN,它迭代检索增强生成和生成增强检索。检索增强生成根据所有检索到的知识输出对任务输入的响应。

在每次迭代中,ITER-RETGEN利用前一次迭代的模型输出作为特定上下文,以帮助检索更相关的知识。循环的终止由预定义的迭代次数确定。

 ITER-RETGEN中的RAG流程

 递归检索

递归检索的特点是与迭代检索相比,它明显依赖于前一步骤,并且不断加深检索。通常,递归检索会有一个终止机制作为退出条件。

在RAG系统中,递归检索通常涉及查询转换,依赖于每次检索的新重写查询。

 RAG流程在ToC中

典型的递归检索实现,例如ToC,涉及递归执行RAC(递归增强澄清)来逐步将子节点插入到澄清树中,从最初的模糊问题(AQ)开始。

在每个扩展步骤中,根据当前查询进行段落重新排序,生成一个明确的问题(DQ)。树的探索在达到最大数量的有效节点或最大深度时结束。

一旦构建了澄清树,ToC会收集所有有效的节点,并生成一个全面的长文本答案来回答AQ。

自适应(主动)检索

随着RAG的发展,已经逐渐从被动检索转向了自适应检索的出现,也被称为主动检索,这在一定程度上归功于LLM的强大能力。这与LLM代理有着共同的核心概念。

RAG系统可以主动确定检索的时机,并决定何时结束整个过程并生成最终结果。根据判断标准,这可以进一步分为基于提示和基于调整的方法。

  • 基于提示的方法涉及使用提示工程来控制流程,以指导LLM。一个典型的实施示例是FLARE。

    其核心概念是语言模型只在缺乏必要知识时进行检索,以避免在增强型语言模型中进行不必要或不适当的检索。FLARE迭代生成下一个临时句子,并检查低概率标记的存在。

    如果找到,系统会检索相关文档并重新生成句子。

 FLARE中的RAG流程

  • 调整基础。调整基础的方法涉及对LLM进行微调,以生成特殊标记,从而触发检索或生成。这个概念可以追溯到Toolformer,其中生成特定内容有助于调用工具。在RAG系统中,这种方法用于控制检索和生成步骤。一个典型的例子是Self-RAG。具体来说:

给定一个输入提示和前一代结果,首先预测特殊标记“检索”是否有助于通过段落检索来增强持续生成。

如果需要检索,模型会生成:一个评估检索到的段落相关性的批评标记,下一个回应片段,以及一个评估回应片段中的信息是否得到段落支持的批评标记。

最后,一个评价令牌评估响应的整体效用,并选择最佳结果作为最终输出。

 自我RAG中的RAG流程

 最佳行业案例

在前面的章节中,我们深入研究了各种研究论文,其特点是强调解决具体细节和复杂性。

RAG在工业领域中脱颖而出,作为一项技术,它能够在各种任务场景中发挥作用。

本章将从RAG流的角度阐述几种行业领先的RAG实践,为实际应用场景中如何有效地组合和构建RAG流提供深入见解。

 开放人工智能

OpenAI的Demo Day演示所呈现的见解并不完全代表OpenAI的实际运营。

为了提高RAG的成功率,OpenAI团队从45%的准确率开始尝试了各种方法,并确定了最终用于生产的方法。

他们探索了假设的文档嵌入(HyDE)、微调嵌入和其他方法,但结果并不令人满意。

通过尝试不同大小的信息块并嵌入不同的内容部分,他们能够将准确率提高到65%。通过重新排序和针对不同类型问题的方法,他们进一步提高了准确率至85%。

最终,通过结合快速工程、查询扩展和其他方法,他们实现了98%的准确率。

 OpenAI RAG 流程

团队强调了模型微调和RAG整合的强大潜力,特别是在不使用复杂技术的情况下,仅通过简单的模型微调和提示工程来达到行业领先水平。

 起源OpenAI演示

 百川

根据来自各种来源的公开信息,可用数据有限,作者对某些细节做出了一些推测性的假设。请参阅原文(中文版)。

百川从Meta的CoVe中汲取灵感,设计了一种将复杂提示分解为多个独立且并行可检索的搜索友好查询的方法。

这使得大型模型能够针对每个子查询进行有针对性的知识库搜索,从而提供更准确、更详细的答案,并减少虚假输出。此外,他们利用自有的TSF(思考-进一步)来推断和发掘用户输入背后更深层次的问题,从而更精确、更全面地理解用户意图。虽然TSF的技术细节尚未披露,但据推测,它可能是Step-back提示方法的改进。

在检索步骤中,百川智能已经开发了百川文本嵌入向量模型,该模型在包含超过1.5万亿个标记的高质量中文数据上进行了预训练。

他们通过一种专有的损失函数解决了对比学习中批次大小依赖的问题。这个向量模型已经超过了C-MTEB。

此外,他们还引入了稀疏检索和重新排序模型(未公开),形成了一种混合检索方法,将向量检索与稀疏检索并行结合,显著提高了召回率达到95%。

此外,他们引入了自我批评,使得大型模型能够根据提示、相关性和实用性对检索到的内容进行内省,并经过二次审查以选择最匹配和高质量的候选内容。

 百川RAG流程

鉴于百川RAG流程中存在众多分支且缺乏具体披露,合理推测重新排序和筛选涉及对所有材料进行重新排序和筛选,无论是从其他分支检索还是生成的材料。

 数据脑

作为大数据领域的领先服务提供商,Databricks在RAG设计方面保持了其独特的特点和优势。

当用户输入一个问题时,系统从预处理的文本向量索引中检索相关信息,结合提示工程生成回答。上半部分,即非结构化数据管道,遵循主流的RAG方法,并没有展示出任何特殊的独特性。

 Databricks RAG 流程

下半部分是结构化数据管道,代表了Databricks的特征工程过程,是Databricks的RAG实施中最重要的方面。利用其在大数据方面的专业知识,Databricks从其高度准确的数据存储中进行额外的检索,充分利用其在实时数据服务方面的优势。显然,Databricks在GenAI时代的战略是为具有广泛市场需求的RAG应用赋能,将其强大的Delta湖处理能力与生成式AI技术相结合,构建一个集成解决方案,并将这一统一服务推广给其客户。

 结论

该文章描述了三种微调阶段的模式,四种推理阶段的模式,以及七篇论文和三个工业最佳实践中的具体流程实现。整体框架如下所示。

正如我们在第一部分中也提到的,总结和抽象RAG范式在这个快速技术发展的时代是至关重要的。

理解当前技术特点和趋势的方向,超越具体的实现是至关重要的,以便把握未来发展的方向。

模块化RAG技术地图

打个广告,我建了知识星球,会介绍一些知识图谱和LLM相关内容。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/356523?site
推荐阅读
相关标签
  

闽ICP备14008679号