微信扫码
与创始人交个朋友
我要投稿
在检索增强生成(RAG)的简单方法中,检索阶段可能会检索到大量上下文,但并非所有这些内容都与问题紧密相关。因此我们希望对检索的内容进行再次筛选。这个过程类似于排序过程中的粗排和精排。粗排检索效率较快,但是召回的内容并不一定强相关。而精排效率较低,因此适合在粗排的基础上进行进一步优化。
在 RAG 中,精排的术语就叫重排序(Re-Rank),重排技术能够重新排序和筛选文档,将相关内容置于前列,从而提高 RAG 的效果。
如上图所示,重排任务就像一个智能过滤器。当检索器从索引库中检索到多个上下文时,这些上下文与用户查询的相关性各不相同。有些可能非常相关(如图中红框所示),而另一些可能只是轻微相关甚至不相关(如图中的绿框和蓝框所示)。
重排的任务就是评估这些上下文的相关性,优先考虑那些最有可能提供准确和相关信息的内容。这样,LLM 在生成答案时可以优先考虑这些排名靠前的上下文,从而提高回应的准确性和质量。
换句话说,重排就像在开卷考试中,帮你从一堆学习资料中挑选出最相关的参考资料,以便你能更高效、更准确地回答问题。
本文将介绍的重排方法主要分为以下两类:
与 embedding 模型不同,重排模型将查询和上下文作为输入,并直接输出相似性得分。需要注意的是,重排模型使用交叉熵损失进行优化,使得相关性得分是无界的,甚至可以是负数。
目前,可用的重排模型并不多。一种选择是通过 API 访问的 Cohere 提供的在线模型。还有开源模型如 bge-reranker-base 和 bge-reranker-large[1] 等。
下图展示了不同模型的命中率(Hit Rate
)和平均倒数排名(Mean Reciprocal Rank, MRR
)指标结果:从这一实验结果可以看出:
bge-reranker-large
模型具有与 Cohere 相似的能力。embedding
模型与重排模型的组合也会产生影响,因此开发者在实际过程中可能需要尝试不同的组合。除了使用 ReRank 模型,也可以使用 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+中大型企业
2024-03-30
2024-04-26
2024-05-10
2024-04-12
2024-05-28
2024-04-25
2024-05-14
2024-07-18
2024-08-13
2024-04-26