Active Retrieval Augmented Generation (主动检索增强生成)
Affiliation: Language Technologies Institute, Carnegie Mellon University (卡内基梅隆大学语言技术研究所)
Keywords: retrieval-augmented generation, language models, long-form generation, active retrieval, forward-looking, natural language processing
URLs: paper: https://arxiv.org/abs/2305.06983v1,
方法:
a. 理论背景:
本文讨论了大型语言模型(LMs)生成的幻觉和想象内容的问题。作者提出了一种解决方案,即通过增加检索组件来增强LMs,以从外部知识资源中查找相关信息。然而,大多数现有的检索增强LMs仅采用基于输入的一次检索和生成设置,限制了它们在涉及长篇生成的场景中的适用性,其中在整个生成过程中持续收集信息是必要的。
b. 技术路线:
作者提出了一种名为Forward-Looking Active Retrieval augmented generation (FLARE)的通用检索增强生成方法,它可以在生成过程中主动决定何时以及何时检索。作者通过生成一个临时的下一个句子,将其用作查询以检索相关文档,然后在检索到的文档的条件下重新生成下一个句子。作者在4个长篇知识密集型生成任务/数据集上测试了FLARE,并与其他检索增强LMs进行了比较,取得了优越或具有竞争力的性能。FLARE适用于推理时的任何现有LMs,无需额外的训练。作者得出结论,LMs中使用主动检索可以获得更好的性能,特别是对于信息需求复杂且不总是从输入中明显的长篇生成任务。
这篇论文的方法是这样的:
首先,根据用户的输入,调用预定义工具之一,
search_web(query: str) -> str
,来在网上搜索相关的信息。这个工具会返回一个包含网页搜索结果、图片搜索结果、新闻搜索结果和问答搜索结果的JSON字符串。然后,根据用户的任务,选择合适的搜索结果作为外部知识资源,与用户的输入一起作为语言模型(LM)的输入,生成一个临时的下一句话(s^t)。
接着,检查st中是否有低概率的词(即LM不确定或缺乏知识的词),如果有,则使用st作为查询再次调用
search_web(query: str) -> str
,获取更多相关的信息,并重新生成s^t。最后,如果s^t中没有低概率的词,则接受它作为最终的输出,并继续生成下一句话,直到达到预定的长度或结束符。
举个例子,假设用户的输入是“Generate a summary about Joe Biden.”,那么这个方法可能会执行如下步骤:
调用
search_web("Joe Biden")
,得到一些关于乔·拜登的网页、图片、新闻和问答。选择网页搜索结果中排名最高的两篇文章作为外部知识资源,并与用户的输入一起作为LM的输入,生成一个临时的下一句话:“Joe Biden (born November 20, 1942) is the 46th president of the United States.”。
检查s^t中是否有低概率的词,发现没有,因此接受它作为最终的输出,并将其添加到之前的输出中。
重复上述过程,生成下一句话:“He graduated from the University of Delaware in 1965 with a Bachelor of Arts in history and political science.”。
检查s^t中是否有低概率的词,发现有一个“political science”,因此使用s^t作为查询再次调用
search_web("He graduated from the University of Delaware in 1965 with a Bachelor of Arts in history and political science.")
,得到更多相关的信息,并重新生成s^t:“He graduated from the University of Delaware in 1965 with a Bachelor of Arts in history and political science, and then attended Syracuse University College of Law, where he earned his Juris Doctor in 1968.”。检查s^t中是否有低概率的词,发现没有,因此接受它作为最终的输出,并将其添加到之前的输出中。
以此类推,直到生成一个完整和准确的摘要。
结果:
a. 详细的实验设置:
本文描述了一种检索增强的LM,其目标是通过利用文档语料库中的信息生成答案。LM与一个检索器配对,可以检索到一系列文档。本文提出了一种主动检索增强生成框架,其中检索和生成交替进行。该框架使用两种前瞻性主动检索增强方法,FLAREinstruct和FLAREdirect,以鼓励或生成查询指令。这些方法在生成答案时提示LM生成检索查询。本文还提出了两种简单的方法,基于置信度的主动检索和基于置信度的查询构建,以解决使用FLAREdirect时出现的问题。所提出的方法在检索增强方面显示出改进,与现有方法相比。
b. 详细的实验结果:
本文讨论了一种用于辅助长篇生成的主动检索增强生成框架,该框架在生成过程中决定何时以及何时检索。该框架采用前瞻性主动检索,如果下一个句子包含低置信度标记,则迭代使用即将到来的句子检索相关信息,并重新生成后续句子。研究在四个不同的任务/数据集上提供了实验结果,证明了所提方法的有效性,其优于先前的基线方法。研究得出结论,所提出的方法在需要检索增强的长篇生成情况下非常有用,但在短输出情况下可能不是必要的。此外,该方法的实施增加了开销和生成成本,但可以通过特殊的架构设计来减轻这个问题,该架构将检索到的文档和输入/生成独立编码。未来的研究方向包括开发更好的主动检索替代方案和改进LM架构以实现高效的主动检索增强。