点击上方 “ AINLPer “ ,设为 星标
引言
大模型就像一个“历史信息快照”,无法及时更新信息是它的短板。而RAG技术可以将外部知识通过上下文学习引入大模型生成过程中,从而让LLMs生成更符合预期。但RAG存在一个关键问题:用户query和实际生成最佳answer所需信息之间往往存在差距。为此,本文作者在“重写-检索-读取”(RRR)框架的基础上,提出了“提取-精炼-检索-读取”框架:ERRR,「 旨在缩小LLM的预检索信息差距,通过query优化更好地满足模型的知识需求,进而生成准确的回答」 。 https://arxiv.org/pdf/2411.07820v1
背景介绍 得益于Decoder生成式模型架构不断改进,海量语料以及超强GPU硬件的加持,大语言模型(LLMs)展现出了出色的意图理解和文本生成能力,并在许多下游NLP任务中展现出极强的实用性和可扩展性,比如对话生成、文本摘要、内容推荐等。在某些场景下,即使在zero-shot和few-shot也表现得相当优异。然而,「LLMs存在一个明显缺点:难以跟上信息的实时变化」 。大模型训练都是基于历史语料,LLMs在应对最新或不常见的信息时往往会出现过时、错误,甚至虚构的内容,这就是所谓得大模型幻觉。
为了解决这一问题,“检索增强生成”(RAG)技术应运而生。RAG通过引入外部信息来源(非模型内部存储的信息),结合LLM的上下文学习能力,生成更准确的回答。例如,当用户向Llama3.1咨询最新新闻时,由于Llama3.1的模型知识是静态的,可能无法及时更新。「RAG通过从外部数据库检索相关新闻,补充LLM的回答,使其更符合实际情况和用户需求」 。
尽管RAG技术可以有效解决大语言模型(LLMs)新信息获取的问题。但是RAG架构也存在很多挑战。例如:向量数据库存储的上下文连续性、向量数据库的检索准确性等问题,这些问题都会导致RAG系统生成的答案与问题存在一定的差距。为了解决该类问题,有人提出可变上下文chunking方法,即通过标点符号按句chunking或按段落chunking,从而尽可能保留相对完整的语义;有人提出向量数据库混合检索的方式,即利用语义、关键字同时进行检索。
为了能够进一步提高向量数据库检索准确率,有人提出了“重写-检索-读取”(RRR)框架,即将“查询重写”引入RAG系统中。RRR通过在RAG系统中加入“查询重写模块”,来优化查询,使之更符合LLM和检索器的需求,从而更准确地找到用户想要的信息。这种方法在新的RAG系统中得到了广泛应用。但是「RRR的重写模块主要在调整查询表述上,未能根据LLMs的特定需求进行优化,因而还无法确保检索到生成准确回答所需的最相关知识」 。
为此,本文作者提出了“提取-精炼-检索-读取”(ERRR)框架,这是一种简单且有效的检索增强系统设计。ERRR框架通过定制的query优化器来缩小“检索前信息差距”,旨在解决RRR框架的局限,使得检索的信息更符合LLM 知识输入要求。
ERRR框架 「Extract-Refine-Retrieve-Read (ERRR)」 框架,用于优化大语言模型(LLM)在检索增强生成(RAG)系统中的请求效果,其核心在于基于LLM 的参数知识,利用专门的query优化器来检索更符合 LLMs 知识输入要求。如下图(iii)所示: 具体来说,ERRR整体框架包括四个步骤和一个可扩展训练方案:
「参数化知识提取」 ERRR通过提取LLM的参数化知识来生成伪上下文文档,以便更清楚地展示LLM对请求query 的背景理解。这一步通过直接prompt让LLM生成一个包含背景信息的伪上下文文档,作为模型已知信息的概括表示。虽然这些文档可能包含一些不准确的信息,但它们为原始查询提供了关键的上下文。
「查询优化」 在这一步骤中,ERRR使用LLM作为query优化器,通过prompt生成一个或多个优化后的query。优化后的query会向外部知识源请求信息,以验证或补充现有的参数化知识。特别是对于时间敏感的信息,ERRR会重点验证其准确性。
「检索(Retrieval)」 :ERRR在这一阶段展示了模块在各种检索系统和数据源上的适应性。具体来说,ERRR可以在网络搜索工具和局部密集检索系统(例如维基百科数据库)之间进行切换。检索结果与原始query一起提供给LLM,以便生成最终答案。
「生成(Generation)」 :通过将检索到的文档和原始query输入LLM,ERRR框架生成最终答案。prompt策略采用简单的指令和1-3个 few-shot示例,以确保LLM的输出格式满足特定任务的要求。
「可训练方案(Trainable Scheme)」 鉴于许多LLM作为黑盒系统运行,仅通过API访问,ERRR还引入了一种可训练方案,以增强自定义能力并降低计算成本。ERRR使用较小的可调语言模型作为query优化器,通过知识蒸馏从较大的教师模型(如GPT-3.5)学习,从而降低计算开销。
作者使用了 T5-Large 模型作为查询优化器。通过知识蒸馏的方式对这个模型进行微调,使用 GPT-3.5-Turbo 作为教师模型,将它的知识传递给 T5-Large。为了生成蒸馏数据集,作者从各个问答数据集的训练集中选择了问题,并让 GPT-3.5-Turbo 按照冻结方案中的相同设置生成答案。
此外,作者设计了一个简单的提示语——“Rewrite better search queries to acquire or validate the knowledge needed for the question:”作为指令前缀,指导 T5-Large 更好地适应这一任务。为了确保模型在不同问答数据集上的最佳表现,作者针对每个数据集分别训练了一个 T5 模型,训练轮次为3次,学习率设为 ,批量大小为4。
论文中的Promp提示,小伙伴们可以参悟以下:
实验结果 ERRR实验在三个开放域问答数据集上进行AmbigQA、PopQA、HotPotQA,ERRR 框架分为 「Frozen ERRR」 和 「Trainable ERRR」 两种模式:1)Frozen ERRR :使用 GPT-3.5-Turbo 作为查询优化器,通过外部知识验证或补充模型已有的知识。2)Trainable ERRR :通过知识蒸馏,将 GPT-3.5-Turbo 作为教师模型,将知识传递给微调的 T5 模型,减少计算成本并提高效率。可以发现,ERRR结果要高于其它方法。
推荐阅读 [1] >> 专注大模型学术前沿的知识分享!
[2] 每周速递45期! 大模型最前沿!
[3]一文了解NeurIPS国际顶会+历年paper
[4]干货!RAG系统建设最佳实践 !
[5]每周速递44期!大模型最前沿!
[6]从文本RAG到多模态RAG!构建多模态RAG系统
[7]免去后训练!CMU|提出推理时对齐方法!
[8]每周速递43期!大模型研究最前沿!
投稿或寻求报道联系:ainlperbot
点击下方链接🔗关注我们