Rerank进一步提升RAG效果

RAG & Rerank

目前大模型应用中,RAG(Retrieval Augmented Generation,检索增强生成)是一种在对话(QA)场景下最主要的应用形式,它主要解决大模型的知识存储和更新问题。
在这里插入图片描述
简述RAG without Rerank的主要过程:

相似度匹配
Question
从向量库或其他存储召回的相关chunk list
提示词
LLM
Answer

从向量库或其他存储召回的相关chunk list会按照检索时指定的距离计算公式由近及远排列,或者假设相似度得分记为distance_score,按distance_score大小从大到小排列。

Rerank指的是在检索结果的排序基础之上再排一次序,将对生成回复真正重要的chunk排在前面,排除干扰项,可以类比理解为推荐算法的粗排精排过程。

为什么需要Rerank?

召回阶段使用向量库进行召回时,要求快速在大规模数据中检索到相关项,该过程需要度量当前question和库内全部向量的相似度,按指定窗口大小得到top x结果。也就是说,召回其实是个穷举过程,那么必然不能使用复杂度特别高的算法来计算相似度,为了召回的性能牺牲了召回的精度

Rerank的概念在大模型之前就已经出现,比如推荐算法搜索算法的精排过程,可以理解为在粗排结果的基础之上进行rerank(精排)。
在这里插入图片描述

RAG的Rerank必要性体现在3个方面:

  1. 精度提升:基于embedding的向量化检索过程可以通过一定程度的语义相似度来高效检索相关性较高的文本片段,但由于语义本身的复杂性和多义性,以及高维向量相似度匹配可能产生的噪音,向量检索可能会召回一些相关性较低的候选项。因而引入rerank模型,希望在向量召回(可以理解为粗排)的基础上进一步优化结果,降低为生成提供的参考内容中的无效信息。
  2. 语义匹配:向量库检索过程仅考察了query向量和候选向量在向量空间的语义距离,没有考虑query文本和候选文本其他方面的语义关系,比如上下文信息、句法结构等,而rerank模型有机会通过衡量query文本和候选文本之间更丰富的语义关系实现更精细的语义匹配。
  3. 场景适配:通过自训练rerank模型来进行精排,可以按照特定需求做进一步排序,从而提升QAG在特定应用场景下的表现。

二阶段检索

二阶段检索(Two-Stage Retrieval),即整个检索过程由原本的检索阶段和新增的精排阶段组成。很明显,这种组合方式能最大化利用向量库的检索速度,同时也能保证检索的效果,因而在RAG中广泛采用:检索过程使用基于向量的检索算法,精排过程使用rerank模型。Rerank模型一般基于双编码器(dual-encoder)架构,可以同时encode问题和知识库语料,从而进一步度量两者之间的语义相似度。
在这里插入图片描述
网易有道开源的QAnything采用流程的就是两阶段检索,可以理解为RAG with Rerank:

相似度匹配
Rerank
Question
从向量库或其他存储召回的相关chunk list
提示词
精排chunk list
LLM
Answer

Rerank模型

Rerank模型效果公认效果比较好的是一家AI独角兽cohere发布的cohere rerankhttps://cohere.com/rerank,不过该模型是一个闭源商用模型,个人使用有一定的免费额度。

国内中文开源rerank模型中效果比较好的有BAAI的bge系列模型(和这家公司的开源的embedding模型是同一个模型系列):

ModelBase modelLanguagelayerwisefeature
BAAI/bge-reranker-basexlm-roberta-baseChinese and English-Lightweight reranker model, easy to deploy, with fast inference.
BAAI/bge-reranker-largexlm-roberta-largeChinese and English-Lightweight reranker model, easy to deploy, with fast inference.
BAAI/bge-reranker-v2-m3bge-m3Multilingual-Lightweight reranker model, possesses strong multilingual capabilities, easy to deploy, with fast inference.
BAAI/bge-reranker-v2-gemmagemma-2bMultilingual-Suitable for multilingual contexts, performs well in both English proficiency and multilingual capabilities.
BAAI/bge-reranker-v2-minicpm-layerwiseMiniCPM-2B-dpo-bf16Multilingual8-40Suitable for multilingual contexts, performs well in both English and Chinese proficiency, allows freedom to select layers for output, facilitating accelerated inference.

详见:https://github.com/FlagOpen/FlagEmbedding/tree/master/FlagEmbedding/llm_reranker
模型可以在hugging face上下载使用:https://huggingface.co/BAAI/bge-reranker-large#model-list

参考文献

  1. 大模型相关技术-为什么需要rerank
  2. ReRank 与 Embedding 模型的区别? 如何选择 ReRank 模型?
  3. NLP(八十三)RAG框架中的Rerank算法评估
### Rerank优化的方法和技巧 Rerank 是检索增强生成(Retrieval-Augmented Generation, RAG)系统中的重要环节,其目标是通过对初步检索结果重新排序来提升最终生成内容的质量和相关性。以下是关于如何优化 Rerank 算法的一些方法和最佳实践: #### 1. 特征工程的重要性 为了构建高效的重排序模型,特征的选择至关重要。可以考虑以下几类特征: - **文本相似度**:基于词嵌入或语义表示计算查询与文档之间的相似度[^1]。 - **上下文信息**:引入对话历史或其他背景信息作为额外输入,帮助更好地理解用户的意图[^2]。 - **领域特定特征**:针对不同应用场景设计专门的特征集,比如电商场景下的价格、销量等属性。 #### 2. 排序模型的设计 选择合适的排序模型对于实现高性能的 Rerank 至关重要。常见的选项包括但不限于: - **Pointwise 方法**:将每一对 (query, document) 转化成回归问题预测相关分数; - **Pairwise 和 Listwise 方法**:分别关注两两之间或者整个列表内的相对顺序关系[^3]。 以 `FlagReranker` 工具为例,它采用预训练语言模型捕获深层次语义关联,并支持半精度浮点数运算加速推理过程[^3]: ```python from FlagEmbedding import FlagReranker # 初始化 reranker 对象并启用 FP16 加速模式 reranker = FlagReranker('BAAI/bge-reranker-large', use_fp16=True) # 准备待评估样本对 [(q,a)] new_rerank_pairs = [[question, answer.page_content] for answer in answers] # 获取各候选项的相关性得分 scores = reranker.compute_score(new_rerank_pairs) print(scores) ``` #### 3. 数据增强技术的应用 通过扩充训练数据量以及多样性能够有效改善模型泛化能力。具体措施如下: - 使用回译机制生成更多变体版本; - 结合人工标注高质量样例指导监督学习流程; - 借助无标签大规模语料挖掘潜在有用实例进行自监督训练[^1]。 #### 4. 性能调优建议 除了改进算法本身外,在实际部署过程中还需要注意以下几个方面来进一步提升效率效果平衡表现: - **硬件资源分配**:合理规划 GPU/CPU 数量及时长限制条件下的任务执行计划; - **参数微调空间探索**:尝试调整 dropout rate 学习率 batch size epoch number 等超参寻找最优组合方案; - **在线 A/B 测试验证改动影响程度**:持续监控指标变化趋势以便快速响应可能出现的问题情况。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值