【LLM论文日更】| BGE-M3E embedding模型

  • 论文:https://arxiv.org/pdf/2402.03216
  • 代码:GitHub - FlagOpen/FlagEmbedding: Retrieval and Retrieval-augmented LLMs
  • 机构:BAAI
  • 领域:embedding model
  • 发表

研究背景

  1. 研究问题:这篇文章要解决的问题是如何设计一种多语言、多功能、多粒度的文本嵌入模型,以支持超过100种工作语言的语义检索,并能同时完成密集检索、多向量检索和稀疏检索等多种检索功能。
  2. 研究难点:该问题的研究难点包括:现有方法在多语言支持、多功能集成和长文档处理方面的局限性;如何在训练过程中有效地整合不同检索功能的相关性分数;如何优化批处理策略以提高嵌入的判别力。
  3. 相关工作:该问题的研究相关工作包括预训练语言模型的发展、对比学习的进步以及多功能嵌入模型的探索,如Contriever、LLM-Embedder、E5、BGE、SGPT和Open Text Embedding等。

研究方法

这篇论文提出了M3-Embedding模型,用于解决多语言、多功能、多粒度文本嵌入的问题。具体来说,

  1. 数据收集与预处理:首先,从大规模的多语言语料库中提取无监督数据,并从标注语料库中收集相对较小但多样且高质量的微调数据。此外,通过合成稀缺的长文档检索任务数据来补充数据集。
  2. 混合检索:M3-Embedding统一了文本嵌入模型的常见检索功能,包括密集检索、词汇(稀疏)检索和多向量检索。其公式如下:
    • 密集检索:使用特殊标记"[CLS]"的隐藏状态表示查询,计算查询和段落嵌入的内积。
    • 词汇检索:计算查询中每个词的重要性权重,基于共现词的重要性计算查询和段落的相关性分数。
    • 多向量检索:利用整个输出嵌入表示查询和段落,使用晚期交互计算细粒度的相关性分数。
    • 最终的综合相关性分数:

      w1,w2,w3 的值取决于下游场景。
  3. 自知识蒸馏:提出了一种新的自知识蒸馏框架,将不同检索功能的相关性分数作为教师信号,增强学习过程。具体公式如下:
    • 原始损失函数:
    • 综合损失函数:
    • 最终的自知识蒸馏损失函数:
  4. 高效批处理:通过优化批处理策略,实现大批量和高效训练。具体方法包括按序列长度分组数据、使用梯度检查点技术以及跨GPU广播。

实验设计

  1. 数据收集:从多个来源收集大规模的多语言数据,包括无监督数据、标注数据和合成数据。无监督数据来自维基百科、S2ORC、xP3、mC4和CC-News等语料库;标注数据来自HotpotQA、TriviaQA、NQ、MS MARCO、COL-IEE、PubMedQA、SQuAD和SimCSE等数据集;合成数据通过采样维基百科、Wudao和mC4中的长篇文章并生成问题。
  2. 实验设置:采用XLM-RoBERTa作为基础模型,扩展最大位置到8192,并通过RetroMAE方法进行预训练。预训练数据包括Pile、Wudao和mC4数据集,共覆盖105种语言。微调阶段使用7个负样本进行训练,初始阶段进行约6000步的预热训练,随后进行统一的自知识蒸馏训练。

结果与分析

  1. 多语言检索:在MIRACL数据集上的实验结果表明,M3-Embedding在仅使用密集检索功能时,已经优于其他基线方法。稀疏检索和多向量检索进一步提升了性能,最终的综合检索方法(All)表现最佳。

  2. 跨语言检索:在Mrowka数据集上的实验结果显示,M3-Embedding在仅使用密集检索功能时,也显著优于其他基线方法。不同检索方法的结合进一步提升了跨语言检索的性能。

  3. 多语言长文档检索:在MLDR和NarrativeQA数据集上的实验结果表明,M3-Embedding在长文档检索任务中表现出色,尤其是稀疏检索方法(Sparse)和多向量检索方法(Multi-vec)。

  4. 消融研究:自知识蒸馏和多阶段训练的消融实验表明,自知识蒸馏显著提高了稀疏检索的性能,多阶段训练则进一步提升了整体检索质量。

总体结论

这篇论文提出的M3-Embedding模型在多语言检索、跨语言检索和多语言长文档检索任务中表现出色,展现了前所未有的多功能性和高效性。通过自知识蒸馏、高效批处理和高质数据预处理,M3-Embedding实现了优越的检索性能,并为未来的文本嵌入研究和应用提供了重要的资源。

论文评价

优点与创新

  1. 多语言支持:M3-Embedding能够支持超过100种工作语言,实现了跨语言的多语言检索和跨语言的检索。
  2. 多功能性:该模型不仅支持密集检索,还能进行稀疏检索和多向量检索,满足了不同的检索需求。
  3. 多粒度处理:M3-Embedding能够处理从短句子到长达8192个词的文档,适应了不同长度的输入数据。
  4. 自知识蒸馏:提出了一种新的自知识蒸馏方法,通过将不同检索功能的相关性分数作为教师信号来增强训练质量。
  5. 高效的批处理策略:优化了批处理策略,实现了大批次和高吞吐量训练,提高了嵌入的判别力。
  6. 高质量的数据集:进行了广泛且高质量的数据收集和整理,包括无监督数据、标注数据的微调和合成数据的生成。
  7. 实验验证:在多个多语言、跨语言和长文档检索基准上取得了最新的实验结果。

不足与反思

  1. 泛化能力:尽管在MIRACL和 MKVQA等流行的多语言和跨语言基准上取得了最新的实验结果,但该方法在不同数据集和实际场景中的泛化能力需要进一步研究。
  2. 长文档处理:虽然M3-Embedding能够处理长达8192个词的文档,但在处理极长文档时可能会面临计算资源和模型效率的挑战。对于超过指定标记限制的长文档或文档的性能需要进一步研究。
  3. 语言性能差异:虽然M3-Embedding声称支持超过100种工作语言,但对不同语言性能的潜在变化没有进行深入的讨论。需要在更广泛的范围内对更多语言进行分析和评估,以理解模型在不同语言家族和语言特征下的鲁棒性和有效性。

关键问题及回答

问题1:M3-Embedding模型在数据收集与预处理方面有哪些具体的策略?

  1. 无监督数据:从大规模的多语言语料库中提取无监督数据,包括维基百科、S2ORC、xP3、mC4和CC-News等语料库。这些数据被用来提取丰富的语义结构,如标题-正文、标题-摘要、指令-输出等。
  2. 标注数据:从多个标注数据集中收集相对较小但多样且高质量的微调数据。对于英语,使用了HotpotQA、TriviaQA、NQ、MS MARCO、COL-IEE、PubMedQA、SQuAD和SimCSE等数据集;对于中文,使用了DuReader、mMARCO-ZH、T2-Ranking、LawGPT、CMedQAv2、NLI-zh2和LeCaRDv2等数据集;对于其他语言,使用了Mr.TyDi和MIRACL等数据集。
  3. 合成数据:通过采样维基百科、Wudao和mC4中的长篇文章并生成问题,以补充长文档检索任务的稀缺数据。具体方法是随机选择段落并使用GPT-3.5生成问题,生成的问题和采样的文章构成新的文本对用于微调数据。

问题2:M3-Embedding模型如何实现混合检索功能,并且如何计算最终的综合相关性分数?

M3-Embedding模型实现了三种常见的检索功能:密集检索、词汇(稀疏)检索和多向量检索。具体实现方式如下:

  1. 密集检索:使用特殊标记"[CLS]"的隐藏状态表示查询,计算查询和段落嵌入的内积。公式如下:
  2. 词汇检索:计算查询中每个词的重要性权重,基于共现词的重要性计算查询和段落的相关性分数。公式如下:
  3. 多向量检索:利用整个输出嵌入表示查询和段落,使用晚期交互计算细粒度的相关性分数。公式如下:

问题3:M3-Embedding模型在自知识蒸馏方面有哪些创新,这些创新如何提高模型的性能?

这些创新使得不同检索功能的相关性分数可以相互补充,增强了模型的泛化能力和学习效果,特别是在稀疏检索方面表现尤为显著。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

(JAVA)熟悉队列的进阶结构 - 优先队列

1. 优先队列 ​ 普通队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。 ​ 在某些情况下,我们可能需要找出队列中的最大值或者最小值,例如使用一个队列保存计算机的任务,一般情况下计算机的任务都是有…

pytest框架之fixture测试夹具详解

前言 大家下午好呀,今天呢来和大家唠唠pytest中的fixtures夹具的详解,废话就不多说了咱们直接进入主题哈。 一、fixture的优势 ​ pytest框架的fixture测试夹具就相当于unittest框架的setup、teardown,但相对之下它的功能更加强大和灵活。 …

谁说电商选品找货源没有捷径,只要你用对工具!

最近跟很多同行聊,都在抱怨选品难的问题,都说7分靠选品,3分靠运营,对于选品来说,并没有捷径可走,但其实是有很多不同的角度的。 现在市面上大部分开发做的选品,“选品方法”或“产品分析方法”…

【含文档】基于Springboot+Android的校园论坛系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

前端省市区组件

官网 Element UI 级联 中国省市区数据. Latest version: 5.0.2, last published: 2 years ago. Start using element-china-area-data in your project by running npm i element-china-area-data. There are 114 other projects in the npm registry using element-china-are…

SpringBoot开发——SpringSecurity安全框架17个业务场景案例(三)

文章目录 一、Spring Security 常用应用场景介绍二、Spring Security场景案例12 表达式支持(Expression-Based)12.1 Spring Security 配置12.2 业务逻辑代码12.3 控制器13、安全上下文(Security Context)13.1 Spring Security 配置13.2 业务逻辑代码13.3 控制器14、安全过滤…

Python入门笔记(四)

文章目录 第九章 集合set9.1 创建集合:set()、集合生成式9.2 集合性质9.3 一些函数:issubset()、issuperset()、isdisjoint()9.4 集合增加元素:add()、update()9.5 集合删除元素:remove()、discard()、pop()、clear()9.6 创建不能…

用IntStream生成0到n的流,并找出不在numSet中的数字列表

这是用IntStream生成0到n的流,并找出不在numSet中的数字-CSDN博客的升级版 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。 先看这题低…

数据结构与算法——Java实现 32.堆

人的想法和感受是会随着时间的认知改变而改变, 原来你笃定不会变的事,也会在最后一刻变得释然 —— 24.10.10 堆 堆是基于二叉树实现的数据结构 大顶堆每个分支的上一个节点的权值要大于它的孩子节点 小顶堆每个分支的上一个节点的权值要小于它的孩子…

Linux系统通过编辑crontab来设置定时任务---定时关机

在Linux系统中,crontab 是用来设置周期性被执行的指令的守护进程。通过编辑 crontab,您可以安排定时任务,比如定时关机、定时备份文件、定时运行脚本等。以下是如何编辑 crontab 来设置定时任务的步骤: 打开终端:您可以…

25.第二阶段x86游戏实战2-背包属性补充

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

k8s 1.28.2 集群部署 MinIO 分布式存储

文章目录 [toc]MinIO 介绍MinIO 生产硬件要求MinIO 存储要求MinIO 内存要求MinIO 网络要求MinIO 部署架构分布式 MinIO复制的 MinIO 部署 MinIO创建目录节点打标签创建 namespace创建 pv创建 MinIO配置 ingress问题记录通过代理服务器访问 MinIO 的 Object Browser 界面一直显示…

免费获取的8个SVG图标库,轻松下载与复制!

SVG图标相比传统的JPG、PNG图标具有诸多优势,适用于各种类型的图像,不仅能在不同尺寸下保持清晰度,还具备高度压缩性和轻量特性,支持静态和动态效果。因此,SVG格式在网页设计中往往是优选。尽管如今有很多免费的图标库…

微信小程序-APP-软件开发

微信小程序开发,作为当下移动互联网领域的一股强劲势力,正以其便捷性、轻量化及高用户粘性的特点,深刻改变着我们的生活与工作方式。它不仅为企业和个人开发者提供了一个全新的服务入口,更极大地拓宽了商业应用的边界。 在微信小…

python+request+unittest+ddt自动化框架

参考资料: 用户中心 - 博客园 抓包模拟器笔记 肖sir__接口自动化pythonrequestddt(模版) - xiaolehua - 博客园 pythonrequestunittestddt自动化框架 博文阅读密码验证 - 博客园 肖sir__python之模块configparser - xiaolehua - 博客园 c…

byte[]/InputStream/MultipartFile之间进行转换

前言 问题产生: 最近开发项目的时候,遇到了文件上传对象转换的问题 -> 我在对接抖音开放平台的时候,有一个图片上传的接口,需要将byte[]转为MultipartFile 对象,但是发现根本没有这样的工具类,后面翻阅…

python list, tuple dict,set的区别 以及**kwargs 的基本用法

在python中, list, tuple, dict, set有什么区别, 主要应用在什么样的场景? 定义: list:链表,有序的项目, 通过索引进行查找,使用方括号”[]”; tuple:元组,元组将多样的对象集合到一起,不能修改,通过索引进行查找, 使用括号”()”; dict:字典,字典是一组键(key)和值(value…

多元线性回归:机器学习中的经典模型探讨

引言 多元线性回归是统计学和机器学习中广泛应用的一种回归分析方法。它通过分析多个自变量与因变量之间的关系,帮助我们理解和预测数据的行为。本文将深入探讨多元线性回归的理论背景、数学原理、模型构建、技术细节及其实际应用。 一、多元线性回归的背景与发展…

【杭州马拉松:文化之旅,感受千年古城的魅力】

杭州马拉松,作为国内外知名的马拉松赛事,一直以来都以其独特的魅力和严谨的组织而备受瞩目。今年,杭马将于11月3日再次鸣枪起跑,为跑者们提供一个挑战自我、超越极限的舞台。赛事主办方在今年的比赛中引入了多项创新举措&#xff…

经典蓝牙BLE版本区别:【图文讲解】

蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。一般将蓝牙3.0之前的BR/EDR蓝牙称为传统蓝牙,而将蓝牙4.0规范下的LE蓝牙称为低功耗蓝牙(BLE)。 1:蓝牙4.0 BLE 4.0版本是3.0版本的升级版本&a…