问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

重排序如何显著提升基于Embedding的检索增强生成效果?不同模型对比分析

创作时间:
作者:
@小白创作中心

重排序如何显著提升基于Embedding的检索增强生成效果?不同模型对比分析

引用
CSDN
1.
https://blog.csdn.net/l01011_/article/details/144517601

基于Embedding模型的大语言模型检索增强生成(Retrieval Augmented Generation,RAG)可以让大语言模型获取最新的或者私有的数据来回答用户的问题,具有很好的前景。但是,检索的覆盖范围、准确性和排序结果对大模型的生成结果有很大的影响。Llamaindex最近对比了主流的embedding模型和reranker在检索增强生成领域的效果,十分值得关注参考。

检索增强生成(RAG)简介

基于Embedding的大语言模型检索增强生成是指结合了检索(Retrieval)和生成(Generation)两种方法的自然语言处理系统。这种方法首先通过embedding检索与输入相关的信息,然后利用这些信息作为大语言模型的上下文信息回答用问题。

在上图中,我们可以看到,外部数据通过Embedding模型存储到向量数据库中。当用户输入查询内容时候,经过embedding模型和向量数据库的内容匹配,得到Top-n的结果后一起输入给大模型进行生成操作。因此,必须在检索中准确匹配到相关的内容才可以有更好地生成。尽管检索阶段不要求高准确性,但是覆盖率要求很高。否则会漏掉相关重要信息。

此外,也有很多研究发现,检索结果的排序对生成质量也有很大影响。如果知识按重要性排序也可能导致生成结果变差。原因是很多大语言模型有lost in middles特性,即对输入内容的开始和结束重视程度更高,如果重要信息放在输入内容中间,表现反而不好(具体参考:大模型如何使用长上下文信息?斯坦福大学最新论文证明,你需要将重要的信息放在输入的开始或者结尾处!)。

因此,在当前的很多向量检索增强生成的系统中,重排序也是非常重要的一步。例如,LangChain就提供了这样的一个特性用以提升检索增强生成:LangChain提升大模型基于外部知识检索的准确率的新思路:更改传统文档排序方法,用 LongContextReorder提升大模型回答准确性!

为了更加客观对比不同向量模型和重排序方法对检索增强生成结果的影响,最近LlamaIndex做了一个很不错的实验,对比了不同Embedding模型和重排序模型对RAG的影响。这里总结一下。

接下来,我们将分别先介绍使用到的Embedding模型和重排序模型,再介绍实验结果。

主流的Emebdding模型介绍

如前所述,大语言模型检索增强生成中很重要的一步是向量化。即使用向量大模型将文本数据转变成向量,然后通过类似FAISS方法检索。

这里列举几个主流的向量大模型,也是Llamaindex对比的模型。

如前所述,大语言模型检索增强生成中很重要的一步是向量化。即使用向量大模型将文本数据转变成向量,然后通过类似FAISS方法检索。

这里列举几个主流的向量大模型,也是Llamaindex对比的模型。

重排序模型(Reranker)

其实业界虽然讨论重排序对检索增强生成的影响的内容有很多,但是并没有特别针对重排序优化的模型。在LlamaIndex的测试中,收集了三个重排序方法,一个是CohereAI提供的基于大模型重排序的接口,另两个都是北京智源人工智能研究院(BAAI)提供的bge-reranker向量模型,分别是large版本和base版本。这两个向量模型是针对检索相关性进行优化的向量大模型,返回的也是相似性结果。但是官方目前没有详细的介绍。

不同模型对RAG结果的影响

本节我们详细描述一下实验结果。首先介绍一下评估方式。本次实验使用了Hit Rate和MRR两个评估方法。

在衡量搜索系统有效性时,我们主要依赖两个广泛认可的指标:命中率和平均倒数排名(MRR)。

命中率(Hit Rate):命中率是指在前k个检索的文档中找到正确答案的查询比例。简单来说,就是我们的系统在最初的几次猜测中得到正确答案的频率。

平均倒数排名(Mean Reciprocal Rank ,MRR):对于每个查询,MRR通过查看排名最高的相关文档的位置来评估系统的准确性。具体而言,它是所有查询中这些排名的倒数的平均值。因此,如果第一个相关文档是最顶端的结果,其倒数排名为1;如果是第二位,倒数排名则为1/2,以此类推。

最终测试结果如下

根据测试结果,如果不使用重排序,直接基于向量检索结果让大模型回答问题。那么,OpenAI的向量大模型效果最好。而Voyage、JinaAI-Base与其表现差不多,略差一点点。而Cohere的模型比较一般。

如果结合重排序进行回答,所有的模型都有比较好的提升,且与三个任意的重排序模型结合都会有很大的进步。

就不同的重排序模型来说,使用BGE-Reranker-Large和Cohere-Reranker似乎提升效果差不多。

结合了重排序的模型结果生成质量,JinaAI-Base模型反而会比OpenAI的向量模型效果更好!这意味着仅靠Embedding虽然可能无法战胜强大的Embedding模型,但是结合Reranker的结果反而有希望。

总结

最后简单总结一下。从这个简单的实验可以看到重排序结果对于检索增强生成的质量来说非常有利。结合重排序的检索结果基本上都有更好地提升。另外,如果你的Embedding模型不行,考虑加一个重排序会有机会让模型效果大幅提升!

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号