EfficientRAG:多跳问题回答的高效检索器

https://www.arxiv.org/abs/2408.04259中,作者介绍了一种高效的多跳问答检索器效率 EfficientRAG。EfficientRAG 迭代地生成新的查询,而不需要在每次迭代中调用 LLM,并过滤掉不相关的信息

方法

  1. EfficientRAG框架概述
  • 作者介绍了EfficientRAG,即插即用的方法,旨在通过多个检索轮有效地检索相关信息,以丰富检索信息并减少不相关信息,然后帮助提高答案的质量和准确性。
  • EfficientRAG 由两个轻量级组件组成:标签机和标签机和过滤器
  • 这些组件共享相同的模型结构,标签机和标签机从同一模型内的单独头部产生输出,过滤器的输出来自另一个模型
  • 标签器和过滤器都作为标记级分类器,将标记分类为真或假。
  • 下图显示了EfficientRAG 如何适应传统的 RAG 系统。

ii)操作流程

  • 给定一个查询,检索器从数据库中获取相关的块。
  • 然后标签器模块在这个文档中标注一系列标记,这些标记表示可以(部分)

回答查询的有用信息。

  • 然后标记器模块对数据块进行标记,表明检索到的数据块是有用的还是无关的。
  • 如果标签表明需要更多信息来回答查询,即标记为<Continue>,我们将把该块添加到候选池中,该候选池将被馈送到基于 llm 的生成器以获得最终答
  • 否则,如果文档被标记为无用或不相关,我们将停止从该查询中搜索后续分支
  • 过滤器模块同时接受标记的令牌和当前查询,通过将查询的未知部分替换为标记的令牌(有用的信息),为下一轮检索构建一个新的查询
  • 这种方法有效地为后续检索轮生成新的查询,旨在检索超出初始查询范围的信息。
  • 一旦这种方法获得足够的信息来回答最初的问题,它就会停止并将所有这些信息传递给最终的生成器,以获得最终的响应

iii)合成数据构建(Synthetic Data Construction)

  • 利用 LLM 对标签器和过滤器的训练数据进行综合。
  • 该过程包括以下步骤:
  1. 多跳问题分解
  • 给定一个多跳问题和相关的数据块,我们首先提示 LLM 将原始问题分解为几个单跳问题,每个单跳问题对应一个数据块
  • 然后,我们要求 LLM 解析子问题的依赖关系

b)令牌标记

  • 对于每个子问题和相应的块,我们提示 LLM 标记与子问题答案相关的块中的重要单词
  • 我们使用 Spacy 工具包用二进制标签标注数据块中的每个单词,以确定它是否重要,是否应该由 EfficientRAG 标签器保留

c) Next-hop question filtering

  • 给定一个单跳问题和来自其相关问题的标记令牌,我们提示 LLM 生成下一跳问题,这是理想的下一个检索查询。
  • 我们提取下一跳问题令牌,与令牌标记过程相同。

d)负抽样

  • 对于每个过滤后的下一跳问题,我们检索最相似但不相关的块作为硬负块
  • 这些否定的数据块将被标记为<Terminate>,而其他相关的数据块将被标记为<Continue>。

iv)训练

  • 作者训练EfficientRAG Labeler 完成两个任务,标记标记和块过滤,因为它们都接受相同的输入。
  • 使用自动编码器语言模型作为编码器,为连接序列查询,chunk 的每个标记派生嵌入。
  • 随后,我们使用一个全连接层将标记嵌入投影到二维空间中,指示“有用的标记”和“无用的标记”
  • 另一个完全连接层用于将序列嵌入的平均池化投影到二维空间中,表示块标记<Continue>和<Terminate>。
  • 我们以类似的方式训练 effentragfilter,而它的输入序列是查询和标记令牌的连接
  • Filter 提取单词并将它们连接起来以形成下一跳查询。

实验

  1. 端到端 QA 性能
  • 在三个多跳问答数据集上对我们的EfficientRAG 和多个基线进行了评估
  • 选择以下模型作为基线:不进行检索的直接回答,包括具有专有数据的

LMs,包括以前 10 个检索块为知识的朴素 RAG 为基线,包括高级迭代 RAG 方法,如 Iter-RetGen[2]和 SelfAsk [3]

  1. 实现细节
  • EfficientRAG 标签器和过滤器基于 DeBERTa-v3-large 进行微调,具有 24 层和 304M 参数
  • 问答阶段和其他所有基线均采用 Llama-3-8B-Instruct
  • 使用 Contriever-MSMARCO[4]作为数据合成和推理阶段的检索器
  • 使用 Llama-3-70B-Instruct 构建训练数据(提示细节在[1]的附录 B.2 中提

到)

结果与分析

  1. 检索性能
  • 模型的性能使用 Recall@K 指标跨三个不同的数据集进行评估
  • 下表显示了检索性能的结果

  • EfficientRAG 在 HotpotQA 和 2WikiMQA 数据集上取得了非常高的召回分数,召回值分别为 81.84 和 84.08
  • 考虑到 HotpotQA 的最小块检索数为 6.41, 2WikiMQA 的最小块检索数为

3.69,这些结果令人印象深刻。

  • 下表显示了跨三个数据集的端到端问答性能结果。

  • EfficientRAG 框架在 HotpotQA 和 2WikiMQA 上都达到了最高的精度,特别是在 2WikiMQA 上提高了 6 个点。即使召回率很低,它在 MuSiQue 上的表现也很好。

ii)推理效率

  • 从 MusiQue 数据集中随机选择 200 个样本进行实证研究,并计算了 LLM

调用、迭代、延迟和 GPU 利用率四个指标

  • 下表显示了不同 RAG 范式下的效率评估

  • 与其他迭代方法相比,efficientrag 方法需要更少的迭代,在保持相似的 GPU 利用率的情况下,时间效率提高了 60%-80%

iii)使用不同生成器的性能

  • 下表显示了使用 GPT-3.5-turbo-1106 生成器在 2WikiMQA 数据集上的端到端 QA 性能。

  • 使用 GPT-3.5 作为生成器增强了基线和我们的方法的端到端性能。值得注意的是,EfficientRAG 继续提供卓越的结果。

iv)域外适应

  • 下表显示了在 2WikiMQA 和 HotpotQA 数据集上的域外实验

  • 结果表明,我们的模型可以很好地适应不同的数据集,在某些情况下甚至超过了在原始数据上训练的模型

限制

  • EfficientRAG 框架理论上可以适应其他模型,但由于时间和资源的限制,作者选择不实现更大的 LLM 作为最终的 QnA 推理器
  • 方法主要在开放域数据集上进行分析,因为很难在域内设置中识别多跳问答数据集。

结论

  • 介绍EfficientRAG 检索器,这是一种用于多跳问题检索的新方法,可以迭代地生成新查询,同时避免了对大型语言模型的需求。
  • 对三个基准数据集的评估表明,EfficientRAG 不仅可以用最少数量的检索块实现高召回,而且在随后的问答任务中提供了有希望的结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值