Rerank进一步提升RAG效果

2024-05-13 11:28

本文主要是介绍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 rerank:https://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进一步提升RAG效果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/985567

相关文章

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

使用Python实现生命之轮Wheel of life效果

《使用Python实现生命之轮Wheeloflife效果》生命之轮Wheeloflife这一概念最初由SuccessMotivation®Institute,Inc.的创始人PaulJ.Meyer... 最近看一个生命之轮的视频,让我们珍惜时间,因为一生是有限的。使用python创建生命倒计时图表,珍惜时间

防近视护眼台灯什么牌子好?五款防近视效果好的护眼台灯推荐

在家里,灯具是属于离不开的家具,每个大大小小的地方都需要的照亮,所以一盏好灯是必不可少的,每个发挥着作用。而护眼台灯就起了一个保护眼睛,预防近视的作用。可以保护我们在学习,阅读的时候提供一个合适的光线环境,保护我们的眼睛。防近视护眼台灯什么牌子好?那我们怎么选择一个优秀的护眼台灯也是很重要,才能起到最大的护眼效果。下面五款防近视效果好的护眼台灯推荐: 一:六个推荐防近视效果好的护眼台灯的

java学习,进阶,提升

http://how2j.cn/k/hutool/hutool-brief/1930.html?p=73689

JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

一、什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的。停工时间,就是不能向用户提供服务的时间。高可用,就是系统具有高度可用性,尽量减少停工时间。如何用最简单的方法来搭建一个高效率可用的服务端JAVA呢? 停工的原因一般有: 服务器故障。例如服务器宕机,服务器网络出现问题,机房或者机架出现问题等;访问量急剧上升,导致服务器压力过大导致访问量急剧上升的原因;时间和

提升PrestaShop外贸电商网站安全的几款行业必备工具

提升PrestaShop外贸电商网站安全的几款行业必备工具 PrestaShop发展历程 PrestaShop是一款优秀且强大的外贸开源电商软件,我们开始使用PrestaShop始于2009年,那时PrestaShop还是0.9版本:界面清新,性能强悍,扩展友好等特性,既没有Magento的笨重,也没有ZenCart的古老,更没有OpenCart的脆弱,因此PrestaShop如雨后春笋,迅速

【Godot4.3】多边形的斜线填充效果基础实现

概述 图案(Pattern)填充是一个非常常见的效果。其中又以斜线填充最为简单。本篇就探讨在Godot4.3中如何使用Geometry2D和CanvasItem的绘图函数实现斜线填充效果。 基础思路 Geometry2D类提供了多边形和多边形以及多边形与折线的布尔运算。按照自然的思路,多边形的斜线填充应该属于“多边形与折线的布尔运算”范畴。 第一个问题是如何获得斜线,这条斜线应该满足什么样