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

news2024/12/23 22:26:37

  • 论文: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.coloradmin.cn/o/2203958.html

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

相关文章

第十一章:规划过程组(11.18规划风险管理--11.24规划干系人参与)

前面几次考试几乎都考了风险管理的相关内容和试题~!尤其是下午题所以感觉还是挺重要的! 11.18 规划风险管理 11.18.1 风险基本概念 每个项目都在两个层面上存在风险:一是每个项目都有会影响项目达成目标的单个风险;二是由单个风险和不确定性的其他来源联…

RandLA-Net PB C++

tensorflow pb 模型 实现 c++ 部署 Code: https://github.com/QingyongHu/RandLA-Net RandLA-Net PB C++ randlanet_tf.h #ifndef RANDLANET_TF_H_

人工智能在免疫组化以及虚拟多重免疫荧光染色中的应用|文献速递·24-10-10

小罗碎碎念 这期推文准备了四篇文章,覆盖了AI在免疫组化、多重免疫组化以及虚拟多重免疫荧光染色中的应用。 目前来看,免疫组化这些技术大多用于验证,那么我们是否可以把从免疫组化分析得到的结论作为模型的先验知识,或者直接进…

vue3中 a-table设置某一个单元格的背景颜色

需求:根据某一个单元格中的某个条件不同,设置动态的颜色; 思路:通过官方文档提供的customCell进行判断设置不同的颜色背景,案例中进行了简单的行列判断,同学们可以根据自己的需求修改判断条件,动…

知乎信息流广告开户是啥政策?

作为国内领先的知识分享平台,知乎以其高质量的内容和精准的用户群体,成为了品牌营销的新蓝海。为了帮助更多企业抓住这一机遇,云衔科技正式推出知乎信息流广告开户及代运营服务,旨在为企业提供一站式的营销解决方案。 一、为什么…

mapbox解决wmts请求乱码问题

贴个群号 WebGIS学习交流群461555818,欢迎大家 事故现场 如图所示,wmts请求全是乱码,看起来像是将一个完整的请求拆成一个一个的字母了,而且控制台打印map.getStyle() 查看该source发现不出异常 解决办法 此类问题就是由于更…

服装生产管理的现代化:SpringBoot框架

2 关键技术简介 2.1 JAVA技术 Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译&#xff0…

私域电商新纪元:消费增值模式引领百万业绩飞跃

各位朋友,我是吴军,专注于带领大家深入探索私域电商领域的非凡魅力与潜在机会。 今天,我想与大家分享一个鼓舞人心的真实故事。在短短的一个月内,我们的合作伙伴实现了业绩的飞跃,突破百万大关,并且用户活跃…

怎么给视频调色,新手一键调色的技巧

视频调色是视频创作的灵魂,赋予影像色彩魅力,化平凡为视觉盛宴。调整视频的色调,唤醒画面生机,营造独特氛围。下面就来教大家如何快速给视频调色,揭秘高效调色秘籍,享受视觉情感双重盛宴,新手也…

Folx Pro – Mac平台上替代迅雷的首选下载器

虽然许多人认为迅雷是 mac 系统上最好的下载管理器,但实际上,如果你不花钱购买会员,迅雷下载速度会非常慢,因为会出现云限速。即使你花了数百元购买白金或超级会员,也面临着敏感资源被封禁无法加速下载的问题&#xff…

【功能模块】-- 水印

目录 👊🏻实现思路 创建canvas 创建div并添加canvas 将div加入document中 具体实现 创建canvas 创建div并添加canvas 将div加入document中 总结 很多时候,我们会遇到各种各样的需求。今天我们来讲讲水印的实现方式,通俗易…

镭速助力解决企业大文件传输难题

在数字化时代,数据已成为企业的核心资产。无论是高清视频、大规模数据库备份还是复杂的3D设计文件,企业每天都要处理大量数据。然而,在享受数据带来的便利和价值的同时,企业也面临着一个现实问题——如何高效、安全地传输大文件&a…

Spring框架 - 下篇

预备知识:MyBatis Spring框架-上篇 文章目录 注解开发注解开发定义bean纯注解开发bean管理bean作用范围、生命周期 依赖注入自动装配加载properties文件 第三方bean第三方bean管理第三方bean依赖注入 总结 Spring整合MyBatis小结 整合junitAOPAOP简介AOP核心概念A…

穷人就不该乱买电车

文 | AUTO芯球 作者 | 雷慢 买车最怕的是什么你知道吗? 是没钱的穷人还要去买豪华电车, 比买电车更可怕的是什么你知道吗? 是买了电车没两年又卖了! 真不是讲鬼故事, 新能源车尤其是纯电车,一年打五折…

压缩包格式详解:RAR、ZIP、7z等格式的优劣与使用场景

随着数字信息的迅猛增长,文件压缩已成为日常生活和工作中的必要操作。通过压缩技术,文件可以被减小体积,便于传输和存储。 目前,市面上常见的压缩格式有 RAR、ZIP 和 7z 等,不同的压缩格式在效率、兼容性和功能方面各…

FFmpeg 简介及其下载安装步骤

目录 一、FFmpeg 简介 二、FFmpeg 安装步骤 2.1 打开官网 2.2 选择FFmpeg系统版本 2.3 下载FFmpeg压缩包 2.4 将下载好的压缩包进行解压 2.5 设置环境变量 2.5.1 在搜索栏中搜索【环境变量】,然后单击将其打开 2.5.2 找到系统变量中的【Path】,点…

实景三维赋能地下管线综合智管应用

在现代城市基础设施管理中,地下管线作为城市的生命线,其安全、高效的管理至关重要。随着实景三维技术的快速发展,地下管线管理迎来了新的发展机遇。本文将探讨实景三维技术如何赋能地下管线的综合智管应用。 一、地下管线管理面临的挑战 地…

Qt_软件添加版本信息

文章内容: 给生成的软件添加软件的版权等信息 #include <windows.h> //中文的话增加下面这一行 #pragma code_page(65001)VS_VERSION_INFO VERSIONINFO

java遍历数组填充排序

java数组 遍历数组 for循环 遍历二维数组 小案例 // 定义一个包名为nb package nb;// 定义一个名为ErWei的公共类 public class ErWei {// 主方法&#xff0c;程序的入口点public static void main(String[] args) {// 声明并初始化一个二维数组a&#xff0c;其中包含三个一…

jdbc连接数据库时 java.lang.RuntimeException错误解决

url中加入 useSSLfalse SSL(Secure Sockets Layer)&#xff0c;安全套接字协议。 在连接mysql时&#xff0c; 如果MySQL的版本为5.7以上时&#xff0c;必须加上useSSLfalse&#xff0c;直接通过用户账号和密码进行连接MySQL数据库&#xff1b;当MySQL的版本是5.7以下则不进行…