RQ-RAG小模型策略准确率超越GPT3.5性能优于Self-RAG
类型:热点整理2026-06-12
RQ-RAG:准确率优于GPT3 5的小模型RAG策略,性能比Self-RAG还要好 | RAG太卷了 摘要 大型语言模型(LLMs)虽然能力出众,但有时会产生偏差或幻想的答复。这一问题主要因为它们依赖于庞大的预训练数据集,在面对陌生情境时容易出错。为了克服这些难题,检索增强生成(RAG)通过引入外
RQ-RAG:准确率优于GPT3.5的小模型RAG策略,性能比Self-RAG还要好 | RAG太卷了
摘要
大型语言模型(LLMs)虽然能力出众,但有时会产生偏差或幻想的答复。这一问题主要因为它们依赖于庞大的预训练数据集,在面对陌生情境时容易出错。为了克服这些难题,检索增强生成(RAG)通过引入外部相关文档辅助生成回应,利用非参数知识与 LLMs 的上下文学习能力相结合。然而,目前的 RAG 主要集中于初始输入的上下文检索,忽略了对于模糊或复杂问题的处理,这些问题需要更深入的阐释或分解才能得到准确的答案。因此,本文提出了一种新的学习方法——检索增强生成的查询优化(RQ-RAG),旨在通过赋予模型明确的重写、分解和消歧义的能力来提升其性能。实验结果显示,当此方法应用于 7B Llama2 模型时,在三个单跳问答(QA)数据集上平均提升了 1.9%的准确率,并且在处理复杂的多跳问答数据集方面也展现出更优的性能。相关代码已在 https://github.com/chanchimin/RQ-RAG 上公布。
缘起
从22年底ChatGPT引爆大众视野开始,大语言模型已经证明自己在通用问答等任务上表现非常出色。但一个绕不开的问题是,这些模型在完成预训练和微调之后,它的知识库就基本停滞了,无法快速、低成本地更新实时新知识。这个局限使得模型只能依赖于预训练的知识,一到陌生领域或者新场景,就很容易产生幻觉。
为了解决这个问题,行业里提出了检索增强生成(RAG)的方法。简单来说,RAG就是通过搜索外部知识信息,按照特定的提示模板来组装提示,然后利用大语言模型的上下文学习能力,基于知识库来回答问题。这相当于把一个开放域问答(OpenQA)问题,转化成了一个封闭域问答(CloseQA)问题。
虽然RAG技术确实可以减少模型回答的不准确性,但这个框架也仍然有不少短板:
首先,不加选择地使用检索系统来提供上下文回答问题,很容易让回答文不对题。不相关的上下文不仅降低了生成质量,还可能妨碍大语言模型处理那些他们本来能够回答的问题。比如对于简单的日常问候,大语言模型自己就能直接应答,非要引入外部上下文反而会降低回答质量。如上图左上部分所示,模型应该学会“按需检索”,而不是一股脑地搜。
其次,对于复杂查询,直接用原始问句去检索,往往拿不到足够好的信息。所以大语言模型应该能将这些复杂问句拆分成更简单、可以回答的子查询,然后针对每个子查询去检索对应的信息,最终构建出对原始复杂查询的全面回答。比如上图的右上部分。
最后,对于有多个可能答案的模糊查询,仅仅用原始查询语句去搜也远远不够。大语言模型应该有能力澄清查询,识别用户的真实意图,然后制定针对性的搜索策略,这样才能检索到全面、准确的信息来回答问题。比如上图的底下部分。
基于以上背景,作者提出了一种新的检索增强生成方法:查询精炼学习检索增强(RQ-RAG: Refine Queries for Retrieval Augmented Generation)。
技术方案
所谓的RQ-RAG,实际上是作者通过端到端训练了一个7B参数的Llama 2模型,这个模型能够动态地优化搜索查询,包括重写、分解和消除歧义。思路的灵感来自于Self-RAG和SAIL的研究,它们首次尝试将搜索结果融入指导性数据集,并教会模型筛选出有用的信息来生成符合上下文的回应。作者在它们的启发下进行创新,改进了数据集构建过程,提升了模型进行有效信息检索的能力。具体操作上,采用ChatGPT,根据不同情境(重写、分解、消除歧义)使用专门的提示模板来定制搜索查询,而不是简单依赖原始查询。当发现数据集的初始输出与检索系统返回的上下文不一致时,就会利用ChatGPT生成与上下文相匹配的新答案,以增强检索的相关性和准确性。借鉴先前研究的方法,使用控制标记来引导生成过程,让模型能灵活应对用户查询的各种可能路径,无论是重写、分解、消除歧义查询,还是直接终止搜索并生成回应。
训练数据准备
上图展示了整个数据准备流程:
1. 首先,将搜集到的任务池按前文所述的三种类别进行分类。这一步比较直接,因为每个数据集本身都对应了特定的数据类型。
2. 接着,针对每种数据集类型,使用ChatGPT和预设的提示模板生成精炼的查询语句。然后利用这些查询语句,从外部数据源中检索信息,通常以DuckDuckGo为主,把整个检索过程当作一个不透明的黑盒子来处理。
3. 之后,引导ChatGPT根据这些精炼的查询和相关上下文,生成新的响应。通过这样反复的迭代,累积了大约4万个案例。
注:DuckDuckGo是一款注重用户隐私的互联网搜索引擎,它避免个性化检索导致的过滤气泡。与其他搜索引擎不同的是,它不会分析用户,对所有使用同一组关键词的用户显示同样的结果。它强调返回最佳结果,而不是最多的网站链接。
模型训练和推理部署
这部分可以直接参考项目的GitHub仓库 https://github.com/chanchimin/RQ-RAG,具体训练脚本也很清晰:
```bash
cd ..
bash retrieval_lm/scripts/train/script_finetune_7b.sh
```
性能
【图片】
如上表所示,RQ-RAG在有无检索环境下均显著超越了众多对比模型。尤其在检索环境下,RQ-RAG以平均33.5%的优势领先于LLama2-7B Zero-Shot模型。这个结果说明,经过特定微调的模型,其RAG效果会优于同尺寸的未微调模型。研究还对比了两个基线:一是在特定任务上受过监督的模型(ARC_C、OBQA),二是使用精选数据集但未经搜索增强中间步骤的模型。结果显示,与Zero-Shot方法相比,监督学习显著提升了性能。更为关键的是,RQ-RAG甚至超越了这些基线,证明在训练过程中加入搜索增强这个环节的重要性。
进一步与已建立的监督型搜索增强方法Self-RAG和SAIL对比,RQ-RAG在三项问答任务中平均比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]
来源:https://www.53ai.com/news/qianyanjishu/1029.html
ai 人工智能