1
2
3
4
5
6
7
中文名:C-Pack:推进一般中文嵌入的打包资源
英文名:C-Pack: Packaged Resources To Advance General Chinese Embedding
最新版本:v4:12 May 2024
资源下载:https://github.com/FlagOpen/FlagEmbedding,5.7k Star
作者: Shitao Xiao, Zheng Liu, Peitian Zhang, Niklas Muennighoff, Defu Lian, Jian-Yun Nie
机构出处:北京人工智能研究院,抱抱脸,中国人民大学,中国科技大学,蒙特利尔大学,智源
正文:7 页

读后感

这篇论文的核心是:通用中文文本嵌入

读完之后,会对中文嵌入的模型效果、模型架构、评测方法和训练数据有更直观的了解。文档风格简洁明了,行动导向。

文中介绍的 BGE 模型是 Obsidian 插件 Smart Connection 的默认嵌入模型。我使用过,效果不错,速度也很。

摘要

目标: 介绍了 C-Pack,这是一个显著推进通用中文嵌入领域的资源包。

方法: C-Pack 包括三个关键资源:C-MTEB(涵盖 6 项任务和 35 个数据集的综合基准)、C-MTP(从标记和未标记中文语料中整理的大规模文本嵌入数据集)以及 BGE(BAAI 通用嵌入:覆盖多种规模的嵌入模型家族)。

结果: 模型 BGE/C-TEM 参数少,成本低,效果好,在 C-MTEB 上比之前的所有中文文本嵌入表现高出最多 10%,并且我们的英文文本嵌入模型在 MTEB 基准上达到了最新的性能标准。

1 引言

应用场景的多样性要求一个统一的嵌入模型。这个通用模型需要能够处理任何应用场景(例如,问答、语言建模、对话)中的各种用法(如检索、排序、分类)。

开发通用文本嵌入需要综合考虑多个因素,包括数据、编码器模型、训练方法和基准测试。这些因素共同驱动模型的改进。

2 C-Pack

2.1 Benchmark: C-MTEB

为了全面评估中文嵌入通用性,创建了 C-MTEB。我们进行了以下重要工作:

  • 全面收集数据集
  • 将数据集分类为文本嵌入的不同能力属性,例如检索、相似性分析、分类等
  • 标准化评估协议
  • 建立评估管道

总共收集了 35 个与中文文本嵌入评估相关的公共数据集。评估任务分为以下 6 组:

  • 检索(快速):对于每个查询,在语料库中找到 Top-k 相似的文档。
  • 重排序(精细):根据嵌入相似性对每个查询检索出的文档进行重新排名。
  • STS(语义文本相似性):根据两个句子的嵌入相似性衡量它们的相关性。遵循 Sentence-BERT 方法,用 Spearman 相关系数计算结果,并作为主要指标。
  • 分类:在分类任务中重用 MTEB 中的逻辑回归分类器,并以平均精度作为主要指标。
  • 配对分类:处理一对输入句子,其关系由二值标签表示,通过嵌入相似性预测这种关系。
  • 聚类:将句子分组为有意义的聚类。按照 MTEB 的设置,使用小批量 k-means 方法进行评估。批次大小为 32,k 值等于小批量中的标签数。

C-MTEB 的 Python 工具已在 GitHub 上提供,可直接使用。

2.2 训练数据:C-MTP

用于一般中文嵌入的训练。成对的文本构成了文本嵌入训练的数据基础,例如,一个问题及其答案、关于同一主题的两个文档。大多数数据来源于对大量未标记数据的整理,约有 1 亿个配对文本;另一小部分来自高质量标记数据的全面集成,即 C-MTP(标记),总计约有 100 万个配对文本。

未标记数据:从纯文本中提取丰富的语义成对结构,例如释义、标题和正文。为保证数据质量,采用复合数据清理策略优化原始数据。首先,进行一般过滤,去除非文本内容、重复内容和恶意内容。其次,通过语义过滤进一步处理数据,确保文本对在语义上相关。使用第三方模型 Text2VecChinese 对每个文本对的关系强度进行评分,并删除评分过低的数据。

标记数据来自 TRanking、DuReader、mMARCO、CMedQA-v2、multi-cpr、NLI-Zh、cmnli 和 ocnli 数据集。

考虑到规模和质量的差异,可以将 C-MTP(未标记)和 C-MTP(标记)应用于不同的训练阶段。

2.3 模型 BGE

模型基于类似 BERT 的架构,有三种可用的刻度:大(326M 参数)、基础(102M 参数)和小型(24M 参数)。验证表明,与 BGE 中的原始模型及其他通用预训练编码器(如 BERT)的微调模型相比,微调模型在应用中表现更好。

2.4 训练过程

训练过程由三个主要组成部分:

  • 预训练:使用纯文本进行训练,利用 Wudao 语料库。这是一个用于汉语模型预训练的庞大而高质量的数据集。被污染的文本被编码到嵌入空间中,通过轻量级解码器恢复干净文本,并使用 RetroMAE 作为损失函数。
  • 通用精调:使用未标记的 C-MTP 进行对比学习。通过区分配对文本和负例,利用 batch 内样本作为负例。
  • 特定任务精调:使用标记的 C-MTP 进行多任务学习。由于任务类型不同,其影响可能会相互矛盾。通过明确区分任务指令和改进负采样方法,减轻任务间相互矛盾的影响。

3 实验

3.1 通用模型评测

主实验是中文 Embedding 评测,结果如表 -2 所示:

BGE 在中文文本嵌入性能上显著优于现有方法。它在检索任务中表现尤为出色,其次是在 STS、配对分类和重新排名任务中。尽管模型大小和嵌入维度的增加会提升性能,但即使是最小的 BGE 模型,效果也相当不错。

表 3 和表 4 分别展示了消融实验以证明训练步骤的有效性以及不同批量大小(batch size)的影响。表 5 则是英文排行榜,这里不再展示图片。

4 当前排行榜

https://huggingface.co/spaces/mteb/leaderboard