所有文章 > AI驱动 > 大模型RAG问答行业最佳案例及微调、推理双阶段实现模式
大模型RAG问答行业最佳案例及微调、推理双阶段实现模式

大模型RAG问答行业最佳案例及微调、推理双阶段实现模式

今天是2024年1月27日,星期六,北京 ,天气晴。

关于RAG的综述文章《Retrieval-Augmented Generation for Large Language Models: A Survey》(https://arxiv.org/abs/2312.10997)当前受到大家广泛关注,其中对RAG的演化、评估、关键环节等多个部分的内容进行了介绍。

该工作所提出的模块化(Modular)RAG比较有趣,因此,今天我们来看看这个话题,价值之一在于,对RAG各个模块的方案进行了归置,对建立体系认知有帮助,供大家一起参考。

一、RAG技术的演进的变化

而随着RAG技术的演进,RAG整体的流程变动更加丰富和自由,具体表现在以下几个方面:

在检索增强数据源上,不再局限于传统的纯文本文档为为代表的非结构化数据。越来越多的研究引入了半结构化数据(例如,PDF、HTML和LaTex)、结构化数据(例如三元组、KG、以及结构化查询语句)。

经过预处理结构数据更进一步提供检索的逻辑性和可验证性,降低模型幻觉。此外,以检索LLM自身代替外部知识源的方 法逐渐兴起。通过进一步挖掘LLM的能力,以减少对外部知识源的依赖。

在检索增强技术上,RAG的思想正更多和其他术进行融合,增强的手段越发丰富。例如,微调技术和RAG的协同使用。 例如利用通过微调的方式对检索器和生成器单独进行微调或协同微调。增加Adapter模块来对⻬ Query之间Chunk 之间的语义差异。

增加下游任务无关\任务特定的检索适配器。除了微调,研究人员借鉴了RLHF的思想,通过RL,以更强大的LLM(GPT-4)作为监督信号来增强检索能力。

在检索增强流程上,RAG系统不再局限于,先检索再生成,以及每次前都必须检索的流程。 可以迭代的进行多轮检索增强,用检索出来的内容指导生成,用生成的内容进一步指导检索。另一方面,可以利用LLM或自主判 断是否需要检索。以提高回答问题的效率。如果LLM已经对问题有较高的把握程度,则可以直接进行回答,反之则进行检索。

二、Modular RAG是什么

可以看到,上述RAG的快速发展早已经突破传统的链式RAG范式,展示出了模块化的特点。但是当前的对RAG范式的梳理和抽象还没有跟上技术的快速发展。

因此,立足当前RAG的技术发展特点和趋势,该工作进一步整合了Naive RAG和Advanced RAG的发展范式,提出了Modular RAG范式。

Modular RAG是具有高度扩展的范式,它将RAG系统拆分为Molule Type-Module-Operator的三层结构。

如下图所示,展示对各个模块的核心思路与方法的归类,例如chunk optimizaton的方案:

例如:

indexing包括chunk优化(包括small-to-big,用小块做索引,但召回大块),sliding window(滑动窗口,提高语义连贯性),也包括summary摘要(解决跨文档)以及结构化的组织,例如使用知识图谱进行文档内容的组织,根据文档结构进行层级组织。

Retrieval也包括检索方式的选择以及检索的微调两种,减速哦方式包括稀疏检索(es字符串匹配)以及稠密检索(向量化检索),微调方式包括SFT、adapter等。

post-retrieval包括一些后处理的模块,例如重排rerank(基于规则的、基于模型的、基于大模型llm本身的),上下文压缩compresion/selection(这个主要包括我们前面所说的llmlingua, recomp,selective context,核心在于利用不同的手段,将上下文中不重要的信息进行剔除)

pre-retrival阶段,则包括query-routing(问题的分发、意图分类)、query-expansion(query扩展,一变多,拆分子query)、query transformer(包括query rewrite改写等)、query construction(包括text-cypher,  text2sql等,将结构化知识利用起来)

Generation阶段,则包括对底层基础模型的一些事情,比如基于cloud-api,还是进行SFT微调。

orchestraction阶段,则包括对各个模块之间的执行和通信进行管理。

因此,我们可以看到,每一个Module Type 代表了RAG系统中的一个核心流程,Module Type中包含多个功能模块,每个功能模块内部又包括多个具体的算子。整个RAG系统变成多个模块和对应算子之间的排列和组合,将其称为RAG Flow。

在FLow中,在每个模块类型中可以选择不同一个或多个功能模块,而每个功能模块内部又可以选择一或多个算子。

三、Modular RAG和之前范式的关系及当下机遇

1、Modular RAG和之前范式的关系

Modular RAG中以多层级模块化的形式组织了RAG系统。Adavanced RAG 则是模块化的RAG特例形式,进一步的Naive RAG本身也是Advanced RAG的特例,三个范式之间是继承与发展的关系。

2、Modular RAG下的机遇

Modular RAG的好处是显而易⻅的,将当前RAG的技术整合到一个范式中,提供了更加全面且更高维度的视⻆,可以让研究人员快速把握当前研究发展的全貌和趋势,构建一个RAG的思维地图。通过模块之间编排,相关的技术和方法被清晰的汇总,RAG系统的设计和构建变得更加便利,更容易定位到问题环节。

对于研究人员。 研究人员可以在全面了解RAG当前的发展的基础上,更好地识别当前RAG各个模块中的缺陷,聚焦研究内容,提出新的模块类型、模块和算子。

对于开发人员。 一方面开发研究人员可以借鉴当前经过验证的RAG Flow Pattern,快速上手。另一方面开发 人员可以根据特定的数据情况、使用场景、下游任务以及其他需要去定制化地编排不同的RAG模块和算子,定义新的Flow和Flow Pattern。

总结

本文对关于模块化RAG进行了简要的介绍,更多详细的内容可以参考:Modular RAG and RAG Flow: Part I(https://medium.com/@yufan1602/modular-rag-and-rag-flow-part-ⅰ-e69b32dc13a3)

这是对RAG的一个总括,可以仔细看看,会有收获。

本文章转载微信公众号@老刘说NLP

#你可能也喜欢这些API文章!