【LLM论文日更】| BGE经典论文-CPACK

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

研究背景

  1. 研究问题:这篇文章要解决的问题是如何显著推进中文通用文本嵌入领域的发展。具体来说,作者提出了C-Pack,一套资源包,包括三个关键资源:C-MTP(中文大规模文本对训练数据集)、C-MTEB(中文大规模文本嵌入基准)和BGE(BAAI通用嵌入模型家族)。
  2. 研究难点:该问题的研究难点包括:需要大规模、多样化的训练数据来提高嵌入模型的判别力;需要扩展模型规模和训练数据规模以提高模型的泛化能力;需要优化训练方法,包括预训练、对比学习和任务特定的微调;需要建立适当的基准来全面评估文本嵌入的通用性。
  3. 相关工作:该问题的研究相关工作有:Contriever、GTR、Sentence-T5、Sentence-Transformer、E5、OpenAI文本嵌入等。这些工作主要集中在英文场景下的通用文本嵌入,而中文领域的相关研究和资源较为匮乏。

研究方法

这篇论文提出了C-Pack来解决中文通用文本嵌入的问题。具体来说,

  1. C-MTEB(中文大规模文本嵌入基准):C-MTEB是MTEB的中文扩展,收集了35个公开可用的数据集,涵盖6种任务类型。通过标准化评估协议和建立评估管道,确保不同嵌入模型可以在公平的基础上进行评估。

  2. C-MTP(中文大规模文本对训练数据集):C-MTP由两部分组成:C-MTP(未标记)和C-MTP(标记)。C-MTP(未标记)来自大规模无标签网络语料库,如百度百科、知乎和新闻网站,共1亿对文本。C-MTP(标记)来自高质量标记数据集的整合,共83.8万对文本。数据经过过滤和语义过滤,确保文本对的语义相关性。

  3. BGE(BAAI通用嵌入模型家族):BGE基于BERT架构,提供三种模型规模:小型(0.24亿参数24M)、基础(1.02亿参数102M)和大型(3.26亿参数326M)。模型经过三个阶段训练:预训练、通用对比学习和任务特定微调。

  4. 训练方法:训练方法包括预训练、通用对比学习和任务特定微调。预训练使用Wudao语料库,采用MAE(masked autoencoder)风格的方法。通用对比学习在C-MTP(未标记)上进行,通过对比成对文本和其负样本进行学习。任务特定微调在C-MTP(标记)上进行,结合指令微调和硬负样本挖掘。

实验设计

实验设计包括以下几个方面:

  1. 数据收集:C-MTP(未标记)主要来自百度百科、知乎、新闻网站等大规模无标签网络语料库。C-MTP(标记)来自T2-Ranking、mMARCO-Zh、DuReader等高质量标记数据集。
  2. 样本选择:C-MTP(未标记)共1亿对文本,C-MTP(标记)共83.8万对文本。数据经过过滤和语义过滤,确保文本对的语义相关性。
  3. 参数配置:BGE模型提供三种规模:小型(2.4亿参数)、基础(1.02亿参数)和大型(3.26亿参数)。对比学习采用大批量(最大19200),以提高嵌入的判别力。

结果与分析

  1. 总体性能:BGE模型在C-MTEB上的平均性能显著优于现有中文文本嵌入模型,特别是在检索任务和STS任务上。大型模型的泛化能力最强,小型模型在保持较高性能的同时,更适合高通量应用。

  1. 数据集分析:C-MTP(未标记)对嵌入的检索质量有显著影响,而对其他任务的影响较小。C-MTP(标记)在检索、重排序、STS和成对分类任务上有显著提升。

  1. 训练方法分析:对比学习采用大批量显著提高了嵌入质量,特别是在检索任务上。指令微调显著提升了任务特定微调的质量,特别是在检索、STS、成对分类和重排序任务上。

总体结论

这篇论文提出了C-Pack,一套全面的资源包,用于推动中文通用文本嵌入领域的发展。C-Pack包括C-MTEB、C-MTP和BGE,并通过优化的训练方法实现了显著的性能提升。实验结果表明,BGE模型在C-MTEB上取得了最先进的性能,验证了C-Pack的有效性和实用性。C-Pack的发布为中文通用文本嵌入的开发、评估和应用提供了坚实的基础,推动了该领域的进一步发展。

论文评价

优点与创新

  1. C-MTEB基准:建立了C-MTEB,作为C-MTEB的中国扩展,收集了35个公开数据集,涵盖6种任务类型,并标准化了评估协议和管道。
  2. C-MTP训练数据:创建了一个包含1亿对文本的大规模训练数据集,主要来源于网络语料库,并通过语义过滤和数据清理策略提高了数据质量。
  3. BGE模型系列:提供了一组预训练的中文通用文本嵌入模型,包括小(24M参数)、基础(102M参数)和大(326M参数)三种规模,显著提升了模型在C-MTEB上的表现。
  4. 训练方法:整合并优化了训练方法,包括嵌入导向的预训练、通用对比学习和任务特定的微调,帮助社区复现最先进的模型并进行持续改进。
  5. 英文数据集:除了中文数据集外,还发布了英文文本嵌入的数据集,并且英文模型在英文MTEB基准上达到了最先进的表现。
  6. 广泛认可:项目在技术社区中广受欢迎,BGE模型系列自发布以来在HuggingFace上获得了超过2000万的下载量,并被多个主要的RAG和文本嵌入框架集成。

不足与反思

  1. 数据集规模和质量:尽管C-MTP是无标签数据集的主要来源,但其规模和质量仍需进一步提高,以更好地支持嵌入模型的训练。
  2. 模型微调:尽管任务特定的微调显著提升了模型性能,但如何更有效地利用不同类型的标注数据进行微调仍需进一步研究。
  3. 对比学习:虽然使用了大批量的对比学习,但如何进一步优化负样本的选择和生成策略仍需探索。
  4. 多任务学习:多任务学习策略在一定程度上缓解了不同任务之间的冲突,但仍需进一步研究如何平衡不同任务的训练效果。

关键问题及回答

问题1:C-MTEB基准是如何构建的?其主要目的是什么?

C-MTEB(Chinese Massive Text Embedding Benchmark)是MTEB(Massive Text Embedding Benchmark)的中文扩展。其主要目的是建立一个全面评估中文文本嵌入通用性的基准。C-MTEB通过以下步骤构建:

  1. 数据收集:收集了35个公开可用的中文数据集,这些数据集涵盖了检索、重排序、语义文本相似度(STS)、分类、对分类和聚类等6种任务类型。
  2. 标准化评估协议:为了确保不同嵌入模型可以在公平的基础上进行评估,C-MTEB设立了标准化的评估协议。
  3. 评估管道:建立了评估管道,使得不同任务类型的评估可以自动化进行,并便于结果的提交和比较。

通过这些步骤,C-MTEB能够全面测量中文嵌入模型在不同任务上的表现,从而提供一个可靠的评估平台。

问题2:C-MTP训练数据集是如何构建的?其组成和规模如何?

C-MTP(Chinese Massive Text Pairs)训练数据集由两部分组成:C-MTP(未标记)和C-MTP(标记)。

  1. C-MTP(未标记):主要来自大规模无标签语料库,如百度百科、知乎和新闻网站,共1亿对文本。这些数据通过从网页中提取标题-正文、副标题-段落、问题-答案等结构形成文本对。数据经过一般过滤和语义过滤,以确保文本对的语义相关性。
  2. C-MTP(标记):集成了多个高质量的标记数据集,如T2-Ranking、DuReader和NLI-Zh,共838,465对文本。这些数据主要用于进一步增强训练数据的质量。

总体来看,C-MTP(未标记)提供了大规模的无标签数据,而C-MTP(标记)则提供了高质量的标注数据,两者共同用于训练和微调文本嵌入模型。

问题3:BGE模型是如何训练的?其训练过程包括哪些主要阶段?

BGE(BAAI General Embeddings)模型基于BERT架构,提供三种模型规模:小型(24M参数)、基础(102M参数)和大型(326M参数)。其训练过程包括以下主要阶段:

  1. 预训练:使用Wudao语料库进行预训练,采用MAE(Masked Autoencoder)风格的方法。预训练的目标是将污染文本编码成其嵌入,并在其上恢复干净文本。
  2. 通用对比学习:在C-MTP(未标记)数据集上进行对比学习,通过大规模无标签数据集学习区分正样本和负样本。
  3. 任务特定微调:在C-MTP(标记)数据集上进行任务特定的微调。微调过程中结合了指令微调和硬负样本挖掘。指令微调通过为每个文本对附加任务特定的指令来帮助模型适应不同任务。

通过这三个阶段的训练,BGE模型能够在各种任务上实现高性能。

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

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

相关文章

MySQL插入优化-性能对比

插入优化主要包括: 批量插入条数据,而不是单个记录逐条插入。手动提交事务,避免自动提交事务带来的额外开销。使用load命令从本地文件导入。 性能对比 创建数据库表 CREATE TABLE if not exists tb_sku ( id int(20) …

防汛可视化系统:提升应急响应能力

通过图扑可视化系统实时监测水情、雨情和地理数据,辅助防汛决策与调度,提供直观的风险预警信息,从而优化资源分配,提高防汛应急响应效率。

​​​​​​​如何使用LTX Studio生成故事插画

在这个科技飞速发展的时代,人工智能已经成为创意领域的重要工具。LTX Studio 是一个强大的平台,可以帮助你将文字故事生成精美的插画。以下是详细的步骤,教你如何使用LTX Studio 生成故事插画。 生成prompt、: 使用copilot实现&…

SD2.0 Specification之SD卡寄存器(Card Register)

文章目录 CID(Card IDentification)RCA(Relative Card Address)DSR(Driver Stage Register)CSD(Card-Specific Data)SCR(SD CARD Configuration Register)OCR(Operation Conditions Register)SSR(SD Status Register)CSR(Card Status Register) 本文章主要讲解SD2.0的各个卡寄存…

望繁信科技成功签约国显科技 流程挖掘助力制造业智造未来

近日,上海望繁信科技有限公司(简称“望繁信科技”)成功与深圳市国显科技有限公司(简称“国显科技”)达成合作。国显科技作为全球领先的TFT-LCD液晶显示及Mini/Micro LED显示产品供应商,致力于为笔记本、手机…

Linux云计算 |【第四阶段】RDBMS2-DAY4

主要内容: MHA概述、部署MHA集群 一、MHA概述 1、MHA简介 MHA(Master High Availability)是一款开源的MySQL的高可用程序,由日本DeNA公司youshimaton开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的…

Jenkins pipeline语法笔记

Jenkins pipeline 简介Jenkins Pipeline 优势DSL 是什么 pipeline支持两种语法:声明式pipeline语法:Pipelineagent Pipeline 声明式语法DeclarativeenvironmentoptionsparameterstriggerstoolsinputwhenParallel Pipeline Scripted语法流程控制Declarati…

罗永浩力荐格行随身WiFi,背后原因竟是...你绝对想不到!

一、罗永浩的“严选”哲学 虽然罗永浩做的是直播带货,但是他的形象与其他头部主播之间有着明显的不同。那些头部主播,都可以统称为“电商主播”,他们与那些淘宝店、京东店里直播的商家本质是一样的,只有流量和名气大小不同罢了。…

SpringBoot开发部署(热部署+常规部署+Docker部署)

开发热部署 SpringBoot模板引擎的页面默认是开启缓存的,如果修改了页面,则刷新页面是得不到修改后的页面的 在application.properties中关闭模板引擎缓存 Thymeleaf spring.thymeleaf.cachefalseFreeMarker spring.freemarker.cachefalseGroovy spring…

拓扑排序与入度为0的结点算法解析及实现

拓扑排序与入度为0的结点算法解析及实现 算法思想时间复杂度分析伪代码C语言实现环路检测结论拓扑排序是一种用于有向无环图(DAG, Directed Acyclic Graph)的重要操作,它可以对图中的结点进行排序,使得对于每一条有向边 (u, v),顶点 u 在排序中都出现在顶点 v 之前。本文介…

PVC刻字膜高精度模切应用

PVC刻字膜是一种由聚氯乙烯(PVC)为主要成分制成的薄膜材料,具有耐磨、耐刮、耐水、耐油以及良好的化学稳定性等特点。这种薄膜在多个行业中得到广泛应用,特别是在服装、鞋业、箱包、汽车内饰等领域,用于制作各种标识、…

C语言 | 第十四章 | 指针运算 指针数组 多重指针

P 131 断点调试应用案例&#xff08;2&#xff09;2023/2/3 一、应用案例 案例一&#xff1a;用调试查看数组越界异常。 #include<stdio.h> void main(){int arr[] {1,2,3,4,5};int i 0;int len sizeof(arr) / sizeof(int);for(i 0; i < len; i) { // 这里不…

代码随想录训练营Day29 | 93.复原IP地址 | 78.子集 | 90.子集II

学习文档&#xff1a;代码随想录 (programmercarl.com) 学习视频&#xff1a;代码随想录算法公开课 | 最强算法公开课 | 代码随想录 (programmercarl.com) Leetcode 93. 复原 IP 地址 题目描述 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&…

6. PH47 代码框架硬件开发环境搭建

概述 PH47代码框架的硬件开发环境搭建同样简单&#xff0c; 建立基本的 PH47 框架学习或二次开发的硬件开发环境所需设备如下&#xff1a; BBP 飞控板及相关软硬件: BBP飞控板&#xff0c;或者至少一块Stm32F411核心板&#xff08;WeAct Studio&#xff09;Stm32程序烧录工具…

【Vue3 + TS + Vite】从0到1搭建项目框架

前言 没搭建过Vue3的项目&#xff0c;从0开始搭建一下&#xff0c;记录一下自己的步骤。 技术栈&#xff1a; vue3 ts scss pinia vite 我尽量写的详细一些&#xff0c;后续也会记录我在项目过程中&#xff0c;遇到的一些问题。 文章目录 前言环境搭建一、创建项目1. 使用…

Java->排序

目录 一、排序 1.概念 2.常见的排序算法 二、常见排序算法的实现 1.插入排序 1.1直接插入排序 1.2希尔排序(缩小增量法) 1.3直接插入排序和希尔排序的耗时比较 2.选择排序 2.1直接选择排序 2.2堆排序 2.3直接选择排序与堆排序的耗时比较 3.交换排序 3.1冒泡排序…

【WEB应用安全测试指南–蓝队安全测试2】--超详细-可直接进行实战!!!亲测-可进行安全及渗透测试

安全基础理论入门知识参考上一篇《WEB应用安全测试指南蓝队安全测试1》 WEB应用安全测试指南2 一、文件 I/O 类1.1、任意文件上传1.2、任意文件下载1.3、文件包含 二、接口安全类2.1、短信炸弹2.2、邮件炸弹2.3、短信内容可控2.4、邮件内容可控 三、逻辑流程类3.1、越权3.2、未…

变阻器的未来发展趋势和前景如何?是否有替代品出现?

变阻器是一种用于调节电路中电阻值的电子元件&#xff0c;广泛应用于各种电子设备和系统中。随着科技的不断进步和应用领域的扩展&#xff0c;变阻器的未来发展趋势和前景备受关注。 未来变阻器将趋向于智能化和多功能化&#xff0c;随着物联网、人工智能等技术的快速发展&…

其他:python语言绘制案例

文章目录 介绍导入python包图1图2 介绍 python语言的科研绘图合集&#xff0c;数据来源Hydrogen-diffusion-and-water-rock-reaction 导入python包 import pandas as pd import glob import proplot as pplt import seaborn as sns import numpy as np import matplotlib.py…

java时间复杂度与空间复杂度的排序

怎么理解时间复杂度和空间复杂度 时间复杂度和空间复杂度一般是针对算法而言&#xff0c;是衡量一个算法是否高效的重要标准。先纠正一个误区&#xff0c;时间复杂度并不是算法执行的时间&#xff0c;再纠正一个误区&#xff0c;算法不单单指冒泡排序之类的&#xff0c;一个循…