微信扫码
添加专属顾问
我要投稿
Reranker模型:提升RAG检索效率与准确性的关键技术。 核心内容: 1. Reranker模型在RAG检索中的角色和功能 2. 向量搜索技术在RAG中的应用及其局限性 3. Reranker模型如何平衡召回率和LLM上下文窗口限制
ReRanker模型是对RAG检索返回的结果进行重新排序的模型。也就是下图所示中2nd Retrieval的模型。具体来说,ReRanker模型在RAG Pipeline中扮演着第二阶段的角色,即在初始检索步骤之后,对检索出的文档块chunks进行重新排序,以确保相关的文档块优先被传递给LLM进行处理。
在回答这个问题之前,我们先深入了解一下背后的问题。
RAG通过在大量文本文档中进行语义搜索来工作,这些文档数量可能达到数十亿。为了实现大规模搜索的快速响应,我们一般采用向量搜索技术,即将文本转化为向量后,放入一个向量空间内,通过余弦相似度等度量标准来比较它们与查询向量之间的相似度。
向量搜索的前提是需要向量。这些向量基本上是将文本背后的意义压缩成固定维度的向量(如768或1536维),这一过程不可避免地会导致信息丢失。因此,常常会发现,即便是排名靠前的文档,也可能会遗漏一些关键信息。
如果较低位置的文档包含了有助于LLM更好地形成回答的相关信息,这些信息就很容易被忽略。这该怎么办?一个简单的方法就是增加返回的文档数量,即增加top_k值,并将它们全部传递给LLM。
我们此处关注的指标是召回率,即“我们检索到了多少相关文档”。值得注意的是,召回率衡量的是系统能够找到的相关文档的比例,而不考虑检索到的文档总数。因此,理论上通过返回所有文档可以实现完美的召回率。
然而,这在实际操作中是不可行的,一是因为大语言模型(LLM)对输入文本量有一定的限制,我们称之为「上下文窗口」。即使像Anthropic 的 Claude这样的模型拥有高达100K Token的巨大上下文窗口,也不能无限制地增加输入文本量。二是当上下文窗口被过多的Token填满时,大语言模型的回忆能力和执行指令的效果都会受到影响。研究表明,过度填充上下文窗口会降低模型在该窗口中检索信息的能力,从而影响生成回答的质量。
为了解决召回率和LLM上下文窗口之间的矛盾,Reranker模型提供了一种有效的解决方案。具体步骤如下:
最大化检索召回率
在初始检索阶段,通过增加向量数据库返回的文档数量(即增加 top_k 值),可以提高检索的召回率。这意味着尽可能多地检索相关文档,确保不会遗漏任何可能有助于 LLM 形成高质量回答的信息。
❞重新排序并筛选最相关的文档
在第二阶段,使用 Reranker 模型对检索到的大量文档进行> 重新排序。Reranker 模型能够更精确地评估查询与文档的相> 关性,筛选出最相关的文档,并减少最终传递给 LLM 的文档> 数量。这一步骤的关键在于:
❞确保 LLM 处理高质量信息
通过上述两步,Reranker 模型不仅提高了检索的召回率,还确保了传递给 LLM 的文档是最相关的。这使得 LLM 能够基于高质量的信息生成更准确、更有价值的回答,同时避免了上下文窗口过载的问题。
❞重排序模型(也被称为Cross-Encoder)是一种模型,能够针对一个查询和文档对,输出它们的相似度分数。我们利用这个分数对文档按照与查询的相关性进行重新排序。
其本质是一个包含两阶段的检索系统:
是因为从大数据集中检索少量文档的速度远快于对大量文档进行重排序。简而言之,重排序器处理较慢,而检索器速度快。
尽管重排序器的处理速度较慢,但我们仍然选择使用它们,关键在于其精确度远超过嵌入模型。
双编码器(Bi-Encoder)精度较低的根本原因在于:
而重排序器(Reranker / Cross-Encoder)能够在大型Transformer中直接处理原始文本信息,避免了信息压缩带来的损失。它可以直接分析查询和文档的原始文本,确保所有相关信息都能被充分考虑。
然而,尽管重排序器具有更高的精度,但它也有代价,就是需要更多的时间来生成相似度分数。
因此在实际应用中,通常会结合两者优势,采用两阶段检索策略:
这种组合方式既能保证检索的速度,又能提高结果的准确性。例如,在处理4000万条记录的情况下,如果仅使用重排序器,可能会需要超过50小时来返回一个查询结果;而使用双编码器和向量搜索,则可以在不到100毫秒内完成初步筛选。随后,再用重排序器对筛选出的少量文档进行精排,既提高了效率又保证了质量。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-10-27
2024-09-04
2024-07-18
2024-05-05
2024-06-20
2024-06-13
2024-07-09
2024-07-09
2024-05-19
2024-07-07
2025-04-01
2025-04-01
2025-03-30
2025-03-28
2025-03-27
2025-03-27
2025-03-25
2025-03-19