分享
大模型RAG问答行业最佳案例及微调、推理双阶段实现模式:基于模块化(Modular)RAG自定义RAG Flow
输入“/”快速插入内容
大模型RAG问答行业最佳案例及微调、推理双阶段实现模式:基于模块化(Modular)RAG自定义RAG Flow
飞书用户6750
2024年1月29日修改
❤️
原创 刘焕勇 老刘说NLP
2024-01-29 18:31
发表于北京
今天是2024年1月29日,星期一,北京,天气晴。
今天我们再来看看RAG的一些话题。
我们在上一个文章
《值得一看的大模型RAG问答总括性梳理:模块化(Modular)RAG范式的定义、构成及机遇》(
https://mp.weixin.qq.com/s/j07PkTCoxBzAhkyON1puPg
)中
介绍了模块化(Modular)RAG的一些相关工作,重点对每个模块中的构成细节,即模块化RAG的”模块类型“,”模块“和”算子“进行了论述,相信大家已经有了一定的认识。
因此,我们趁热打铁,
借着再来看看基于不3同模块和和算子的编排就组成的RAG Flow,6这为我们看待RAG系统提供了新的视角。
在模块化 RAG 范式是如何帮助我们设计自己的 RAG Flow?
本文,我们将从三个方面深入探讨RAG Flow的设计思路,分别是
典型的 RAG Flow模式、特定的 RAG 流实现以及最佳的行业案例。
在
典型的 RAG Flow模式方面,
我们将介绍以下3种微调阶段模式和4种推理阶段模式。
供大家一起参考并思考。
一、微调阶段
1、检索器微调
在RAG流程中,对检索器的微调,常用方法包括:
•
直接微调
。根据自有的领域数据或开源的检索数据,对稠密检索器进行微调
•
添加可训练的Adapter 模块
。API -base的编码模型,无法直接微调。添加Adapter模块,可以让Embedding更好的表示私有的数据。另一方面通过Adapter模块,可以更好地对齐下游任务
•
LSR(LM-supervised Retrieval)
根据LLM最后生成的结果去微调检索器
•
LLM Reward RL
。仍然是以LLM输出结果作为监督信号。通过强化学习让Retriever去对齐生成器。
2、生成器微调
对生成器的微调,主要的方法包括:
•
直接微调
。通过外部数据集微调可以为生成器补充额外的知识。定制化模型输入和输出
•
GPT-4蒸馏
。使用开源模型时,一个简单且有效的方法就是从利用GPT-4批量构建微调数据,来提高开源模型的能力
•
基于反馈的强化学习(RLHF)。
根据最终的生成回答的反馈进行强化学习,除了使用人类评价,也可以使用GPT-4作为评判法官。
3、协同微调
在RAG系统中同时对检索器和生成器进行微调,这也是Modular RAG的特点之一。需要注意是,系统微调强调的是让检索器和生成器之间的配合。分别对检索器和生成器微调严格上属于前两者的组合,并不是属于协同。
一个典型的实现如RA-DIT。分别对LLM和检索器进行微调。LM-ft组件通过更 新LLM来最大化给定检索增强指令情况下正确答案的可能性。R-ft组件通过更 新检索器来最小化检索器分数分布与LLM偏好之间的KL散度。
二、推理阶段
一、Sequential
线性的结构的RAG Flow,模块线性的组织成流水线,如果拥有Pre-Retrieval 和Post-Retrieval 两个Module Type,则是典型的Advanced RAG 范式,如果去掉则是典型的Naive RAG范式。
Sequential是目前使用最多的RAG Pipeline,其中在最常使用的搭配如下,在检索前增加Query Rewrite,在检索后增加Rerank的算子。例如QAnything。