【RAG论文解读-SIGIR24】面向机器的搜索引擎:应用于RAG系统的统一重排器

90 阅读4分钟

原标题:Towards a Search Engine for Machines: Unified Ranking for Multiple Retrieval-Augmented Large Language Models

论文地址: arxiv.org/pdf/2405.00…

框架预览和介绍

image.png 如图所示,作者主要的思想是利用常规信息检索的思想,认为大规模用户的反馈有利于改进检索系统,从而将RAG系统拆分为上游的用户,和下游的检索-重排器,通过用户的反馈训练的重排器会具有更好的性能和泛化能力。

实验构造

上游是18个不同的模型, 分别执行open-domain question answering, fact verification, and slot-filling for relation extraction. 三种任务,使用KILT 的六个数据集作为评估。除了这 18 个与我们的统一搜索引擎进行优化的 RAG 模型外,我们还考虑了另一组 18个具有不同属性的 RAG 模型作为 uRAG 的新用户,这些模型不参与优化,并且搜索引擎部分或完全不知道它们。这些模型可能使用不同的 LLM 架构、引入新任务和/或将新数据集用于已知任务。鉴于这些研究问题的范围和篇幅限制,作者将限制在Reranker的优化上,其中搜索引擎使用 BM25 检索文档,并根据从下游 RAG 模型收到的反馈优化作为reranker的一个cross-encoder。

数学建模

  1. 对于上游的RAG模型 MiM_i ,每个模型都有各自的训练集 Di=(x1,y1),(x2,y2),...,(xDi,yDi))D_i = {(x_1,y_1), (x_2, y_2),...,(x_{|D_i|},y_{|D_i|}))} , xj,yjx_j, y_j 表示这个训练集里第j个输入输出,这些数据对于下游的搜索引擎RθR_\theta{} 是不可见的
  2. 对于训练集里的一对儿输入输出 (x,y)Di(x,y) \in{D_i} ,对应的RAG模型MiM_i 需要构建一个给搜索引擎的输入 q=QGen(x)q=QGen(x) , 搜索引擎会使用这个输入返回一个文档列表。因此,我们就利用数据集和模型,得到了搜索引擎的数据集 Qi={QGen(x):x,yDi}Q_i=\{{QGen(x):\forall{x,y}\in{D_i}}\}
  3. 对于每个RAG模型 MiM_i ,我们需要定义一个函数 UTILITYi{UTILITY}_i ,这个函数是用于量化模型在任务TiT_i 上的表现。为了简化,函数的返回值处于01之间,将会作为RθR_\theta 的反馈。
  4. 因此最后我们得到了搜索引擎最优化的方式
θ=argθmin1ni=1n1QiqQiL(Rθ(q;C),Uiq)\theta^* = \underset{\theta}\arg\min\frac{1}{n}\sum_{i=1}^n\frac{1}{|Q_i|}\sum_{q\in{Q_i}}L(R_\theta(q;C),U_{iq})
Uiq:=UTILITYi(y,Mi(x;Rθ(QGeni(x);c)))U_{iq} := {UTILITY}_i(y,M_i(x;R_\theta(QGen_i(x);c)))

解释为: 对每个数据集上的各个样本点的Loss求和后,除以样本数量,之后对全体数据集的数据求和 Loss是某个损失函数,计算搜索引擎在输入q和文档库C之后的输出,和上游返回的feedback UiqU_{iq}之间的差距,实际上是一个交叉熵。 而UiqU_{iq} 的计算方式为: 定义某个函数UTILITYUTILITY,计算MiM_i在得到下游返回的文档列表之后产生的输出 y^Mi\hat{y}_{M_i} 和数据集中 y之间的差距。

可以注意到 Rθ(q;C)Rθ(QGeni(x);c)R_\theta(q;C) 和 R_\theta(QGen_i(x);c) 说的是一个东西,只是替换了一下q

实验

image.png 基于模型不同的窗口长度, RA-T5设置为k=10,RA-BART k=4, FiD k = 10, k是搜索引擎返回的文档数量。

Utility 函数被设置为数据集推荐的方式,为短形式问答数据集采用精确匹配(Exact Match, EM),为长形式问答数据集采用ROUGE-L,并将准确度作为其余任务的效用函数.

搜索引擎构造

为了实现RθR_\theta ,作者采用了一个两阶段的级联检索流程。

  1. KILT基准提供的维基百科转储被用作非结构化知识源。其中每个文档被划分为段落,每个段落的最大长度为100个单词。此外,并且将文档标题与每个段落连接起来,形成检索语料库中的文档。这个语料库包含大约3600万个段落。采用Pyserini对BM25算法的实现,通过输入q 获取100个段落。
  2. 第二阶段的模型是一个 cross-encoder 的重排器, q和段落作为输入,产生一个标量作为关联度, 为了实现个性化的输入输出, 根据𝑀𝑖及其下游任务𝑇𝑖来上下文化cross-encoder 表示。使用与开始标记(即[CLS])相关的表示上的线性投影来获得相关性得分
sd=Encoder[cls](tid;mid;q;d)Ws_d = Encoder_{[cls]}(tid;mid;q;d)\cdot{W}

tid 和 mid 表示任务和RAGmodel的标识符 本文选择BERT-base作为encoder, 在100个文档重排之后,我们就得到了topK

搜索引擎训练

得到了RAG model的反馈后,我们定义一个基于任务和模型的阈值τ\tau, 大于等于阈值的为正样本,其他为负样本, 因此对于每一次查询,我们会得到两个正负样本的集合Dposq,DnegqD_{pos}^q, D_{neg}^q,之后计算交叉熵作为Loss

L=1QqQ(dDposqlogσ(sd)+dDnegqlogσ(1(sd)))L = -\frac{1}{|Q|}\sum_{q\in{Q}}(\sum_{d\in{D_{pos}^q}}log\sigma(s_d) + \sum_{d\in{D_{neg}^q}}log\sigma(1-(s_d)))

结论

image.png 角标表示针对第i项统计学上有显著的改进(p<0.05)

训练统一的reranker和为每个模型单独训练reranker有什么差别

实验表明,统一重新排序的表现与为每个下游 RAG 模型单独训练的相同重新排序模型相当或明显更好。更详细地说,61% 的下游模型的改进具有统计意义,并且在参与训练过程的 18 个 RAG 模型中没有统计意义的性能下降。

训练统一的reranker和在每个任务上训练的reranker有什么差别

实验表明,训练统一的重新排名器在性能上与基于使用相同数据集的所有RAG模型提供的反馈训练的重新排名器相当或显著更好。更具体地说,在我们的实验中,39%的下游RAG模型观察到统计学上显著的改进,而大多数观察到没有显著差异。这表明知识迁移是有效的。

定制个性化的反馈对实验结果有什么影响

假设不同的RAG系统行为不同,那么为不同的系统定制搜索结构可能是有益的, 在实验过程中,在查询和文档之外,加入了任务和模型的标识符。观察到,通过包含任务和模型标识符在相关性评分中,有50%的下游RAG模型观察到了性能提升。然而,在绝大多数情况下,这些改进并不具有统计学意义。

对于新加入的不确定结构和数据集的RAG模型有什么影响

image.png 结论:对于某些类型的任务有所改进

结论(机翻)

我们研究了为多个下游RAG系统开发搜索引擎的前景和挑战。我们引入了uRAG生态系统,使我们能够进行大规模实验,以回答这一领域的一些基本研究问题。我们展示了优化统一的重排器与当前标准做法——即为每个下游RAG模型学习一个检索模型——相比,可以带来显著的改进。我们强调了统一重排器的改进对于基于已知数据集的新(未知)模型或与训练过程中使用的密切相关的未知数据集是可推广的。我们进一步解释了为下游RAG模型个性化重排器和推广到未知下游任务的挑战。

本文开辟了一系列未来研究方向。通过提出的uRAG生态系统,未来的工作可以关注:

  1. 从各种下游RAG模型中最优地聚合反馈;
  2. 校准他们的反馈;
  3. 考虑每个下游模型的多个效用函数;
  4. 将工作扩展到检索模型优化而不仅仅是重排;
  5. 研究新的正则化技术以提高uRAG的泛化能力;
  6. 研究uRAG的在线优化方法,因为下游RAG模型与检索模型交互;
  7. 在uRAG的背景下探索交错和反事实学习方法;
  8. 超越文本生成,扩展到更一般的REML场景等等。