RAG流程中的重排序方法详解
1. 重排序在RAG中的作用和位置
Retrieval-Augmented Generation(RAG)的典型流程包括三个组件:检索器(Retriever)、重排序器(Re-ranker)和生成器(Generator)。检索器根据用户查询从知识库中初步检索出一批相关文档,而重排序器位于检索和生成之间,用于对这些候选文档进行二次筛选和排序 (Improving RAG Accuracy with Rerankers)。重排序的目的是将最相关、最有用的内容排在最前,以供后续的生成器使用,从而提升最终答案的准确性和可靠性 (RAG技术中的重排序Re-ranking深度解析) (Improving RAG Accuracy with Rerankers)。简单来说,重排序就像开卷考试中帮你在一堆资料里挑出最相关的参考资料,让你更高效、准确地回答问题。
(Rerankers and Two-Stage Retrieval | Pinecone)
图1:RAG中的两阶段检索与重排序流程示意图。在第一阶段,检索器(如向量数据库)从海量文档中快速检索出Top-K个候选(图中例为25篇)。第二阶段,重排序模型对这K个候选与查询逐一计算相关度分数,将其中最相关的Top-n(例为3篇,黄色标记)优先返回给LLM使用 (Rerankers and Two-Stage Retrieval | Pinecone)。重排序器充当过滤器,确保生成模块获得的是与查询最匹配的高质量信息。
在没有重排序的朴素RAG流程中,检索器可能返回许多相关性参差不齐的文档,生成模型不得不处理大量不相关内容,导致答案不准确 (RAG技术中的重排序Re-ranking深度解析)。加入重排序步骤后,系统会剔除无关或次要的文档,将真正相关的文档排列在前 (RAG技术中的重排序Re-ranking深度解析)。这样生成器在有限的上下文窗口中优先看到高相关内容,提高了回答的质量和可靠性 (Improving RAG Accuracy with Rerankers)。因此,重排序在RAG中扮演关键角色,直接影响到最终生成文本的相关性和准确性。它与检索器相辅相成:检索器注重召回(Recall)尽可能多的相关候选,重排序器则注重精度(Precision),精选出最相关的信息供生成器参考 (Rerankers and Two-Stage Retrieval | Pinecone)。
2. 常见的重排序方法
重排序方法大致分为以下几类,从简单的规则策略到复杂的机器学习和深度学习模型。不同方法在实现原理和效果上各有特点,通常可组合形成两阶段检索-重排架构 (Rerankers and Two-Stage Retrieval | Pinecone)。
2.1 基于规则的重排序
规则(无学习)方法利用预先设定的评分函数或启发式规则对文档相关性打分并排序。典型例子是根据检索分数(如BM25)进行排序。BM25是一种经典的基于词频-逆文档频率(TF-IDF)的排名函数,衡量文档与查询关键词匹配程度 (BERT as a reranking engine | Continuum Labs)。在第一阶段检索返回候选集合后,我们可以直接按BM25分数高低重新排序结果,以确保含有更多查询关键词的文档靠前。除此之外,其他简单规则还包括根据文档来源权威性、发布时间、新鲜度或长度进行排序或过滤等。
这类方法的特点是实现简单、速度快,不需要训练数据即可应用。例如,大多数搜索引擎在无学习排序之前就是用BM25这类算法进行初排。因此在RAG系统中,若缺乏训练数据或对实时性要求极高时,可以采用检索器的原始评分作为重排序依据(事实上,如果检索器本身返回的结果已按相关度排序,则可视为已隐含了规则排序)。不过,规则方法往往仅利用表层关键词匹配,无法深刻理解语义:例如对于同义词或语义相关但词不同的情况,BM25可能不给高分。这限制了其对复杂问答的效果 (BERT as a reranking engine | Continuum Labs)。因此,规则排序通常作为基础方案或初筛,在对速度要求高且语义要求不高的场景下使用,例如小型知识库查询、冷启动阶段等。
2.2 基于机器学习的重排序(Learning to Rank)
随着信息检索的发展,出现了将机器学习应用于排序任务的学习排序(Learning to Rank, LTR)方法。LTR利用带标注的数据训练模型,使其能学习更复杂的相关性模式。根据训练时考虑文档的数量不同,LTR分为三种主要范式 (The ABCs of Learning to Rank | Lucidworks):
-
Pointwise(逐点方法):模型一次只对单个文档进行评分学习,把排序转化为回归或分类问题 (The ABCs of Learning to Rank | Lucidworks)。例如,可将每个文档标注一个相关性分值(0/1或等级分),训练一个回归模型预测该分值 (The ABCs of Learning to Rank | Lucidworks)。Pointwise方法实现简单,常用的有利用回归树/线性模型根据文档特征(如BM25分、文档点击率等)直接预测相关性评分。
-
Pairwise(成对方法):模型一次考虑文档对,学习哪个文档应该排在另一文档前 (The ABCs of Learning to Rank | Lucidworks)。训练时构造文档对,并根据标注判断哪个应排前,然后让模型分类“文档A比文档B更相关”或预测两者相对分值差异 (The ABCs of Learning to Rank | Lucidworks)。模型的目标是尽量减少排序颠倒(inversion)的情况 (The ABCs of Learning to Rank | Lucidworks)。典型算法有RankNet、RankSVM、LambdaRank等 (The ABCs of Learning to Rank | Lucidworks),它们通过大量成对比较来优化排序。
-
Listwise(列表方法):模型直接对整个文档列表进行优化 (The ABCs of Learning to Rank | Lucidworks)。训练时让模型产出一个排列,和理想排列(根据标注排序)比较,优化例如NDCG(规范化折损累积增益)等列表评价指标 (The ABCs of Learning to Rank | Lucidworks)。Listwise方法考虑全局最优,但实现更复杂,常用算法如LambdaMART(提升树实现的Listwise)等 (The ABCs of Learning to Rank | Lucidworks)。
这些机器学习排序方法可以利用各种人工设计特征(如词匹配特征、文档点击率、链接分析得分等)来综合判断文档相关性。与简单规则相比,LTR模型能够融合多维度信号,通常比纯BM25排序获得更高的相关性和满意度。在Web搜索和电商搜索中,pointwise和pairwise方法长期用于结合用户点击反馈优化排序。
在RAG场景中,如果有一定规模的问答数据(如用户问题及其相关文档标注),可以训练一个学习排序模型对检索候选进行重排。例如,用pointwise方法训练一个梯度提升决策树或神经网络,根据查询和文档的一系列特征输出相关性分。这种模型能捕捉特定领域的相关性模式,提高排序精准度。然而,传统LTR也有局限:需要标注数据(获取人工判断成本高),特征设计复杂,而且模型对语义理解仍有限(主要依赖输入特征)。因此,近年来更强的深度学习重排序模型逐渐成为主流。
2.3 基于深度学习的重排序器
深度学习重排序利用神经网络(通常是预训练的大型语言模型)从大规模语料中学到的语言表示来评估相关性。相比传统LTR,深度模型可以自动从文本中抽取特征,尤其善于理解语义和上下文。常见的深度重排序架构主要有两类:双编码器(Bi-Encoder)和交叉编码器(Cross-Encoder),它们常用BERT、RoBERTa等Transformer模型作为编码器。下面分别介绍:
-
双编码器(Bi-Encoder):也称“双塔模型”,它使用两个编码器分别将查询和文档独立编码成向量表示,然后通过向量相似度(如点积、余弦相似度)计算相关性分。 (Rerankers and Two-Stage Retrieval | Pinecone)在双编码架构中,文档向量可以离线预计算存储,查询来时

最低0.47元/天 解锁文章
2723

被折叠的 条评论
为什么被折叠?



