问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

预训练模型语义相似性计算:M3E和BGE详解

创作时间:
作者:
@小白创作中心

预训练模型语义相似性计算:M3E和BGE详解

引用
CSDN
1.
https://blog.csdn.net/choose_c/article/details/139246631

在自然语言处理领域,预训练模型的语义相似性计算是衡量模型性能的重要指标之一。本文将介绍两种在该领域具有代表性的预训练模型:M3E和BGE。

M3E

M3E由MokaAI训练并开源。其主要特点如下:

  1. 大规模中文句对数据集:包含超过2200万个中文句对数据,且已开源。
  2. 多功能支持:支持同质相似句计算(s2s)和异质检索(s2p),未来还将支持代码检索。
  3. 基座模型:基于RoBERTa架构,支持进一步微调。

BGE

BGE由北京智源人工智能研究院发布,相关研究论文为《C-Pack: Packed Resources For General Chinese Embeddings》。该论文推出了一个全面的中文嵌入资源包C-Pack,其中包括:

  1. C-MTP:一个大型的文本嵌入训练集,包含大量非监督语料库和高质量标注的有监督语料库。
  2. C-MTEB:一个涵盖6个任务和35个数据集的中文文本嵌入基准。
  3. BGE:一系列多尺寸的文本嵌入模型。

所有相关资源可在GitHub仓库FlagOpen/FlagEmbedding中获取。

BGE的训练流程

  1. 预训练:在大规模高质量中文语料上采用RetroMAE风格的预训练方法。
  2. 通用微调:在C-MTP无监督语料上进行对比学习,通过增大批次来增强嵌入的判别性。
  3. 特定任务微调:在C-MTP有监督语料上进行指令微调,并为每个文本对挖掘硬负样本(ANCE)。

BGE-m3

BGE-m3是一个具有多语言、多粒度和多功能特性的文本嵌入模型。其主要特点包括:

  1. 多语言支持:支持超过100种语言。
  2. 多粒度处理:能够处理最多8192个token的输入。
  3. 多功能性:支持密集检索、多向量检索和稀疏检索。

技术贡献

  1. 自我知识蒸馏方法:通过集成来自不同检索功能的相关性分数作为教师信号,以提高训练质量。
  2. 优化的批处理策略:实现大批量和高训练吞吐量,确保嵌入的判别性。

混合检索方法

  • 密集检索:使用[cls]表示query向量,通过内积计算相关性。
  • 词汇(稀疏)检索:基于公共token的权重计算相关性。
  • 多向量检索:计算query和passage token之间的相关性(参考colBERT)。

自我知识蒸馏过程

  1. 第一步:在无监督数据上使用密集检索损失进行对比学习。
  2. 第二步:在有监督语料上使用自我知识蒸馏训练,其中混合检索损失作为教师模型的监督信号。

训练流程优化

  • 文本长度采样:确保每个批次内的文本长度相对一致,以减少填充。
  • 分批处理:将一个批次的数据分成多个小批次,编码文本并收集向量,最后汇总计算损失。

长文本优化

  • MCLS(Multiple CLS):在固定数量的token之间插入cls token,通过平均所有cls token的最后隐藏状态来获得最终的文本嵌入。

注:BGE中使用的其他技术(如RetroMAE、ANCE等)在BGE-m3中仍然适用。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号