链载Ai

标题: RAG检索增强之Reranker重排序模型详解! [打印本页]

作者: 链载Ai    时间: 昨天 12:43
标题: RAG检索增强之Reranker重排序模型详解!

什么是Reranker模型?

ReRanker模型是对RAG检索返回的结果进行重新排序的模型。也就是下图所示中2nd Retrieval的模型。具体来说,ReRanker模型在RAG Pipeline中扮演着第二阶段的角色,即在初始检索步骤之后,对检索出的文档块chunks进行重新排序,以确保相关的文档块优先被传递给LLM进行处理。


为什么需要Reranker模型?

在回答这个问题之前,我们先深入了解一下背后的问题。

RAG通过在大量文本文档中进行语义搜索来工作,这些文档数量可能达到数十亿。为了实现大规模搜索的快速响应,我们一般采用向量搜索技术,即将文本转化为向量后,放入一个向量空间内,通过余弦相似度等度量标准来比较它们与查询向量之间的相似度。

向量搜索的前提是需要向量。这些向量基本上是将文本背后的意义压缩成固定维度的向量(如768或1536维),这一过程不可避免地会导致信息丢失。因此,常常会发现,即便是排名靠前的文档,也可能会遗漏一些关键信息。

如果较低位置的文档包含了有助于LLM更好地形成回答的相关信息,这些信息就很容易被忽略。这该怎么办?一个简单的方法就是增加返回的文档数量,即增加top_k值,并将它们全部传递给LLM。

我们此处关注的指标是召回率,即“我们检索到了多少相关文档”。值得注意的是,召回率衡量的是系统能够找到的相关文档的比例,而不考虑检索到的文档总数。因此,理论上通过返回所有文档可以实现完美的召回率。

然而,这在实际操作中是不可行的,一是因为大语言模型(LLM)对输入文本量有一定的限制,我们称之为「上下文窗口」。即使像Anthropic 的 Claude这样的模型拥有高达100K Token的巨大上下文窗口,也不能无限制地增加输入文本量。二是当上下文窗口被过多的Token填满时,大语言模型的回忆能力和执行指令的效果都会受到影响。研究表明,过度填充上下文窗口会降低模型在该窗口中检索信息的能力,从而影响生成回答的质量。


为了解决召回率和LLM上下文窗口之间的矛盾,Reranker模型提供了一种有效的解决方案。具体步骤如下:

  1. 最大化检索召回率

    在初始检索阶段,通过增加向量数据库返回的文档数量(即增加 top_k 值),可以提高检索的召回率。这意味着尽可能多地检索相关文档,确保不会遗漏任何可能有助于 LLM 形成高质量回答的信息。

  2. 重新排序并筛选最相关的文档

    在第二阶段,使用 Reranker 模型对检索到的大量文档进行> 重新排序。Reranker 模型能够更精确地评估查询与文档的相> 关性,筛选出最相关的文档,并减少最终传递给 LLM 的文档> 数量。这一步骤的关键在于:






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5