AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


RankRAG:通过 fine-tuning 方式来实现检索文本的排序和答案生成
发布日期:2024-07-15 18:52:44 浏览次数: 2112 来源:自然语言处理算法与实践


之间介绍过几种LLM+RAG框架:

1)self-RAG:引入特殊token来实现检索的控制;

2)过滤不相关检索片段:训练一个过滤模型,实现对RAG中检索片段的噪声过滤;

3)FIT-RAG:从过滤检索信息+提高检索信息+query是否需要检索判断这三个方面来优化LLLM+RAG框架;

上述三种方式的存在的缺点:1)self-RAG引入特殊token,导致训练数据标注难度加大,而且在解码中增加额外的判断成本;2)需要训练一个额外的过滤模型,如bert等,但是独立于生成的,会带来偏差;3)也需要额外训练一个判断模型,如T5,且还要对query是否进行检索信息进行判断,计算流程更为复杂。

那能不能LLM+RAG过程简化下,不要额外引入新的模型,就用一个LLM来提升生成结果?本次就分享一个从该思路来优化LLM+RAG的方法:<RankRAG: Unifying Context Ranking with Retrieval-Augmented Generation in LLMs>

其思路主要为:

1)在训练过程中就增加与生成相关的子任务训练,如检索片段的判断任务等;

2)在推理过程,可以借助LLM在子任务的结果,来辅助query的回答,进而提升整体效果;

其目的:通过fine-tunine的方式就可以让一个LLM同时具备对检索内容的质量判断和query的生成的能力,就不需要额外引入其他小模型。

上述流程图,在训练过程中,分两个阶段:

1)Stage-I:采用正常的SFT训练进行模型通用任务的对齐;

2)Stage-II:设计RankRAG指令,进一步进行微调,其中任务包括检索排序和答案生成等任务,具体如下:

在推理阶段,也是分两步:

1)第一步:是从检索器里召回top-N个相关片段,然后利用LLM对这些片段进行打分,选择top-K作为最终的检索片段;因为在训练中,让LLM具备了对片段进行打分的能力。

2)第二步:结合top-K片段和query,输入LLM做最后的回答。

总的来说,论文的核心在于在训练中加入检索相关的任务的训练,并让LLM具备对检索片段进行排序打分的能力,其不好之处:推理时候需要调两次LLM,增加了推理时间。

看看RankRAG的实验效果:

(1)在8B范围内,Llama3-RankRAG 8B在9个数据集上都取得最好的效果,甚至超过RA-DIT 65B模型;

(2)Llama3-RankRAG 70B好于Llama3-ChatQA-1.5 70B,高于平均2.5点,此外也好于chatgpt系列的RAG模型;

(3)RankRAG 在长尾数据集(PopQA)和多轮对话(2WikimQA)这类难度比较大的数据集上,相比Chat-1.5有10个点的提升,这也说明检索效果提升带来的增益。

在消融实验中:

(1)若不在推理过程进行重排,则有近3个点的下降;

(2)若不带RQA或RAR两个微调任务(训练中的第二个阶段中的任务),则有近1个点的下降;

(3)如果训练中只进行SFT模型,不进行Stage-II训练,则有10个点下降,这说明论文中设计的Stage-II指令任务的有效性。


总结一下:RankRAG框架思路比较简洁,且操作起来也很容易:就是增加一些检索相关则子任务训练,然后让LLM具备重排打分的能力,消除需要额外训练一个模型的成本,且也让检索排序和生成在模型层面保持一致。虽然在推理过程中,需要多调一次大模型,增加了推理负担,但实验来看,直接推理,不用重排,也是有一定的提升。这样在实践中:我们可以直接借鉴其Stage-II训练,可能就能有明显的提升。




53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询