AI知识库

53AI知识库

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


RQ-RAG:准确率优于GPT3.5的小模型RAG策略,性能比Self-RAG还要好 | RAG太卷了
发布日期:2024-04-18 23:55:10 浏览次数: 1827


RQ-RAG:准确率优于GPT3.5的小模型RAG策略,性能比Self-RAG还要好  | RAG太卷了

发布时间:2024 年 03 月 31 日

RAG 问答系统 信息检索

摘要

大型语言模型(LLMs)虽然能力出众,但有时会产生偏差或幻想的答复。这一问题主要因为它们依赖于庞大的预训练数据集,在面对陌生情境时容易出错。为了克服这些难题,检索增强生成(RAG)通过引入外部相关文档辅助生成回应,利用非参数知识与 LLMs 的上下文学习能力相结合。然而,目前的 RAG 主要集中于初始输入的上下文检索,忽略了对于模糊或复杂问题的处理,这些问题需要更深入的阐释或分解才能得到准确的答案。因此,本文提出了一种新的学习方法——检索增强生成的查询优化(RQ-RAG),旨在通过赋予模型明确的重写、分解和消歧义的能力来提升其性能。实验结果显示,当此方法应用于 7B Llama2 模型时,在三个单跳问答(QA)数据集上平均提升了 1.9%的准确率,并且在处理复杂的多跳问答数据集方面也展现出更优的性能。相关代码已在 https://github.com/chanchimin/RQ-RAG 上公布。

缘起

从22年底开始的ChatGPT起,大语言模型已经被证明在通用问答等任务上表现非常出色,但是这些模型在完成预训练和finetune以后,他的知识库就不再更新,无法快速、低成本的更新实时新知识。这个局限使得模型只能依赖预训练的知识,导致模型容易产生幻觉。

为了解决这个问题,大家提出了检索增强(RAG)的方法,检索增强通过搜索外部知识信息,按照prompt template组装prompt,利用大语言模型的In Context Learning的能力来基于知识库回答问题。将一个OpenQA转换为CloseQA。

虽然RAG技术可以减少模型回答的不准确性,但是这个框架也仍然有很多缺点:

  • • 首先,不加选择的选择检索系统来提供上下文回答问题会使得回答文不对题。不相关的上下文不仅降低了生成质量,还可能妨碍大语言模型处理那些他们本来能够回答的问题。比如对于简单的日常问候,大语言模型是可以直接回答的,引入上下文反而会导致回答质量的下降。如上图左上部分所示,模型应该能够学会按需检索。

  • • 其次,对于复杂查询,直接用原始问句进行检索,往往无法获取足够好的信息,所以大语言模型应该能够将这些复杂问句拆分成更加简单、可以回答的子查询,然后再根据各个子查询去检索对应的信息,从而构建出对原始复杂查询的全面回答。比如上图的右上部分。

  • • 最后,对于有多个可能答案的模糊查询,仅仅使用原始查询语句查询也是不够的,大语言模型应该能够澄清查询,识别用户意图,然后制定针对性的搜索策略,从而检索到全面、准确的信息后回答问题。比如上图的底下部分。

基于以上背景,作者提出了一种新的检索增强生成方法:查询精炼学习检索增强(RQ-RAG: Refine Queries for Retrieval Augmented Generation)。

技术方案

所谓的RQ-RAG,实际上是作者通过端到端训练了一个7B参数的Llama 2模型,这个模型够动态地优化搜索查询,包括重写、分解和消除歧义。灵感来自于Self-RAG和SAIL的研究,它们首次尝试将搜索结果融入指导性数据集,并教会模型筛选出有用的信息以生成符合上下文的回应。作者在Self-RAG和SAIL的基础上,进行了创新,改进了数据集构建过程,提升了模型进行有效信息检索的能力。采用了ChatGPT,根据不同情境(重写、分解、消除歧义)使用专门的提示模板来定制搜索查询,而不是简单地依赖原始查询。当发现数据集的初始输出与检索系统返回的上下文不一致时,我们会利用ChatGPT生成与上下文相匹配的新答案,以增强检索的相关性和准确性。借鉴先前研究的方法,我们使用控制标记来引导生成过程,使模型能够灵活地应对用户查询的各种可能路径,无论是重写、分解、消除歧义查询,还是直接终止搜索并生成回应。

训练数据准备

如上图展示了整个数据准备流程:

  1. 1. 首先,将搜集到的任务池按前文所述的三种类别进行分类。这一步比较简单,因为每个数据集都对应特定的数据类型。

  2. 2. 接着,我们针对每种数据集类型,使用ChatGPT和预设的提示模板生成精炼的查询语句。利用这些查询语句,我们从外部数据源中检索信息,通常以DuckDuckGo为主,把检索过程当作一个不透明的黑盒子处理。

  3. 3. 之后,我们引导ChatGPT根据这些精炼的查询和相关上下文,生成新的响应。通过这样的反复过程,我们累积了大约4万个案例。

注:DuckDuckGo是一款互联网搜索引擎,其注重用户隐私,及避免个性化检索所致的过滤气泡。它与其他搜索引擎不同的地方在于其不会分析自己的用户、对所有使用同一组关键词的用户显示同样的结果。它也强调返回最佳结果,而不是最多网站链接之结果。

模型训练和推理部署

这部分可以参考项目的Github https://github.com/chanchimin/RQ-RAG

cd ..bash retrieval_lm/scripts/train/script_finetune_7b.sh

性能

如上表所示,RQ-RAG在有无检索环境下均显著超越了众多对比模型。尤其在检索环境下,RQ-RAG以平均33.5%的优势领先于LLama2-7B Zero-Shot 模型,这个结果证明经过特定Finetune的模型的RAG效果会优于同尺寸的非finetune模型。我们还对RQ-RAG与两个基线模型进行了对比:一是在特定任务上受过监督的模型(ARC_C、OBQA),二是使用我们精选的数据集但未经搜索增强中间步骤的模型。研究结果显示,与Zero-Shot 方法相比,监督学习显著提升了性能,展现了其竞争实力。更为关键的是,RQ-RAG甚至超越了这些基线,证明了在训练过程中加入搜索增强环节的重要性。

我们还把RQ-RAG与已建立的监督型搜索增强方法Self-RAG和SAIL进行了对比。显著的是,我们的模型在三项问答任务中平均比SAIL-7B高出20.3%。而且,即便训练数据仅有约40k,我们的RQ-RAG在三项问答任务中也平均超过了当前最先进的Self-RAG模型(该模型使用了150k的监督训练数据)1.9%。

综上所述,RQ-RAG在各项评估任务中均展现出卓越的性能,确立了其在上述模型之上的明显优势。

上面的这个表展示了RQ-RAG在三个多跳问答数据集上的表现,其提升趋势与单跳问答场景相似。无论是在特定数据集还是我们精选的数据集上训练,RQ-RAG的性能都大幅超越了未经训练的原始模型。但这些基准模型缺乏将复杂查询分解为更小查询的能力,这在多跳问答中至关重要,因为直接使用原始查询往往难以获取足够信息。与之相对,我们的系统使模型能够自动优化查询,平均提升了22.6%的准确率。更为重要的是,与采用ChatGPT作为主要模型的Chain-of-Thought和Chain-of-Note方法相比,RQ-RAG的表现更为出色。这一点尤其引人注目,因为我们的模型在规模上远小于ChatGPT,却能取得如此显著的效果,充分证明了RQ-RAG的高效性能。

Arxiv[1]

通往 AGI 的神秘代码

if like_this_article():
    do_action('点赞')
    do_action('再看')
    add_wx_friend('iamxxn886')

if like_all_arxiv_articles():
    go_to_link('https://github.com/HuggingAGI/HuggingArxiv')    star_github_repo(''https://github.com/HuggingAGI/HuggingArxiv')
                                     


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

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

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

联系我们

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

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询