AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


RAG系列04:使用ReRank进行重排序
发布日期:2024-03-22 06:28:37 浏览次数: 4950

在检索增强生成(RAG)的简单方法中,检索阶段可能会检索到大量上下文,但并非所有这些内容都与问题紧密相关。因此我们希望对检索的内容进行再次筛选。这个过程类似于排序过程中的粗排和精排。粗排检索效率较快,但是召回的内容并不一定强相关。而精排效率较低,因此适合在粗排的基础上进行进一步优化。

在 RAG 中,精排的术语就叫重排序(Re-Rank),重排技术能够重新排序和筛选文档,将相关内容置于前列,从而提高 RAG 的效果。

重排技术简介

如上图所示,重排任务就像一个智能过滤器。当检索器从索引库中检索到多个上下文时,这些上下文与用户查询的相关性各不相同。有些可能非常相关(如图中红框所示),而另一些可能只是轻微相关甚至不相关(如图中的绿框和蓝框所示)。

重排的任务就是评估这些上下文的相关性,优先考虑那些最有可能提供准确和相关信息的内容。这样,LLM 在生成答案时可以优先考虑这些排名靠前的上下文,从而提高回应的准确性和质量。

换句话说,重排就像在开卷考试中,帮你从一堆学习资料中挑选出最相关的参考资料,以便你能更高效、更准确地回答问题。

本文将介绍的重排方法主要分为以下两类:

  • 基于重排模型:这些模型可以输出文档与查询之间的相关性
  • 基于 LLM:由于大模型可以更全面地捕捉语义信息,也可被用于重排序

使用重排模型

与 embedding 模型不同,重排模型将查询和上下文作为输入,并直接输出相似性得分。需要注意的是,重排模型使用交叉熵损失进行优化,使得相关性得分是无界的,甚至可以是负数。

目前,可用的重排模型并不多。一种选择是通过 API 访问的 Cohere 提供的在线模型。还有开源模型如 bge-reranker-base 和 bge-reranker-large[1] 等。

下图展示了不同模型的命中率(Hit Rate)和平均倒数排名(Mean Reciprocal Rank, MRR)指标结果:从这一实验结果可以看出:

  • 无论使用哪种嵌入模型,重排都显示出更高的命中率和 MRR,显示了重排的重要影响。
  • 目前,最佳的重排模型是 Cohere[2],但它是一项付费服务。开源的 bge-reranker-large 模型具有与 Cohere 相似的能力。
  • embedding 模型与重排模型的组合也会产生影响,因此开发者在实际过程中可能需要尝试不同的组合。

使用 LLM 作为重排器

除了使用 ReRank 模型,也可以使用 LLM 实现重排。现有的涉及 LLM 的重排方法大致可以分为三类:

  • 将 LLM 与重排任务一起微调
  • 提示 LLM 进行重排
  • 训练过程中使用 LLM 进行数据增强。

提示 LLM 进行重排的方法成本较低。以下是一个使用 RankGPT 的演示,它已经被集成到 LlamaIndex 中。

RankGPT 的理念 是利用 LLM(如 ChatGPT 或 GPT-4 等)进行零样本的列表式段落重排。它采用了一种排列生成方法和滑动窗口策略,以高效地对段落进行重排。

如下图所示,该论文提出了三种可行的方法。

前两种方法是传统方法,为每个文档分配一个分数,然后根据这个分数对所有段落进行排序。

第三种方法是排列生成,是本文提出的方法。具体来说,它不是依赖于外部分数,而是模型直接对段落进行端到端的排序。 换句话说,它直接利用 LLM 的语义理解能力对所有候选段落进行相关性排序。

然而,通常候选文档的数量非常多,而输入到 LLM 的文本是有限的。因此,通常不可能一次性输入所有文本。

因此,如图所示,引入了滑动窗口方法,该方法遵循冒泡排序的思想。每次只对前 4 个文本进行排序,然后移动窗口,对随后的 4 个文本进行排序。遍历整个文本后,我们可以获得表现最佳的顶部文本。

在探索如何利用 LLM 进行重排的过程中,RankGPT 提供了一种新颖且高效的方法。它不仅仅是一个技术解决方案,更像是在海量信息中寻找珍珠的潜水艇,用智能的方式探测和排序知识的深度。通过滑动窗口的策略,我们像是在逐步点亮信息的海洋,让最耀眼的部分率先浮出水面。

结论

总的来说,本文介绍了重排的原理以及两种主流的重排方法。其中,使用重排模型的方法轻量级,开销较小。而使用 LLM 的方法在多个基准测试上表现良好,但成本较高,且只有在使用 ChatGPT 和 GPT-4 时表现良好,如使用其他开源模型,如 FLAN-T5 和 Vicuna-13B 时,其性能就不那么理想。因此,在实际项目中,需要做出特定的权衡。




53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

年轻人!来一起搞AI吗?

如果你看见AI对商业世界的变革,欢迎来和我们一起探索~

岗位:销售经理

查看详情

岗位:项目经理

查看详情

岗位:产品经理

查看详情

岗位:测试工程师

查看详情

联系我们

售前咨询
186 6662 7370
产品演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询