欢迎来到AI开发者的频道
我们讲了
有着非常重要影响的模型
也会带来其他的一个问题
我们首先来看一下
以及为什么要使用ReRank模型
在RAG领域的影响力还是很大的
AI开发前途无限
上期视频呢
如何为RAG选择Embedding的模型
在RAG应用中呢
除了Embedding模型
还有一个对RAG性能
它就是ReRank模型
最近呢我在测试天池的学习数据时呢
也真正体会到了ReRank模型的重要性
通过使用它
直接将我的分数一下子拉升了一大截
从第四名呢上升到了第一名
那既然这么重要
我就又花时间了
详细了解了一下ReRank模型
今天呢就为你分享一下我学习的内容
下面呢
我就通过以下四个问题的方式呢
来跟你分享一下
第一呢是什么是ReRank模型
第二个呢是为什么我们需要ReRank模型
第三个呢
是它与Embedding的模型有什么区别
最后呢是如何去选择一款ReRank模型
好的现在我们开始
首先第一个问题什么是ReRank模型
这里呢
我们通过这个QAnything的处理示意图呢
来说明一下
从这个图中
我们可以看到ReRank模型呢
处于第一步RAG检索
与大语言模型生成的中间位置
也就是呢这里的2nd retrieval的模型
它的作用呢
是对第一步RAG检索出来的chunks
也就是文本呢进行重新的排序
重新排序之后的文本呢
再送给大语言模型进行处理
那么第二个问题呢
就是为什么我们需要ReRank模型
那要了解这个问题
我推荐你来阅读
一下这篇博客文章
在这个文章中呢
他详细介绍了
ReRank与Embedding模型的区别
以及它们各自的特点
为了方便大家阅读呢
这里我用chat GBT
翻译了其中的一部分内容
这里呢我简单的介绍一下
首先这篇文章中介绍呢RAG技术
虽然容易上手
但是呢要做出比较满意的性能
其实一点也不容易
RAG的一个目标呢就是
要找到与问题相关的文档
但是呢由于Embedding模型呢
是将一个长文本
压缩为一个定长的向量来表示的
它呢
不可避免的会存在信息丢失的问题
所以呢这个检索的召回率
也经常不是很满意
为了提高这个召回率呢
我们可以通过
选择得分最高的多个文本
来喂给大模型来处理
但是这样做呢
第一个问题呢就是当文本太长时呢
大语言模型
难以有效的使用文本中间的信息
另外一个问题呢
就是太长的这种上下文
也会影响大模型
对我们指令的遵从能力
所以呢结论就是
还是要努力提高检索的准确度
这就是为什么
我们要使用ReRank模型的主要原因
通过ReRank模型呢
来对文本进行重新的排序
从而可以找到最相关的文本
这样呢不仅可以提高召回率
还可以让大模型产生更高质量的回答
上面我们了解了为什么需要ReRank模型
那么为什么ReRank模型排序的结果
要比基于Embedding模型排序
的结果要好呢
要回答这个问题呢
ReRank模型与Embedding模型的区别
首先看一下这张图
这时呢
使用Embedding模型进行RAG的一个过程
使用Embedding模型呢
我们会事先将所有的文本呢
使用Embedding模型进行处理
将文本呢压缩为一个向量
在用户进行查询时呢
我们先将用户的问题呢
也转换为一个向量
然后通过对比
用户问题的向量
与事先存储的向量的相似度的
来检索出相似文档
这个检索的速度是非常快的
可以非常高效的对大量的数据呢
进行检索
但是呢这里有一个最大的问题
就是Embedding模型处理时呢
会造成信息的丢失
从而影响检索的准确度
我们再来看一下ReRank模型
ReRank模型呢
是在接受到用户的问题之后
将问题与文本对呢送到模型当中来
直接计算用户问题
与各个文本的相似度
从这个图我们就可以知道
这个计算呢是非常具有针对性的
所以呢
这个检索出来的结果准确度呢
就会更高
相比Embedding的模型检索呢
ReRank模型的检索
它就是一对一的VIP服务了
那上面了解了什么是ReRank模型
那么下面我们就来看看
该如何选择一款ReRank模型呢
这里呢
我们还是一如既往地用数据说话
跟上期选的Embedding模型一样
我参考的标准呢
还是Huggingface的下载量
以及实验对比的
结果这个下载量的数据呢
是我上周统计的
从这个结果可以看出
BAAI的两款模型呢
下载量都达到了34万
上期视频中
我们介绍Embedding模型的时候
也知道这个BAAI的这个Embedding模型
下载量也是非常大的
可见这个BAAI呢
另外呢
这边还有几款支持多语言的模型
也可以用在中文任务上
q anything中使用的这个BCE Rerank
这个模型呢
它的下载量有15K
另外呢
这个BAAI的这个layerwise的这个模型
也是我比较关注的
那么这些模型的性能怎么样呢
这里呢
我参考的是q anything网站的结果
从这个结果来看呢
这个BCE ReRank base v1这个模型呢
不仅在中文
还是在中英混合任务上
性能都是最好的
都超过了BAAI的这两款模型
但是我并没有找到
他与这个BAAI
最好的layerwise的模型的对比
结果
另外呢这里还有一个智源提供的
一个基于他们模型的最佳实践
我们可以看一下
他针对多语言任务他推荐使用这两款模型
那如果是中文和英文任务呢
推荐的是这两款模型
如果你追求的是执行效率高的话呢
这里他推荐的是这两款
那如果要追求性能的话呢
他推荐的是这边的两款
在下面呢是它们的一个结果的对比
根据它们的对比呢
从精度上来说的话
这个layerwise的这个模型的精度
是最好的
最近呢我也
在天池的比赛数据上测了一下
这几个模型
在我这个数据上呢
BCE re rank base V1的表现呢是最好的
然后呢是这个BAAI的layerwise的模型
最后呢是这个BCE Rerank large
这个基于gemma建的
这款模型呢
在我用的这个中文数据上
表现并不是很好
所以呢
这里我推荐的顺序呢就是这样的
感兴趣的小伙伴呢可以
在你自己的任务上测测
看看是不是也有类似的趋势
最后呢给大家一个问题思考一下
既然ReRank模型效果这么好
那为什么还需要Embedding模型呢
那么什么情况下
可以不使用Embedding模型
直接使用ReRank模型来进行检索呢
欢迎你在留言区把你的答案告诉我
以上就是今天的分享
感谢收看
我们下期再见
发表回复