赞
踩
定义了模块和运算符之后,它们可以帮助我们从流程角度查看各种RAG方法。每个RAG可以使用一组运算符进行排列。
模块化RAG框架
那么,在模块化RAG范式下,我们应该如何设计我们的RAG系统?
在第二部分中,我们将深入探讨典型的RAG流程模式、具体的RAG流程实施以及最佳行业案例。
首先,让我们探索RAG流程的突出模式,以及每个模板下的具体流程,展示不同的模块和运算符是如何协调的。
在RAG Flow的背景下,我们将为微调阶段划分三个不同的流程,并为推理阶段划分四个流程。
检索微调、生成微调和双重微调。
在RAG流程中,微调检索器的常见方法包括:
Retriever FT的典型RAG流动模式
在RAG Flow中,微调生成器的主要方法包括:
发电机FT的典型RAG流动模式
在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系统可以主动确定检索的时机,并决定何时结束整个过程并生成最终结果。根据判断标准,这可以进一步分为基于提示和基于调整的方法。
FLARE中的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流程
Databricks RAG 流程
下半部分是结构化数据管道,代表了Databricks的特征工程过程,是Databricks的RAG实施中最重要的方面。利用其在大数据方面的专业知识,Databricks从其高度准确的数据存储中进行额外的检索,充分利用其在实时数据服务方面的优势。显然,Databricks在GenAI时代的战略是为具有广泛市场需求的RAG应用赋能,将其强大的Delta湖处理能力与生成式AI技术相结合,构建一个集成解决方案,并将这一统一服务推广给其客户。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。