论文链接:https://arxiv.org/pdf/2309.07597
本论文旨在构建一套通用中文文本嵌入的完整资源包——C-Pack,解决当前中文文本嵌入研究中数据、模型、训练策略与评测基准缺失的问题。论文主要贡献体现在以下几个方面:
- 大规模训练数据(C-MTP)
- 统一的评测基准(C-MTEB)
- 多尺度中文嵌入模型(BGE)
- 完整的训练方案
下面逐节对论文内容进行详细解读。
1. 摘要
-
资源组成
论文介绍了 C-Pack 这一资源包,它包含三大关键资源:- C-MTP:一个大规模的训练数据集,用于文本嵌入模型的学习,其中既包含从海量无标签语料中抽取的文本对,也整合了高质量标注数据;
- C-MTEB:一个专门为中文文本嵌入设计的评测基准,覆盖 6 种任务和 35 个数据集,能全面评估嵌入模型的各项能力;
- BGE:一系列预训练的中文嵌入模型,提供小型、基础和大型三个版本,用户可根据计算资源与任务需求进行选择。
-
性能提升与扩展
BGE 模型在 C-MTEB 上的整体表现比此前中文嵌入模型提升了超过 10%,此外,论文还同步发布了英文文本嵌入的训练数据和模型,其英文数据量甚至是中文数据的两倍。
2. 引言
-
文本嵌入的重要性
文本嵌入技术通过将文本映射到低维语义向量空间,成为搜索、问答、检索增强生成等多种任务的基础。随着大语言模型(LLMs)的快速发展,文本嵌入在连接外部知识库和工具模块方面扮演着至关重要的角色。 -
通用嵌入 vs. 任务特定嵌入
与仅针对某一任务优化的嵌入方法不同,通用文本嵌入要求模型具备足够的泛化能力,能够应对检索、排序、分类等多种应用场景。这对训练数据的规模、数据的多样性、清洗质量以及训练策略提出了更高要求。 -
当前挑战与动因
尽管近年来英文领域在此方向上取得了不少成果(如 Contriever、E5、GTR、OpenAI Text Embedding 等),但中文领域由于数据和基准缺失,仍面临严重制约。因此,构建适用于中文场景的通用嵌入系统尤为重要。
3. C-Pack 框架
论文的核心贡献是搭建了一个由数据、模型、评测以及训练方案构成的完整系统,下文详细介绍各个组成部分。
3.1 C-MTEB:中文文本嵌入评测基准
-
数据集构成
C-MTEB 汇集了 35 个公开数据集,并根据文本嵌入模型的能力分为 6 大任务:- 检索(Retrieval):
给定查询,在大规模文档库中找出最相关文档。主要评测指标为 NDCG@10。 - 重排序(Re-ranking):
针对候选文档(通常包含一个正样本和多个负样本)进行排序,主要指标为 MAP(平均精度)。 - 语义文本相似度(STS):
测量两个句子的语义相似性,采用 Spearman 相关系数作为指标。 - 分类(Classification):
使用逻辑回归等方法对文本进行分类,评测指标为平均准确率。 - 句对分类(Pair Classification):
针对句子对之间的二元关系进行分类,同样以平均准确率为评测指标。 - 聚类(Clustering):
采用 mini-batch k-means 聚类方法,通过 V-measure 分数来评估聚类质量。
- 检索(Retrieval):
-
统一评测流程
论文中构建了标准化评测协议和自动化评测管道,使得不同嵌入模型能在统一标准下进行公平对比,并且评测结果可直接提交至 C-MTEB 排行榜。
3.2 C-MTP:大规模中文文本对训练数据
-
数据规模与来源
C-MTP 包含两大部分:- 无标签部分(C-MTP unlabeled):
主要从开放网页(如百度百科、知乎、新闻网站等)中提取,构成 1 亿对文本对。这些文本对通过从标题-正文、问题-答案、摘要-全文等多种结构中抽取。 - 有标签部分(C-MTP labeled):
整合了来自 T2-Ranking、DuReader、mMARCO、NLI 等数据集,总计约 83.8 万对文本对,具备较高标注质量。
- 无标签部分(C-MTP unlabeled):
-
数据清洗策略
由于直接从海量数据中抽取的文本对可能存在噪声,论文采用了两步清洗:- 一般过滤: 去除非文本、重复或恶意内容。
- 语义过滤: 利用第三方模型 Text2Vec-Chinese 对每对文本计算语义相关性分数,并设定阈值(0.43)筛除相关性不足的样本。
3.3 BGE:BAAI 通用嵌入模型
-
模型架构与规模
BGE 模型基于 BERT 类架构,并经过三阶段训练:- 预训练;
- 对比学习;
- 任务特定微调。
提供三种模型规模:
- Small: 参数量 24M,适用于高吞吐量场景;
- Base: 参数量 102M,性能与效率兼顾;
- Large: 参数量 326M,在多个任务上表现最佳。
-
优势
实验表明,无论在检索、语义相似度还是分类等任务上,BGE 模型均大幅超越现有中文嵌入模型。此外,BGE 模型不仅可以直接用于下游应用,也为进一步任务特定的微调提供了坚实基础。
3.4 训练方案
训练方案分为三个阶段,每个阶段均针对提升文本嵌入的泛化能力设计。
3.4.1 预训练
-
目标与方法
在大规模未标注的文本数据上,使用自编码思想训练嵌入编码器。论文借鉴了 RetroMAE 的 MAE 风格预训练方法。其预训练目标如下:min ∑ x ∈ X − log D e c ( x ∣ e ( x ~ ) ) , e ( x ~ ) ← E n c ( x ~ ) \min \sum_{x \in X} -\log \mathrm{Dec}(x | e(\tilde{x})), \quad e(\tilde{x}) \leftarrow \mathrm{Enc}(\tilde{x}) minx∈X∑−logDec(x∣e(x~)),e(x~)←Enc(x~)
其中, X X X 表示干净文本集合, x ~ \tilde{x} x~ 为经过噪声处理的文本; E n c \mathrm{Enc} Enc 与 D e c \mathrm{Dec} Dec 分别为编码器和解码器。
3.4.2 对比学习
-
目的
利用从 C-MTP 无标签数据中获得的文本对,通过对比学习提升模型的辨识能力,使得正样本对的嵌入更为接近,而与负样本的距离更远。 -
损失函数
对比学习采用 in-batch 负样本,损失函数形式为:min ∑ ( p , q ) − log e ⟨ e p , e q ⟩ / τ e ⟨ e p , e q ⟩ / τ + ∑ q ′ ∈ Q ′ e ⟨ e p , e q ′ ⟩ / τ \min \sum_{(p,q)} -\log \frac{e^{\langle e_p, e_q \rangle/\tau}}{e^{\langle e_p, e_q \rangle/\tau} + \sum_{q' \in Q'} e^{\langle e_p, e_{q'} \rangle/\tau}} min(p,q)∑−loge⟨ep,eq⟩/τ+∑q′∈Q′e⟨ep,eq′⟩/τe⟨ep,eq⟩/τ
其中, ( p , q ) (p,q) (p,q) 为正样本对, q ′ q' q′ 表示负样本, τ \tau τ 为温度超参数, ⟨ ⋅ , ⋅ ⟩ \langle \cdot,\cdot \rangle ⟨⋅,⋅⟩ 表示向量内积。
-
批次策略
论文通过梯度检查点和跨设备嵌入共享等技术,实现了高达 19,200 的大批次规模,从而充分利用 in-batch 负样本,尤其对检索任务效果显著。
3.4.3 任务特定微调
-
数据与目标
使用 C-MTP 的有标签数据进行微调,以使模型在具体任务(如检索、分类、句对判断等)上获得更好的表现。 -
策略
- 指令微调(Instruction-based Fine-tuning):
为每个文本对附加一个任务指令 I t I_t It(例如“为查询搜索相关段落”),将输入由 ( p , q ) (p, q) (p,q) 转换为 q ′ = q + I t q' = q + I_t q′=q+It,以帮助模型区分不同任务需求。 - 硬负样本采样:
除了 in-batch 的负样本,还从任务原始语料中采样一个硬负样本,以进一步增强模型区分能力。
- 指令微调(Instruction-based Fine-tuning):
4. 实验与分析
论文通过大量实验验证了 C-Pack 的有效性,主要分为总体评估和详细消融分析两部分。
4.1 总体评估
-
评测设置
在 C-MTEB 基准上,论文评测了检索、STS、句对分类、分类、重排序和聚类等多个任务,并计算了各任务的平均性能作为整体指标。 -
对比模型
实验对比了 Text2Vec、Luotuo、M3E、多语种 E5 以及 OpenAI-Ada-002 等多种现有中文文本嵌入模型。 -
主要发现
- 显著超越: BGE 模型在各项任务上均取得了明显提升,特别是在检索和语义相似度任务上优势突出。
- 模型规模效应: 随着模型规模从 Small、Base 到 Large,整体性能呈现一致上升趋势。
- 跨语言扩展: 基于相同训练策略训练的英文嵌入模型在 MTEB 英文基准上也实现了最先进水平。
4.2 详细消融分析
-
训练数据的影响
- C-MTP (unlabeled): 单独使用无标签数据训练得到的中间模型(BGE-pretrain)在检索任务上就能明显超越其他基线模型;
- C-MTP (labeled): 通过在 BGE-pretrain 基础上进行有标签数据微调(BGE-finetune),整体平均性能从 59.0 提升到 63.96,尤其在检索、重排序、STS 和句对分类任务上效果尤为显著。
-
批次大小对比学习的作用
实验表明,增大批次大小(如从 256 到 19,200)能够稳定提升模型性能,主要原因在于更多的 in-batch 负样本使得嵌入向量具有更强的判别能力,尤其适用于大规模检索任务。 -
指令微调的效果
消融实验显示,若去除任务指令(即不采用 instruction-based 微调),模型在多任务上的表现会有所下降,证明任务指令在帮助模型适应不同任务中的关键作用。 -
预训练编码器的选择
实验还验证了专门预训练的文本编码器相较于通用预训练模型(如 Chinese-RoBERTa)的优势,特别在检索性能上,专用预训练的编码器能提供更优的语义表示。
5. 结论与贡献
-
资源开放性:
论文公开了最大规模的中文文本嵌入训练数据、统一的评测基准以及多尺度的 BGE 嵌入模型,为研究人员和应用开发者提供了一站式解决方案。 -
技术创新:
通过集成预训练、对比学习和任务特定微调的全链路训练方案,BGE 模型在多项任务上取得了显著性能提升,证明了大规模数据与精心设计训练策略在提升文本嵌入泛化能力方面的有效性。 -
应用前景:
除了直接支持搜索、问答、聚类等应用外,BGE 模型还可以作为下游任务微调的基础,从而推动中文自然语言处理各个方向的进步。
总的来说,本论文通过构建一整套从数据到评测再到模型训练的闭环体系,显著推动了中文文本嵌入领域的发展。C-Pack 不仅为当前研究提供了重要资源,也为后续方法的改进和应用落地奠定了坚实基础。