BGE(BAAI General Embedding)中的关键技术主要包括以下几个方面:
预训练技术
- RetroMAE预训练:在105种语言的网页数据和wiki数据上进行RetroMAE预训练,提供一个可以支持8192长度和面向表示任务的基座模型。通过随机Mask文本后进行encoding和重构,强迫encoder学习到良好的embedding。
- 无监督对比学习:在194种单语言和1390种翻译对数据共1.1B的文本对上进行大规模对比学习,采用in-batch negative sample方法和大batch size(如19200),通过正负样本对优化向量空间分布,增强语义区分能力。
检索优化技术
- 多检索方式统一优化:在高质量多样化的数据上进行多功能检索优化,使模型具备稠密检索、稀疏检索、多向量检索等多种检索能力。
- 自学习蒸馏:通过联合多种检索方式的输出,合并三种检索模式的输出得到新的文本相似度分数,将其作为激励信号,让各单模式学习该信号,以提高单检索模式的效果。
- 非对称指令添加方式:部分版本引入指令微调,将衡量文本相似度的任务转化为衡量带有instruction的文本相似度,instruction即为一段text prompt,用以说明domain、task等内容。
训练效率优化技术
- 文本分组与小批处理:根据长度对文本数据进行分组,确保一个batch内文本长度相对相似,从而减少填充。将一批数据分成多个小批,对于每个小批,利用模型编码文本,收集输出的向量同时丢弃所有前向传播中的中间状态,最后汇总向量计算损失,可以显著增加训练的batch size。
长文本优化技术
- MCLS方法:提出MCLS(Multiple CLS)方法来增强模型对长文本的建模能力,而无需对长文本进行微调。为每个固定数量的令牌插入一个cls令牌,每个cls令牌可以从相邻的令牌获取语义信息,最后通过对所有cls令牌的最后隐藏状态求平均值来获得最终的文本嵌入。