声明:本文来自于微信公众号 新智元(ID:AI_era),作者:新智元,授权转载发布。
【新智元导读】来自佐治亚理工学院和英伟达的两名华人学者带队提出了名为RankRAG的微调框架,简化了原本需要多个模型的复杂的RAG流水线,用微调的方法交给同一个LLM完成,结果同时实现了模型在RAG任务上的性能提升。
在需要大量事实知识的文本生成任务中,RAG成为了常用的LLM部署技巧。
但佐治亚理工学院和英伟达最近发表的一篇论文提出——RAG可以不止停留在用于推理的pipeline中,类似的思路完全可以移植到微调阶段,于是有了这个名为RankRAG的框架。
论文地址:https://arxiv.org/abs/2407.02485
他们的思路可以概括为:用微调拓展模型的能力,把原来RAG需要额外模型的检索、排名任务全丢回给LLM自己。
结果发现,不仅数据效率提高了,模型性能也有显著增强,相比今年5月刚提出的ChatQA-1.5系列有显著优势。
苹果更新ios15.0.1
在9个通用基准和5个生物医学的知识密集型基准上,RankRAG用Llama38B/70B微调出的模型分别超过了同样基座上ChatQA-1.5的两个微调模型,Llama3-ChatQA-1.5-8B和Llama3-ChatQA-1.5-70B。
ChatQA-1.5项目地址:https://chatqa-project.github.io/
检索增强生成技术,简称为RAG(Retrieval-Augmented Generation),被广泛适用于LLM的定制化,尤其是知识密集型的NLP任务。可以帮助模型在不改变权重的情况下掌握长尾知识和最新信息,并适应到特定的领域。
通常情况下,RAG的工作流程大致是:对于给定问题,由一个基于文本编码的稠密模型从外部数据库中检索到top-k个文本段,然后输入给LLM进行读取,以此为基础进行生成。
来源:AWS
这个pipeline看起来非常符合直觉,也已经被广泛使用,但作者在论文开篇指出了其中的固有局限,首先就是k值的选择。
如果k值较大(比如top-100),即使是支持长上下文的窗口的LLM也很难快速读取这么多文本块。随着k值的增大,性能会很快饱和。
除了效率原因,之前还有研究表明,k值在5或10这个量级时,生成结果的准确性更高。因为过多上下文会引入不相关内容,妨碍LLM生成准确答案,
《Retrieval meets Long Context Large Language Models》https://arxiv.org/abs/2310.03025
那把k值就定在这个区间不行吗?
如果给定一个较小的k,我们需要一种机制来保证检索结果的高召回率(recall)。
鉴于检索器的表达能力有限(通常是稀疏检索模型如BM25,或中等大小的编码模型如BERT-based),通常无法捕获所有相关信息,因此实际的应用过程还会加上一个交叉编码(cross-encoding)的排名模型。
排名模型从数据库中检索到top-N个候选 (N ≫ k),再经过一次排名得到最终top-k结果。
这种方案的缺陷在于,与通用的LLM本身相比,专家排名模型的零样本泛化能力相对有限,上游检索结果的质量很可能造成下游LLM生成任务的瓶颈。这在许多实证研究中都得到了验证。
基于上述考虑,作者认为可以只使用LLM同时完成上下文检索和内容生成任务,通过设计RAG的指令调优来实现,这种新颖的框架被命名为RankRAG。
OpenAI的GPT-4报告中就发现,检索、排名过程中发展出的确定文本块与问题是否相关的能力对答案的生成同样有用,这两者可以被视为双重能力。
RankRAG在训练过程中引入了一项带指令的问答任务,让模型能够识别出与问题相关的上下文或段落,便于在推理时对检索结果进行排名。
如果将一部分排名数据集成到指令微调中,还能大大增强LLM在RAG排名任务中的性能,甚至超过了单独用LLM和10×排名数据进行微调的结果。
神舟十四号航天员首次出舱时间
RankRAG微调框架
在推理阶段,RankRAG的pipeline与上述的的检索-排名-生成流程几乎相同,首先检索出带有相关性分数的top-N结果,然后进行重新排名并保留top-k段落,将其与问题连接到一起进行生成。
主要的不同点在于模型训练过程,使用了两个阶段的指令微调(图2)直接增强LLM的相关能力,而不是在模型外部添加额外操作。
爸爸有多高英语怎么说
宁波易网创新科技
第一阶段首先进行监督微调(SFT),128k个样例来自多个数据集的混合,包括对话数据集SODA、Dolly、OpenAssistant,长格式QA数据集ELI5(需要详细答案),LLM合成的指令,以及CoT数据集FLAN。
这个阶段的SFT主要是为了提高LLM的指令跟随能力,虽然与RAG关系不大,但可以为接下来的指令微调过程做好铺垫。
为了提升LLM的检索、排名性能,第二阶段的微调数据集由以下几个部分混合组成(表1):
第一阶段的SFT数据:用于维持指令跟随能力
上下文丰富的QA数据:涵盖了DROP、NarrativeQA、Quoref、ROPES、NewsQA、TAT-QA等数据集,每条数据包含问题、黄金上下文(golden context)和答案
会话QA数据集:如Synthetic Conversation和HumanAnnotatedConvQA,同时包括对话内容以及一份背景文档
检索增强的QA数据:不仅包括SQuAD和WebQuestions中的问题和答案,还用BM25将黄金上下文和检索到的top结果组合起来,确保每条数据都有5个上下文,其中有些上下文可能不包括问题答案,甚至是hard-negative,这是为了重点提高LLM对不相关上下文的鲁棒性
上下文排名数据:使用流行的MS Marco语义相关性数据集,将其中的黄金样本视为相关的查询-段落对 (