提纲
1 简介
2 数据
2.1 生成合成数据
2.2 开源数据集
3 模型训练
4 实验结论
5 讨论
参考文献
1 简介
刚介绍完基于AnglE的UAE-Large-V1,就发现微软最近发布的text embedding模型E5-mistral-7b-instruct登顶MTEB,并且甩出了第二名一段明显距离。 **E5-mistral-7b-instruct利用LLM产生了接近100种语言的高质量且多样化的训练数据,利用纯decoder的LLM在合成数据上进一步finetune。仅依靠合成数据训练得到的text embedding可以媲美目前主流的sota模型,而混合合成数据跟真实标注数据训练完成的text embedding模型在BEIR跟MTEB上都达到新的sota效果。**
2 数据
2.1 生成合成数据
**借助于目前火热的GPT3.5-Turbo,GPT4去生成训练数据,构建多种语言跟任务类型的数据来增强训练数据的多样性。** 从大类来看可以将合成数据分为两大类,即非对称任务跟对称任务,最终构建得到超过15万个task definition的包括93种语言的50万个训练样本,每个样本的格式为(task definition, user query, positive document, hard negative document)。
非对称类任务
Query跟document在语义上存在关联,但彼此不互为变体的任务,例如常见的文本检索任务。文中将非对称任务划分4个子类,短文本-长文本匹配,长文本-短文本匹配,短文本-短文本匹配以及长文本-长文本匹配。 **对于每个子类的数据生成,都需要设计两阶段的LLM prompt,第一阶段的prompt让LLM通过头脑风暴生成一系列符合要求的任务,然后第二阶段再根据前面生成的任务描述生成训练数据,** 在第二阶段可以通过配置诸多参数来控制生成数据的类型,长度,语种等信息,从而进一步提升多样性,详情可参照示例。之所以采用两阶段prompt的方式,在于只用一个prompt同时生成任务信息跟数据的方式发现数据的多样性比较差。
图1: 非对称类任务两阶段prompt示例
对称类任务
Query跟document语义相关,只是具有不同的表现形式,例如常见的STS任务。文中将对称类任务划分为2个子类,即STS跟bitext retrieval(两个语言的文本匹配)。为这两个子类设计了不同的prompt,让LLM直接生成相应的场景数据。
2.2 开源数据集
除了利用LLM生成数据外,研究人员还收集13个公共数据集,包括ELI5, HotpotQA, SQuAD, T2Ranking等。 跟合成数据混合后进行采样,最终保留了180万左右的训练数据。
3 模型训练
**mistral-7b-instruct的训练方式跟之前介绍的instructor相似,在query侧将task definition跟user query拼接到一起作为一个整体去生成query的向量表征,而document侧则不添加任何前缀。由于采用的纯decoder的语言模型Mistral-7b,会在query或者document后插入一个[EOS],然后一同输入到语言模型中,将[EOS]位置上最后一层的隐层表示作为句向量。训练损失采用的是常规的对比损失,希望task definition+user query跟positive document足够靠近,同时跟hard negative document或者其他batch的负样本足够疏远。**
4 实验结论
a) 从MTEB上看,仅用LLM生成数据训练得到的text embedding效果就很不错了,混合了合成数据跟真实监督数据训练得到的text embedding更是取得了新的sota效果。在多语言能力上,也有不俗的表现,文中认为在低资源语言上的表现稍差一筹在于基底模型Mistral-7b预训练语料主要是英语。
图2: MTEB上实验结果
图3: 多语言能力表现
b) **弱监督对比学习预训练是主流text embedding模型成功的一个关键因素,研究人员对比弱监督对比学习预训练对于纯encoder的XLM跟纯decoder的Mistral-7b的影响,发现不做预训练对于Mistral-7b几乎没有影响,这可能是因为自回归预训练任务已经让纯decoder的Mistral-7b具备获取高质量文本表征的能力,所以只要经过finetune就可以称为强大的text embedding模型了。**
图4: 弱监督对比学习的影响
5 讨论
**微软提出的E5-mistral-7b-instruct有三点值得注意,其一利用GPT4跟GPT3.5-Turbo生成了高质量的训练数据,hard negative对于text embedding的训练很是关键,之前也想过利用GPT4去生成多样化的(query,positive document),但是没想到hard negative也能一起生成。看起来只要利用得当,大部分任务的训练数据都可以通过GPT4生成了,再也不用担心缺乏高质量数据了。其二是无监督对比学习预训练对于纯decoder的模型没有影响,这虽然跟主流的text embedding训练思路所不同,但考虑到目前主流的text embedding采用的都是纯encoder的模型架构也就能理解了,这大概率是语言模型本身预训练任务的差异所带来的。其三是多语言,目前主流的text embedding基本都是单语言的,E5-mistral-7b-instruct的成功说明这个text embedding的训练过程是可以建立多语言能力的,真正通用化的text embedding一定是要具备这种能力的。**
相比于目前主流的text embedding模型,E5-mistral-7b-instruct的参数规模增加了数十倍,对应的text embedding也从常见的768,1024增加到4096,按照规模效应,这两点大概率也是会给模型的文本表征能力带来提升的,如果目前主流的text embedding模型也达到这个配置,跟E5-mistral-7b-instruct又有多少距离呢?另外,更大规模的语言模型跟表征维度,也增加了训练跟推理成本。最后,text embedding该不会也要朝着LLM的方向奔跑吧,从几百万参数,到现在的7B,以后会不会到130B,但是相比对无所不能的LLM需要发展各种能力,只需要输出一个高质量向量表征的text embedding应该不至于如此吧。
参考文献
- Improving Text Embeddings with Large Language Models