Coggle数据科学 | RAG编码模型对比:谁与OpenAI最为相似?

本文来源公众号“Coggle数据科学”,仅用于学术分享,侵权删,干货满满。

原文链接:RAG编码模型对比:谁与OpenAI最为相似?

在设计检索增强型生成(RAG)系统时,选择嵌入模型是一个关键步骤。鉴于可选模型很多,识别相似模型可以帮助进行模型选择。

Beyond Benchmarks: Evaluating Embedding Model Similarity for Retrieval Augmented Generation Systems

https://ceur-ws.org/Vol-3784/short4.pdf

论文评估了RAG系统中嵌入模型的相似性。评估分为两个方面:首先,使用中心化核对齐(Centered Kernel Alignment)在成对级别上比较嵌入;其次,由于这对RAG系统特别相关,评估这些模型之间检索结果的相似性,使用Jaccard相似度和排名相似度。

作者比较了不同家族的嵌入模型,包括专有模型,在流行的基准信息检索(BEIR)的五个数据集上进行。通过实验,作者识别出了与模型家族相对应的模型集群。

为什么说编码模型是RAG的核心?

检索增强型生成(RAG)是一种新兴的范式,它通过为大型语言模型(LLMs)提供外部非参数知识源(例如文档语料库)来帮助减轻事实幻觉和过时训练数据的问题。

RAG框架的核心是检索步骤,即从文档语料库中检索出与输入查询或提示相关的一小部分候选文档。这个检索过程,被称为密集检索,依赖于文本嵌入。通常,这些嵌入的生成是分配给LLM的,由于该领域的快速发展,有多种选择。

因此从可用选项中选择最合适的嵌入模型成为RAG系统开发中的关键方面。目前指导这一选择的信息主要限于架构细节(由于封闭模型的普遍性,这些细节有时也很稀缺)和性能基准测试,如大规模文本嵌入基准(MTEB)。

如何比较编码模型的「相似度」?

接下来介绍评估嵌入模型相似性的两种方法。第一种方法直接比较模型生成的文本块的嵌入。第二种方法特别针对RAG(检索增强型生成)环境,评估给定查询的检索结果的相似性。

嵌入相似性

选择中心核对齐(Centered Kernel Alignment, CKA)和线性核作为我们的相似性度量。这个度量在两个步骤中计算两组嵌入之间的相似性。

首先,对于一组嵌入,使用核函数计算该集合内所有条目的成对相似性分数。因此,结果相似性矩阵的第k行包含了嵌入k与所有其他嵌入(包括它自己)之间的相似性分数。

CKA是一种无监督的度量方法,可以处理不同模型生成的嵌入,即使它们的维度不完全相同。

检索结果相似性

当使用不同的嵌入模型时,对于给定查询检索到的文本块的相似性。虽然成对比较嵌入可以提供模型学习到的表示的相似性见解,但这不足以量化当这些嵌入模型被用于特定任务时结果的相似性。

首先,对于给定的数据集,使用每个嵌入模型为查询和文档块生成嵌入。然后,对于特定查询,根据余弦相似性检索最相似的𝑘个嵌入。为一对模型导出检索到的块集合C和C'。为了测量这些集合的相似性,可使用Jaccard相似系数。

实验与结果

实验设置
  • 实验数据集

作者从BEIR基准测试中选择了五个公开可用的数据集。考虑到为大型数据集生成嵌入是一个耗时的过程,尤其是对于大量模型,作者选择了基准测试中较小的五个数据集。这种方法允许作者比较由多种模型生成的嵌入,同时也允许跨数据集评估嵌入相似性。

数据集的概览显示在表1中。对于每个数据集,作者将文档分割成文本块,每个块包含256个令牌。

  • 实验模型

    • 选择了两个来自OpenAI的高性能专有模型(text-embedding-3-large和-small)和一个来自Cohere的模型(Cohere embedenglish-v3.0)

    • 选择SFR-Embedding-Mistral(Mistral)作为实验时排行榜上表现最好的模型

实验结果

(1)家族内和跨家族集群

使用CKA直接比较嵌入显示大多数模型之间的相似性很高,尽管存在一些差异。这些分数允许我们识别某些模型集群。

从跨家族的角度来看,我们观察到bge和gte模型之间的相似性很高。对于这两个家族中的一些模型,有趣的是,最高的相似性分数与具有匹配嵌入维度的跨家族对应模型相关,而不是与同一家族中的模型相关。

gte-small与bge-small的相似性最高,gte-base与bge-base的相似性最高。另一方面,gte-large与bge-base的相似性略高于bge-large,因此与嵌入维度较低的模型相似性更高。另一个跨家族集群由三个总体上CKA分数最高的模型组成,即UAE、mxbai和bge-large。

图3展示了NFCorpus上Jaccard相似性随k值的演变。第一个图表显示了bge-large与所有其他模型之间的Jaccard分数,而第二个图表展示了gte-large的分数。对于极低的k值,我们观察到几乎所有模型都出现了一些高峰,随后相似性显著下降。当然,对于较大的k值,分数趋于一致。

从实际角度来看,小k值的检索相似性最感兴趣。作者特别关注了top-10的Jaccard相似性。图4-6显示了跨数据集的模型间的top-10 Jaccard相似性。一个显著的发现是,即使是最相似的模型,报告的Jaccard相似性也仅高于0.6,大多数低于0.5。

(2)开源

CKA分数表明,OpenAI的模型(text-embedding-3-large/-small)生成的嵌入与Mistral生成的嵌入高度相似,而Cohere模型(embed-english-v3.0)与e5-large-v2显示出高相似性。

对于Cohere模型,虽然Mistral在所有数据集上对于较大的k值仍然是与OpenAI模型最相似的模型,但并没有一个一致的最相似模型对应于Cohere。

在更仔细地查看top-10相似性时,Mistral仍然在很大程度上表现出与OpenAI模型的最高相似性,特别是与text-embedding-3-large。对于text-embedding-3-small,所有数据集上的分数与其他模型相当接近。

实验结果分析

  • 对于小k值,检索相似性变化较大,这在实际应用中最为重要。即使CKA分数很高,top-10检索的低Jaccard相似性分数表明检索到的文本块重叠很少。

  • 即使直接比较时嵌入看起来相当相似,检索性能仍可能有很大差异,对于常用于RAG系统的k值最不稳定,并且也依赖于数据集。小k值检索的块重叠最少,导致呈现给LLM作为额外上下文的数据差异很大。

  • 尽管模型通常与同一家族的模型最相似,但跨家族集群确实存在。最突出的是bge-large-en-v1.5、UAE-Large-V1和mxbai-embed-large-v1。

  • SFR-Embedding-Mistral作为与OpenAI嵌入模型最相似的模型,但对于较大的数据集,top-10的Jaccard相似性显示检索到的文本块重叠很低。此外,对于Cohere的嵌入模型,作者无法找到一个最相似的模型。

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/470246.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

golang分布式缓存项目 Day1 LRU 缓存淘汰策略

注:该项目原作者:https://geektutu.com/post/geecache-day1.html。本文旨在记录本人做该项目时的一些疑惑解答以及部分的测试样例以便于本人复习。 LRU缓存淘汰策略 三种缓存淘汰策略 FIFO(First In, First Out)先进先出 原理&…

工业相机选取

1.相机分类: 1.1 在相机曝光方式中,全局曝光和卷帘曝光是两种主流技术。CCD相机通常采用全局曝光方式,而CMOS相机则可能采用卷帘曝光。 面阵相机与全局曝光关联与区别 关联:面阵相机可以使用全局曝光作为曝光方式,但…

如何查看电脑关机时间

要查看电脑的关机时间,可以按照以下步骤进行操作: 1. 打开事件查看器:按下键盘上的Windows键R键,然后在弹出的运行对话框中输入"eventvwr.msc",并按下Enter键。 2. 在事件查看器窗口中,单击左侧窗…

jwt用户登录,网关给微服务传递用户信息,以及微服务间feign调用传递用户信息

1、引入jwt依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency> 2、Jwt工具类&#xff0c;生成token以及解析token package com.niuniu.gateway.uti…

SQL练习(2)

题源&#xff1a;牛客官网 选择题 假设创建新用户nkw&#xff0c;现在想对于任何IP的连接&#xff0c;仅拥有user数据库里面的select和insert权限&#xff0c;则列表语句中能够实现这一要求的语句是&#xff08;&#xff09; A grant select ,insert on *.* to nkw% B grant…

【MySQL从入门到放弃】InnoDB磁盘结构(一)

前言 从MySQL 5.5版本开始默认 使用InnoDB作为引擎&#xff0c;它擅长处理事务&#xff0c;具有自动崩溃恢复的特性&#xff0c;在日常开发中使用非常广泛。 下面是官方的InnoDB引擎架构图&#xff0c;主要分为内存结构和磁盘结构两大部分。 上一篇文章&#xff0c;我们解析了…

RT-DETR融合CVPR[2020]轻量化卷积模块Ghost Module模块

RT-DETR使用教程&#xff1a; RT-DETR使用教程 RT-DETR改进汇总贴&#xff1a;RT-DETR更新汇总贴 《GhostNet: More Features from Cheap Operations》 一、 模块介绍 论文链接&#xff1a;https://arxiv.org/abs/1911.11907 代码链接&#xff1a;GitHub - huawei-noah/Effici…

《TCP/IP网络编程》学习笔记 | Chapter 11:进程间通信

《TCP/IP网络编程》学习笔记 | Chapter 11&#xff1a;进程间通信 《TCP/IP网络编程》学习笔记 | Chapter 11&#xff1a;进程间通信进程间通信的基本概念通过管道实现进程间通信通过管道进行进程间双向通信 运用进程间通信习题&#xff08;1&#xff09;什么是进程间通信&…

2024 kali操作系统安装Docker步骤

1、更新系统 在开始之前&#xff0c;确保你的Kali系统是最新的。打开终端并运行以下命令&#xff1a; apt update 2、安装 apt install docker.io 3、查看启动状态 systemctl status docker 4、安装完 Docker 后&#xff0c;启动 systemctl start docker 5、启动并使…

LLMs之Code:Github Spark的简介、安装和使用方法、案例应用之详细攻略

LLMs之Code&#xff1a;Github Spark的简介、安装和使用方法、案例应用之详细攻略 目录 Github Spark的简介 Github Spark的安装和使用方法 1、安装 2、使用方法 Github Spark的案例应用 Github Spark的简介 2024年10月30日&#xff0c;GitHub 重磅发布GitHub Spark 是一…

MySQL数据库:SQL语言入门 【上】(学习笔记)

SQL&#xff08;Structured Query Language&#xff09;是结构化查询语言的简称&#xff0c;它是一种数据库查询和程序设计语言&#xff0c;同时也是目前使用最广泛的关系型数据库操作语言。&#xff08;95%适用于所有关系型数据库&#xff09; 【 SQL是关系型数据库通用的操作…

腾讯云nginx SSL证书配置

本章教程,记录在使用腾讯云域名nginx证书配置SSL配置过程。 一、nginx配置 域名和证书,替换成自己的即可。证书文件可以自定义路径位置。服务器安全组或者防火墙需要开放80和443端口。 server {#SSL 默认访问端口号为 443listen 443 ssl; #请填写绑定证书的域名server_name c…

使用electron-egg把vue项目在linux Ubuntu环境下打包并安装运行

electron-egg一个入门简单、跨平台、企业级桌面软件开发框架https://www.kaka996.com/electron-egg 跳转地址 1,使用 git下载代码到本地,如果没有git需要进行安装 # gitee git clone https://gitee.com/dromara/electron-egg.git # github git clone https://github.com/dro…

Nginx配置自带的stub状态实现活动监控指标

场景 为了确保应用以最佳性能和精度运行&#xff0c;需要清晰地了解有关其活动的监控指标。 NGINX 提供了多种监控选项&#xff0c;例如 stub 状态。 注&#xff1a; 博客&#xff1a;霸道流氓气质-CSDN博客 实现 启用 NGINX stub 状态 启用 NGINX HTTP 服务器内 locati…

vscode下nuget包的本地引入方法

优势&#xff1a; nuget包的本地引入可以方便打包后的本地测试&#xff0c;确保打包正确、功能完善后再上传至nuget服务端本地引入方式也极为简单&#xff0c;三步操作即可搞定&#xff0c;熟悉之后这个操作2分钟内就可以搞定 具体步骤&#xff08;以引入Epic.RobotService包…

【知识科普】SPA单页应用程序介绍

SPA单页应用程序 概述和传统的多页应用有什么区别&#xff1f;用户体验架构和开发性能和优化SEO&#xff08;搜索引擎优化&#xff09;维护和扩展 如何优化SEO服务端渲染和预渲染有什么区别&#xff1f; 概述 SPA&#xff0c;全称为Single Page Application&#xff08;单页应用…

免费HTML模板和CSS样式网站汇总

HTML模板&#xff1a;&#xff08;注意版权&#xff0c;部分不可商用&#xff09; 1、Tooplate&#xff0c;免费HTML模板下载 Download 60 Free HTML Templates for your websitesDownload 60 free HTML website templates or responsive Bootstrap templates instantly from T…

深入理解接口测试:实用指南与最佳实践5.0(二)

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/cat…

【go从零单排】Random Numbers、Number Parsing

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 这里是引用 &#x1f4bb;代码 Random Numbers package mainimport ("fmt…

网页web无插件播放器EasyPlayer.js点播播放器遇到视频地址播放不了的现象及措施

在数字媒体时代&#xff0c;视频点播已成为用户获取信息和娱乐的重要方式。EasyPlayer.js作为一款流行的点播播放器&#xff0c;以其强大的功能和易用性受到广泛欢迎。然而&#xff0c;在使用过程中&#xff0c;用户可能会遇到视频地址无法播放的问题&#xff0c;这不仅影响用户…