论文翻译 | PROMPTAGATOR : FEW-SHOT DENSE RETRIEVAL FROM 8 EXAMPLES

摘要

最近的信息检索研究主要集中在如何从一个任务(通常有丰富的监督数据)转移到其他各种监督有限的任务上,其隐含的假设是从一个任务可以泛化到所有其他任务。然而,这忽略了这样一个事实,即存在许多多样化和独特的检索任务,每个任务都针对不同的搜索意图、查询和搜索领域。在本文中,我们建议研究Few-shot Dense Retrieval,这是一种每个任务都带有简短描述和几个示例的设置。为了增强几个示例的力量,我们提出了Promptbase Query Generation for Retriever(PROMPTAGATOR),它利用大型语言模型(LLM)作为少量样本的查询生成器,并基于生成的数据创建特定任务的检索器。借助LLM的泛化能力,PROMPTAGATOR使得仅凭几个示例就能创建特定任务的端到端检索器成为可能,而无需使用自然问题(Kwiatkowski等,2019)或MS MARCO(Nguyen等,2016)来训练双编码器。令人惊讶的是,仅用不超过8个示例的LLM提示,就让双编码器在11个检索集上的平均表现超过了在MS MARCO上训练的重型工程模型,如ColBERT v2(Santhanam等,2022),超过1.2个nDCG。进一步使用相同生成的数据训练标准大小的重排器,又带来了5.0个nDCG的提升。我们的研究表明,查询生成可以比以前观察到的更有效,尤其是当给出少量特定任务知识时。

1 引言

最近,在神经检索模型方面取得了重大进展,如双编码器,它们可以从包含数百万到数十亿段落的庞大文档集合中检索知识(Yih等人,2011;Lee等人,2019;Karpukhin等人,2020)。然而,Thakur等人(2021)最近提出了BEIR异构检索基准,并展示了对于缺乏专用训练数据的各种检索任务,神经检索器仍然难以表现良好。因此,以前的方法专注于从问答(QA)数据集,如MS MARCO(Nguyen等人,2016)转移知识。为了最好地从QA数据集转移,开发了允许细粒度令牌级交互的富有表现力的检索器,如ColBERT(Khattab & Zaharia,2020;Santhanam等人,2022)和SPLADE(Formal等人,2021),但推理成本较高。之前已经探索了通过合成问题生成进行数据增强的方法(Ma等人,2021;Shakeri等人,2020),但这些问题生成器通常只在流行的QA数据集上训练。我们认为,很难期望仅基于一个或两个QA数据集的模型在不同检索任务上表现良好。首先,不同的检索任务具有非常不同的搜索意图;换句话说,对"相关性"的定义不同。例如,如图1(a)所示,DbpediaEntity(Hasibi等人,2017)和FEVER(Thorne等人,2018)都是要从维基百科检索文档的任务。Dbpedia-Entity是一个检索查询中提到的实体的任务,而FEVER是一个寻找支持或反驳给定陈述的证据的任务。即使它们共享相同的领域,不同任务中与查询相关的文档也可能大相径庭。此外,即使搜索意图相似,不同任务也具有不同的查询分布。例如,在BEIR基准中,HotpotQA(Yang等人,2018)的查询是长组合问题,而FiQA(Maia等人,2018)的查询是短财务问题。

在本文中,我们主张研究多样化检索的Few-shot Retrieval设置(第2节),每个任务都带有简短描述和几个注释示例,以清楚地说明搜索意图。鉴于只有少数示例可用,我们提出了Prompt-base Query Generation for Retriever(PROMPTAGATOR)(第3节),旨在解决数据稀缺问题,同时保持小型双编码器的效率,通过利用大型语言模型(LLM)如FLAN(Wei等人,2022a)的力量。PROMPTAGATOR结合了无需微调的LLM作为查询生成器的提示(第3.1节),并且可以在最小监督下生成良好查询------如图1(b)所示,它仅依赖于目标任务的几个监督示例,而无需使用自然问题(Kwiatkowski等人,2019)或MS MARCO(Nguyen等人,2016)的注释查询-文档对来直接训练检索器。PROMPTAGATOR的关键见解是通过创建特定任务的提示来放大少量示例的力量,这反过来又使得为训练适合任务的检索器生成大量合成查询成为可能。为了确保生成数据的质量,我们开发了一种过滤技术,仅使用生成数据确保往返一致性(第3.2节)。我们的过滤器针对检索进行了定制,移除了模糊、通用和低质量的问题,并显著提高了检索性能。

虽然PROMPTAGATOR不是第一个将LLM应用于检索的应用,但以前的尝试使用LLM通常伴随着更高的服务成本。Neelakantan等人(2022)提出在双编码器模型中使用GPT-3(Brown等人,2020)的嵌入。然而,嵌入大小为12k,这使得搜索索引足迹和推理成本很高。Sachan等人(2022)和Bonifacio等人(2022)已经将提示和LLM应用于重排,而检索器保持不变。通过PROMPTAGATOR,我们展示了LLM可以用来生成高效且高精度的端到端检索器。本文的贡献如下:

  • 我们分析了之前被忽视的检索任务在搜索意图和查询分布上的差异,并为BEIR数据集提出了Few-Shot Retrieval设置。我们的提示和少量示例将发布,以促进未来的研究。
  • 我们提出了PROMPTAGATOR,这是一个简单的少量示例检索配方,通过提示LLM生成特定任务的合成训练数据。首次,仅基于几个监督示例的端到端检索器可以变得强大且高效,并能够使用PROMPTAGATOR提供服务。
  • 我们的实验结果显示,令人惊讶的是,使用两到八个示例的PROMPTAGATOR产生的检索器比在MS MARCO或NQ上训练的最新模型要好得多,后者拥有超过500K的人工注释示例(图1(c))。PROMPTAGATOR在我们测试的11个检索任务上超过了ColBERT v2和SPLADE v2,而重排将结果提高了5个百分点,在标准的检索评估指标上。

2 少样本检索任务

在本节中,我们首先介绍检索任务的定义以及不同检索任务之间的区别。然后,我们为BEIR基准提出了一个新的Few-Shot Retrieval设置。

2.1 检索任务

给定一个大型语料库,检索模型负责根据预定义的相关性找到与提供的查询q最相关的文档。形式上,我们将检索任务定义为:

其中 D = {d1, d2, :::; dn} 是用于检索的大型文档语料库,Q 是查询分布,I 是任务的基础搜索意图。根据任务的不同,D 可以是任何文档集合,例如网络或维基百科。Q 也因任务而异,例如,短关键词搜索查询、问题、论点等。如果 I(q; d) = 1,这意味着查询 q 的搜索意图已经通过文档 d 得到满足。例如,在自然问题(NQ)等 QA 任务中,搜索意图是找到提供问题答案的段落,这意味着如果 d 回答了 q,则 INQ(q; d) = 1。重要的是,对于同一对 (q; d),在不同的搜索意图下,它们的相关性可能完全不同。例如,一些论点检索任务寻找支持性论点,而其他任务需要检索反驳性论点。

在这项工作中,我们针对的是目标检索语料库 DT 可用,但新任务的注释查询-文档对数量有限的情况。大多数先前的研究工作都集中在适应新的语料库 DT 的检索器上,但查询 QT 和意图 IT 的差异尚未得到充分探索。接下来,我们将探讨如何用简短的描述和非常少量的示例来表达搜索意图。

2.2 少样本 BEIR 设置

在本文中,我们主张让检索系统意识到特定任务的查询分布和搜索意图,而不是仅仅关注D的领域适应。先前的观点认为,收集足够的分布内查询和相关标签来训练神经检索器是昂贵的,但直观上,一个人可以通过阅读简短的指令并查看几个示例来理解检索任务。在这项工作中,我们探讨了是否几个(8个或更少)示例对于机器学习特定任务的检索器来说就足够了。为了促进我们对少样本检索的研究和未来的研究,我们定义了一个基于BEIR异构检索基准(Thakur等人,2021年)的新少样本检索评估设置。

BEIR涵盖了9个领域中的18个信息检索数据集,包括生物医学、金融、新闻、推特、维基百科、StackExchange、Quora、科学和杂项。这些数据集还覆盖了多样化的搜索意图:QA检索(问题到文档)、重复问题发现(问题到问题)、事实核查(声称到文档)等。遵循Santhanam等人(2022年)和Formal等人(2021年)的方法,我们将焦点缩小到BEIR中公开可用的数据集。原始的BEIR评估使用的是零样本设置,即不允许使用评估数据集中的查询或相关查询-文档对来训练检索器。

我们将BEIR扩展到少样本设置,通过随机选取几个(2到8个)领域内的相关查询-文档示例作为任务特定的监督。当开发集可用时,这些示例是从开发集中抽取的。对于只有测试集的BEIR任务,我们使用测试数据中的样本作为少样本示例。为了使评估公平,当评估少样本检索器模型时,即使模型成功检索到这些示例,也应该将测试集中的这些示例视为"未能检索到"。提示和少样本示例将向公众发布。

3 PROMPTAGATOR

为了实现从少样本示例创建检索器的目标,我们提出了基于提示的查询生成检索器(PROMPTAGATOR)。PROMPTAGATOR的关键思想是通过提示大型语言模型(LLM),将少量示例转换为更多的示例,而不是直接用它们来训练检索器。PROMPTAGATOR包含三个组件:基于提示的查询生成、一致性过滤和检索器训练。在基于提示的查询生成过程中,将结合特定任务的提示和大型语言模型来使用DT生成目标任务的查询。然后,一个过滤步骤将基于往返一致性清理生成的数据;令人惊讶的是,我们发现仅使用合成数据训练的检索器可以用来过滤合成数据。最后,将基于生成的数据训练一个检索器(在本文中为双编码器)和一个跨注意力重排器。附录中的图5展示了整体流程。

3.1 基于提示的查询生成

PROMPTAGATOR构建了一个指令提示,该提示包含特定任务的查询-文档描述和来自目标数据集的k个注释的查询-文档示例。具体来说,令f(qi; di)gk为来自目标任务T的k个相关查询-文档对,其中qi ∼ QT, di ∈ DT,且IT(qi; di) = 1。遵循FLAN(Wei等人,2022a)的方法,我们使用以下形式的指令提示:

其中 edoc(d) 和 equery(q) 分别是特定任务的文档和查询描述,而 d 是一个新文档。以ArguAna为例,我们设置 edoc(d) = "论点:fdg" 和 equery = "反驳论点:fqg" 来通知LLM生成反驳论点。我们期望LLM生成 equery(^q)。如果LLM没有正确生成查询描述,我们将其视为生成失败并丢弃输出;否则我们接受 q 并形成一个合成的相关示例 (q; d)。

将提示应用于 DT 中的所有文档,我们可以创建一个大型合成 (q; d) 示例集,将少量示例的信息放大到一个大型合成数据集中,其查询分布与真实任务分布 QT 类似,并且查询-文档对传达真实的搜索意图 IT。在这项工作中,我们使用 FLAN(Wei等人,2022a)作为查询生成的LLM。FLAN在通过指令描述的任务集合上进行训练,并在未见任务上显示出良好的零/少样本性能。我们使用作者提供的137B FLAN检查点。在提示工程期间,我们最多使用8个示例,并在它们超过FLAN的输入长度限制时减少数量。如果示例中的单个查询和文档过长,我们也会手动截断它们。我们从每个语料库中随机抽取最多100万个文档,并使用温度为0.7的采样解码为每个文档生成8个问题。模板集合可以在附录的表4中找到。

3.2 仅使用生成数据进行一致性过滤

过滤步骤通过确保往返一致性来提高生成查询的质量(Alberti等人,2019):查询应该由生成查询的段落回答。在我们的检索案例中,查询应该检索其源通道。一致性过滤(Alberti et al, 2019;Lewis等人,2021)已被证明对QA任务的合成问题生成至关重要。然而,这些技术通常依赖于外部问答模型作为过滤器,在现有的监督QA数据上进行训练。因为我们想要处理不同的搜索意图,所以使用单一的外部过滤模型并不适合我们。

令人惊讶的是,我们发现仅基于生成数据的一致性过滤可以很好地处理在BEIR中观察到的不同搜索意图。我们首先使用生成的查询和文档对来训练初始检索器。给定一个合成查询-文档对(q, d),我们使用初始检索器来预测q最相关的段落。只有当d出现在检索器返回的Top-K段落中时,我们才保留q。这可能看起来不直观,因为过滤模型(初始检索器)是在它将要过滤的相同的嘈杂合成数据上训练的。我们展示了这个过滤器大大减少了合成查询的数量,并显著提高了检索性能。

3.3 少样本提示器寻回器

我们合成的生成数据允许在因数据稀缺而难以进行监督领域微调的任务上训练特定任务的神经检索器。在这项工作中,我们使用了标准的双编码器检索架构,并提出了一种简单的预训练/微调配方。遵循先前的工作(Ni等人,2021),我们使用来自T5(Raffel等人,2020)检查点的Transformer编码器初始化双编码器。然后,我们在C4上预训练我们的检索器,使用Contriever(Izacard等人,2022a)中的独立裁剪任务,我们将同一文档中的两个随机裁剪视为正检索对,并使用批处理中的随机负样本进行交叉熵损失训练。接下来,我们使用来自我们的基于提示的QGen生成的查询-文档对对双编码器进行微调,再次使用批处理中的随机负样本进行交叉熵损失训练。在训练了一定数量的周期后,我们使用这个初始双编码器按照(§3.2)中描述的方法对我们的合成数据应用往返过滤,并继续在过滤后的数据上微调双编码器。

我们还提出了PROMPTAGATOR++,这是一个在从我们的基于提示的QGen生成的相同合成数据上训练的重排器,它使用更慢但更准确的跨注意力模型来细化检索到的候选文档。我们使用交叉熵损失训练重排器,从PROMPTAGATOR检索器检索的前200个段落中采样31个负样本,这近似于推理时间分布(从检索器重排前200名)。

3.4 零样本提示器寻回器

基于提示的查询生成也可以以零样本的方式运行,无论目标任务是什么,我们都会普遍应用以下提示:f"{d}阅读文章并生成查询。"这里d表示文档文本。我们在零样本提示生成的数据上训练检索器和重新排序器,从而得到零射击PROMPTAGATOR和零样本PROMPTAGATOR++。

3.5 讨论

表1将PROMPTAGATOR配方与最近提出的一些方法进行了比较。我们的双编码器不依赖于硬负挖掘或蒸馏;它使用标准的双编码器模型,而不添加ColBERT和SPLADE所具有的令牌级匹配归纳偏差。我们的重新排名也使用了110M模型,而不是更大的模型。我们的目标是使用这个简化的配方来突出少样本数据的力量,正如我们将在(§4.3)中所示。将PROMPTAGATOR与这些方法进行比较,在LLM中使用提示和少量示例的能力使PROMPTAGATOR能够以高精度生成高效的模型。其他LLM方法,如InPars (Bonifacio等人,2022)和UPR (Sachan等人,2022)侧重于重新排序,而PROMPTAGATOR侧重于检索。

4 实验

我们通过测量其在BEIR基准上的检索性能,对PROMPTAGATOR进行了定量评估。然后我们通过消融研究和定性分析深入研究结果。

4.1 实现

原始FLAN训练集与BEIR基准中的2个数据集重叠:NQ2和Quora3。大多数现有系统在其系统中使用来自MS MARCO的所有监督数据。因此,我们将MS MARCO, NQ和Quora排除在我们的主要评估之外。我们报告了关于BEIR的标准检索评价指标nDCG@10。

对于PROMPTAGATOR基于提示的查询生成,我们从温度为0.7的LLM中采样问题。对于往返过滤,我们使用MS MARCO作为验证集并调整K。我们发现将K设置为1会产生最佳结果,因此对所有BEIR数据集使用1,即我们保持a (q;只有当D被初始双编码器排在前1位时,D才会配对。

我们在GTR之后实现了PROMPTAGATOR的双编码器(Ni et al, 2021);特别地,我们使用从T5初始化的共享Transformer编码器,取顶部编码器层的平均池化,并将其投影到固定的768维嵌入。为了保证效率,我们使用了由110M个参数组成的基于t5的1.1版本编码器架构。对于PROMPTAGATOR++重新排序模型,我们使用标准的Transformer交叉注意编码器,也用110M t5基编码器检查点初始化。在推理时,我们对从PROMPTAGATOR双编码器检索器检索到的前200个候选词重新排序。

我们主要遵循Ni等人(2021)中使用的超参数。这个配方的默认批处理大小是6k;然而,BEIR中的一些语料库只包含几千个文档,使得多个相关文档出现在同一批中,这与批中softmax损失负交互。我们发现为这些小数据集使用适当的批量大小和训练步骤是很重要的。我们根据语料库大小将数据集分为三组:小数据集(<50k),中间数据集(50k-500k),大数据集(>500k)。对于双编码器训练,我们对小数据集使用128批处理大小,对其他数据集使用6k批处理大小。对于大型数据集,我们微调为5k步,对于其他数据集,我们微调为1k步。对于排名模型,我们对所有数据集使用64个批处理大小,并对大型数据集进行20k步微调,对其他数据集进行5k步微调。

4.2 主要结果

表2展示了实验结果。我们首先注意到,零样本的PROMPTAGATOR已经是一个强大的基线,与其他在MS MARCO上训练的O(100K)示例的检索基线相比具有优势。尽管如此,少样本的PROMPTAGATOR在零样本PROMPTAGATOR的基础上有了显著的改进,平均nDCG@10提高了超过2个百分点,这突出了将LLM适应目标任务的 影响。少样本的PROMPTAGATOR在训练步骤和模型架构上相对简单,却超越了像GenQ(Thakur等人,2021)和GPL(Wang等人,2022)这样的强基线,这些方法也使用查询生成来增强训练数据,以及依赖token级交互架构和蒸馏配方的ColBERT v2(Santhanam等人,2022)和SPLADE v2(Formal等人,2021)。

我们的重排器PROMPTAGATOR++进一步提升了性能,nDCG@10又提高了5个百分点。它显著优于使用T0(Sanh等人,2021)的重排器UPR(Sachan等人,2022),T0是一种类似于FLAN的指令调整的LLM。它也优于monoT5-3B(Nogueira等人,2020),后者在Rosa等人(2022)最近的一项研究中在BEIR上实现了先前的最佳重排性能。请注意,大多数这些重排器方法使用3B模型,因为它比小型模型具有更好的泛化能力,而PROMPTAGATOR++使用的是标准的110M重排器。

与基线相比,少样本的PROMPTAGATOR在Touche-2020(touché)上的改进最大,其次是ArguAna(arg)。Touche-2020的目标是检索有关有争议话题的文档,例如,"应该允许完成刑期的重罪犯投票吗?"。ArguAna的目标是找到反对输入论点的反驳论点,输入论点通常是几个句子的长度。这两个任务与其他模型使用的传统QA检索数据极为不同,后者主要由事实性问题主导。另一方面,少样本的PROMPTAGATOR可以成功地通过几个示例适应这个任务。

4.3 消融研究

接下来,我们更详细地研究我们的结果,并分析影响性能的因素。

**一致性过滤的影响。**在图2(a)中,我们展示了少样本PROMPTAGATOR在往返过滤前后质量差异。我们可以看到,过滤在11个数据集中的8个上提高了性能,平均提高了2.5个百分点。这些结果证明了我们过滤策略的有效性。然而,也有一些数据集,如NFCorpus和SciFact,过滤会降低模型质量。请注意,这些是根据生成查询的数量来说最小的数据集。我们推测在过滤数据上进一步调整双编码器模型会导致过拟合。手动检查被过滤器移除的查询文档对,我们发现大多数情况下要么是查询太泛,匹配了许多文档,要么是查询包含了与文档无关的幻觉。也有高质量查询文档对被错误移除的情况,因为初始双编码器模型将其他文档排名更高。我们怀疑设计针对特定查询的K值将有助于保留这类查询文档对,并进一步改善模型性能。我们将这个问题留到未来的探索中。

生成的查询能替代人工注释的查询吗?在图2(b)中,我们将从8样本PROMPTAGATOR生成的示例上训练的双编码器与在监督数据上训练的双编码器进行了比较。请注意,我们没有添加其他组件来简化比较。我们选择MS MARCO,因为这个任务有足够的标注数据,而且FLAN和我们的模型都没有在MS MARCO示例上训练。结果显示,这八个示例加上LLM可以替代大部分的监督示例。

PROMPTAGATOR与其他查询生成方法相比如何?图2(c)将零样本PROMPTAGATOR与两种查询生成方法进行了比较:GenQ(Thakur等人,2021)使用在MS MARCO上训练的T5查询生成模型,而NQ-QGen是我们内部在NQ上微调的T5 QGen模型。图表显示了零样本PROMPTAGATOR的优势,大幅超过了两个微调的QGen模型。NQ-QGen使用了与PROMPTAGATOR相同的过滤、双编码器训练、批处理大小和训练步骤,提供了查询生成器的苹果对苹果的比较。这些结果表明,PROMPTAGATOR的主要贡献因素是提示的LLM查询生成,而不是特定的训练配方或超参数。

少样本总是比零样本好吗? 如表2所示,少样本PROMPTAGATOR几乎总是优于零样本PROMPTAGATOR。唯一的例外是Climate-FEVER(climate)。检查这个数据集后,我们意识到在原始的Climate-FEVER数据集中,一个查询文档对可以被标注为"支持"、"反驳"或"信息不足"。BEIR将这三种标注都视为相关;然而,一个"信息不足"的文档可能与查询无关。在少样本提示中使用这样的对可能会损害查询生成。因此,我们尝试切换到FEVER的少样本提示,因为这两个数据集共享相同的语料库和类似的搜索意图。在更好的标注示例下,少样本PROMPTAGATOR确实超过了零样本。这个结果提供了证据,表明低质量的少样本示例对PROMPTAGATOR有负面影响。

FLAN版本的影响。在主要实验中,我们使用了Wei等人(2022a)描述的FLAN模型。这个模型是在包括问答数据集的一组数据集上训练的;具体来说,它包括Natural Questions(NQ)和Quora。FLAN没有在NQ或Quora的查询文档对上训练;然而,为了确定包含这些数据是否对最终检索评估的结果产生了偏差,我们设计了一个额外的消融实验。遵循Wei等人(2022a)用于训练原始FLAN模型的配方,我们训练了一个额外的LLM,排除了NQ和Quora数据集。表3显示了使用和不使用NQ和Quora训练的PROMPTAGATOR的结果。虽然准确度略有下降,但总体性能仍然优于先前的检索器。

4.4 定性分析

为了理解few-shot PROMPTAGATOR的优点,我们分析了图3中aguana任务的不同查询生成方法生成的查询的第一个单词的分布。请注意,少射PROMPTAGATOR(图3b)的分布更接近真实分布(图3a),而NQ-QGen(图3c)即使在任务的查询是参数时也主要生成问题。附录中的表5展示了示例。

5 相关工作

神经检索模型 预训练大型语言模型的成功(Devlin等人,2019;Raffel等人,2020;Brown等人,2020)推动了神经检索模型领域的蓬勃发展。神经检索模型可以分为两类,即基于表示的模型和基于交互的模型。

基于表示的模型(Palangi等人,2016;Gillick等人,2018;Karpukhin等人,2020)将查询和段落独立地编码到共同的密集空间中,并基于向量点积或余弦相似度来评分它们的相关性。基于表示的模型的最新研究主要关注以下方面:开发更好的预训练任务(Lee等人,2019;Chang等人,2020;Khattab & Zaharia,2020;Izacard等人,2022a;Oguz等人,2022)或预训练架构(Gao & Callan,2021;2022),使用多向量表示提高表现力(Luan等人,2021),提高负对比度(Qu等人,2021;Xiong等人,2021;Lu等人,2021),以及提高不同领域之间的泛化能力(Thakur等人,2021;Ren等人,2022)。为了提高泛化能力,探索了不同的技术,例如使用查询生成进行数据增强(Ma等人,2021;Wang等人,2022),使用对比学习进行更好的预训练(Izacard等人,2022a),使用知识蒸馏(Chen等人,2021;Wang等人,2022)和扩大模型规模(Ni等人,2021)。

尽管将查询和文档编码到单个向量中可以通过近似最近邻搜索(Johnson等人,2021;Wu等人,2019)实现快速检索,但它也限制了这些模型的表示能力,从而导致次优预测。另一方面,基于交互的模型显式地模拟查询和文档术语之间的交互(Guo等人,2016;Hui等人,2017;Xiong等人,2017;Dai等人,2018;McDonald等人,2018;Nogueira & Cho,2019),因此做出更明智的决策。这些模型通常更昂贵,因此用于重排或重新评分。将基于交互的模型蒸馏到基于表示的模型中已被证明有效,可以缩小两者之间的差距(Hofstätter等人,2020;Ren等人,2021a;Lin等人,2021;Ren等人,2021b;Reddi等人,2021;Zhang等人,2022)。另一种尝试结合两者优势的方法是将交互推迟到模型的最后一层(Gao等人,2021a;Khattab & Zaharia,2020),模糊了表示和交互模型之间的界限。

少样本学习 预训练大型语言模型的发展也推广了少样本学习范式,该范式利用少量示例作为模型输入的上下文(Brown等人,2020;Wei等人,2022b)。通常使用两种方法。一种方法是向LLM提供任务的自然语言指令和少量示例,而不更新LLM的任何参数(Brown等人,2020;Bonifacio等人,2022)。另一种方法是为LLM提供指令、少量示例,并执行模型微调(Schick & Schütze,2021a;b;c;Gao等人,2021b;Logan IV等人,2022;Izacard等人,2022b)。我们的工作采用了第一种方法。通常使用10-100个示例。例如,GPT3在少样本设置中使用了32个示例。在检索的背景下,Bonifacio等人(2022)为GPT3提供了三个问题-文档对,并使用它作为训练基于交互模型的问题生成器。

基于提示的查询生成 使用提示的LLM进行查询生成的想法以前已被提出,用于改进检索重排。在UPR(Sachan等人,2022)中,他们提议使用提示的LLM直接重排段落。InPars(Bonifacio等人,2022)可能是与我们的工作最相关的工作,他们提出使用GPT-3的少样本提示生成合成数据,用于训练应用于BM25检索器的T5基础重排器。在本文中,我们提出了少样本提示的LLM,并展示了生成的数据可以产生高效且强大的端到端检索器。此外,我们还展示了通过特定任务的提示和一致性过滤可以提高生成数据的质量。

晚期交互的检索器 尽管双编码器模型由于MIPS算法而在检索方面非常高效,但它们的表达力有限,因为它们的分数仅仅是查询向量和文档向量之间的点积。ColBERT(Santhanam等人,2022;Khattab & Zaharia,2020)和SPLADE(Formal等人,2021)是模型,通过允许令牌级别的交互来增加查询和文档之间的交互。由于这些模型不仅仅是查询和文档之间的点积,因此不能直接使用MIPS算法 。

6 结论与讨论

在本文中,我们介绍了PROMPTAGATOR,一种新颖的少样本检索方法。我们展示了仅凭少量的标注示例就可以创建特定任务的端到端检索器。这些少样本示例,通过基于提示的LLM查询生成放大,简化了训练新任务神经检索器的复杂性,并带来了可观的检索性能提升。这希望激励未来的研究进一步推动少样本检索的极限,朝着能够无缝且高效适应许多任务的通用检索系统发展。

虽然我们展示了查询生成可以非常有效,但关于问题生成和大型语言模型的作用仍有许多问题需要探讨。需要深入调查的一个关键问题是生成数据的效率。我们尚未精确探索每个任务需要多少查询-文档对,或者如何更有效地使用这些生成的示例。另一个值得理解的问题是最终检索器性能对提示的敏感性。最后,我们希望从PROMPTAGATOR到蒸馏建立联系,因为最终的 双编码器无疑从大型语言模型中受益良多。分析潜力并理解如何更好地将知识从LLMs转移到检索器将是未来的关键课题。

7 计算使用情况和环境影响

我们使用137B大型语言模型FLAN进行查询生成。FLAN基于与LaMDA相同的预训练模型(Thoppilan et al, 2022)。LaMDA在一个包含1.56T单词的大型语料库上进行预训练,消耗了451兆瓦时的能量和25.2亿吨二氧化碳当量的碳足迹。在PROMPTAGATOR中,我们生成了29.23万个查询* 2个提示= 58.46万个查询,总共610M个单词。如(§6)所述,PROMPTAGATOR可以被视为通过基于提示的查询生成将LLM提取为标准尺寸的双编码器。虽然蒸馏过程的计算成本很高,但它显著降低了推理成本。

相关推荐
思通数科AI全行业智能NLP系统5 分钟前
六大核心应用场景,解锁AI检测系统的智能安全之道
图像处理·人工智能·深度学习·安全·目标检测·计算机视觉·知识图谱
ö Constancy8 分钟前
设计LRU缓存
c++·算法·缓存
香菜大丸10 分钟前
leetcode 面试150之 156.LUR 缓存
算法
infiniteWei27 分钟前
【Lucene】搜索引擎和文档相关性评分 BM25 算法的工作原理
算法·搜索引擎·lucene
做程序员的第一天1 小时前
在PyTorch中,钩子(hook)是什么?在神经网络中扮演什么角色?
pytorch·python·深度学习
程序员小范1 小时前
孙玲:从流水线工人到谷歌程序员
人工智能·程序员·谷歌·远程工作
醉酒柴柴1 小时前
【代码pycharm】动手学深度学习v2-07 自动求导
ide·深度学习·pycharm
2402_871321951 小时前
MATLAB方程组
gpt·学习·线性代数·算法·matlab
风走茶未凉1 小时前
转置卷积与全卷积网络FCN在语义分割中的应用
网络·深度学习·cnn
Mongxin_Chan1 小时前
【Cpp】指针与引用
c++·算法