资讯动态

《M3-Embedding》汇报

发布时间:2026/10/29 10:25:49 来源:尧图企业网站定制
1. 任务本周任务是汇报《M3-Embedding》的思想。2. 《M3-Embedding》现有文本嵌入模型的不足1语言问题文本有很多种语言需要为每种语言都训练一共模型吗2功能问题有时候是关键词搜索例如八段锦的好处有时候是一句话例如对他人的期待是不是欲望需要同时部署关键词检索和语义检索两套系统吗在原心法系统里面是73的比例混合3长度问题有时候只需要检索一句话有时候需要检索一份很长的文档。M3-Embedding特点1多语言支持100多种语言的检索甚至能跨语言检索比如用中文问题找英文答案。2多功能同时具备三种检索能力密集检索理解语义解决“一句话提问”的问题。在M3模型里它使用[CLS]这个特殊标记的隐藏状态来代表整个句子的“感觉”嵌入向量。稀疏检索理解关键词权重解决“关键词提问”的问题。在M3模型里模型会为每个Token输出一个权重然后计算共同Token的加权和。多向量检索进行更精细的匹配用于对候选结果进行重新精准排序。在M3模型里它使用所有输出Token的嵌入进行精细的“晚期交互”匹配。3多粒度能处理从短句到长达8192个token约5000-6000汉字的长文档。技术点1自知识蒸馏 让三种检索方法相互学习和协同而不是独立工作。训练流程①预训练阶段无监督的对比学习输入Query(查询)、Answer(答案/文档)训练数据12亿 对无监督的多语言数据。过程与方法模型图中的M3接收查询和答案。在这个阶段训练目标相对单纯主要是通过对比学习来优化密集检索的分数。模型学习让正样本匹配的Query-Answer对的dense score(密集分数) 更接近而负样本的分数更远离。②微调有监督的对比学习和自知识蒸馏输入同样是Query和Answer。训练数据标注数据包括英文、中文和其他多语言的监督数据、合成数据为解决长文档检索任务而专门生成的数据自知识蒸馏多功能并行计算对于同一个输入模型会同时计算出三种不同的相关性分数dense score(密集检索分数)、lex score(稀疏检索分数)、multi-vec score(多向量检索分数)生成“教师信号”将这三个分数通过加权融合得到一个更强大、更稳健的Inter score(综合分数)。这个综合分数扮演了“教师”的角色。知识蒸馏模型在训练时不仅要让每个单独的分数dense,lex,multi-vec去拟合真实的数据标签还要让它们去拟合这个更优秀的“教师信号”Inter score。模型的总损失函数由两部分组成InfoNCE损失让每个单独方法的分数能够正确区分正样本和负样本即让正样本的分数高于负样本。蒸馏损失让每个单独方法的分数分布经过softmax转换接近综合分数的分布也经过softmax。这通常使用KL散度来实现。在使用阶段可以指定使用一种方式也可以综合使用。无论选择哪种模型在训练中被“蒸馏”过了因此每个单独的功能都比独立训练时更强。2高效批处理训练长文档的常见做法为了最大化利用GPU①截取传统的训练方法通常通过将输入序列截断至模型最大长度来维持较大的批次规模但这会导致模型无法学习长距离依赖关系从而丧失对长文档的理解能力②填充对于一个批次里所有不够长的序列在末尾或开头添加一种特殊的、无意义的[PAD]标记直到它们都和这个批次里最长的序列一样长GPU内存被大量无用的[PAD]占据。M3做法①基于序列长度的动态分组批处理模型在训练前先将训练数据按其token长度分组。例如0-500, 500-1000, ..., 7000-8192。在训练过程中是同组批处理每个训练批次内的所有样本均从同一长度分组中抽取。GPU可以同时处理更多有意义的文本数据而不是无用的填充符。② 分批次编码与梯度检查点对于处理超长序列如8192 tokens的批次即使经过长度分组其内存占用量依然可能超出单张GPU的容量。为此模型进一步将单个批次划分为若干个更小的子批次。分批次编码在前向传播过程中系统性地只保留子批次的输入和输出而舍弃中间激活值。在反向传播时根据需要重新计算这些中间结果。这种以计算时间换取内存空间的方法使得在有限资源下处理极长序列成为可能。梯度检查点③分布式环境下的嵌入广播在分布式训练中将所有GPU上计算出的文档嵌入向量进行广播共享。对于模型训练中的“对比学习”来说这相当于为每个查询提供了海量的、来自全局的负样本每个查询都能够以整个分布式批次中的所有其他文档作为负样本。模型能更好地学会区分相关和不相关的文档从而学得更精准、更强大。3数据集①无监督数据构建通用语义空间基础从维基百科、新闻、学术论文等海量文本中自动挖掘出“标题-正文”、“指令-输出”等文本对。规模高达12亿对覆盖194种语言。这是模型获得广博知识的基础。②有监督数据英语集成MS MARCO、Natural Questions、HotpotQA等8个数据集侧重于开放域问答与自然语言推理。中文整合DuReader、T2-Ranking、LawGPT等7个数据集覆盖通用与垂直领域如法律、医疗。其他语言引入MIRACL和Mr. TyDi等基准的多语言训练数据。这些高质量的正负样本对直接指导模型学习复杂的语义匹配模式是塑造其多功能特别是密集检索和多向量检索精准度的关键。③合成数据为了解决“长文档问答”数据少的问题从Wikipedia、Wudao、mC4等语料中采样长文档并随机选取其中的段落利用大型语言模型如GPT-3.5根据段落内容自动生成相关问题。由此构成的生成长文档生成问题配对形成了一个名为MultiLongDoc的新数据集。该数据集直接为模型提供了长上下文与查询间的关系样本是模型获得多粒度中长文档理解与检索能力的重要补充。3.RetroMAE一种面向检索任务的掩码自编码预训练新范式BGE的训练过程分为两阶段第一阶段是主要采用RetroMAE方法的预训练过程第二阶段就是利用对比学习的微调过程跟之前的方法不同之处在于微调时会在检索任务中为query单独添加对应的instruction。具体的训练过程可以见https://huggingface.co/BAAI/bge-base-en。RetroMAE方法该方法出自于于EMNLP2022Conference on Empirical Methods in Natural Language Processing是自然语言处理NLP领域的顶级国际会议之一。的文章https://arxiv.org/pdf/2205.12035是一种基于自动编码的方法可以为检索模型提供了一个强力的初始化模型。解决问题传统的预训练模型如BERT专注于词元级任务其句子级别的表示能力不足直接用于密集检索效果受限需要大量标注数据和复杂的微调策略才能在检索任务上表现良好。RetroMAE的解决方案通过高难度重建逼迫编码器学习全局语义。RetroMAE核心三个关键设计新颖MAE流程对输入句子进行两次独立掩码分别用于编码和解码。不对称结构强大的全尺寸BERT编码器12层768隐藏维 极简的单层Transformer解码器。不对称掩码编码器轻度掩码15% - 30%解码器重度掩码50% - 70%。效果在多个权威检索基准如BEIR、MS MARCO上取得了领先的零样本和有监督检索性能且方法简单无需负采样或数据增强。训练过程步骤1不对称双重掩码编码器端轻度掩码让编码器看到大部分完整信息以便生成一个初步的、质量尚可的句子嵌入。~X_enc解码器端重度掩码极大增加重建任务的难度使解码器严重依赖句子嵌入。~X_dec2编码与解码编码器处理~X_enc输出句子嵌入h~X。解码器将句子嵌入h~X和 被重度掩码的~X_dec的嵌入序列进行拼接输入给解码器。解码器根据这两个来预测被养马的位置原本是什么词。解码器单靠重度掩码的~X_dec的嵌入序列很难推测出原本的句子是什么词必须在h~X中找线索如果h~X高质量的编码了一个包含全局语义的嵌入那么解码器就可以推测出原来位置的词。通过这种“高难度重建”任务编码器被训练必须将尽可能多的全局、抽象语义注到h~X中否则解码任务将失败。这直接优化了编码器生成句子嵌入的能力。RetroMAE模型的预训练流程:Encoder编码器部分输入句子是Norwegian forest cat is a breed of domestic cat originating in northern Europe经过轻度掩码Moderate Masking后得到编码器的输入[M] forest cat is a breed of [M] cat originating in [M] Europe这里掩码了三个词Norwegian、domestic、northern编码器是一个全尺寸的BERT模型它处理这个被部分掩码的句子并生成一个句子嵌入Sentence Embedding。这个句子嵌入是对整个句子语义的概括表示。Decoder解码器部分同样的原始句子经过重度掩码Aggressive Masking后得到解码器的输入[M] [M] cat is [M] [M] of domestic [M] [M] in northern [M]这里掩码了更多的词包括Norwegian、forest、a、breed、cat、originating、Europe解码器是一个单层的Transformer它的输入是编码器产生的句子嵌入和这个被重度掩码的句子。重建目标解码器的任务是基于句子嵌入和被重度掩码的输入通过掩码语言模型MLM的方式重建出原始句子。图中显示解码器成功重建了原始句子Norwegian forest cat is a breed of domestic cat originating in northern Europe核心思想通过这种不对称的设计编码器轻度掩码解码器重度掩码模型被迫在解码器只能看到少量词汇的情况下依靠编码器产生的句子嵌入来重建整个句子。这就要求编码器必须生成高质量的句子嵌入其中包含足够的信息来支持重建。这种训练方式使得编码器学习到的句子嵌入能够很好地捕捉句子的全局语义从而有利于下游的检索任务。注意图中的“Mask (EN)”和“Mask (DE)”分别指编码器和解码器的掩码操作。EN和DE可能分别代表Encoder和Decoder。通过这种设计编码器学会将整个句子的语义信息压缩到句子嵌入中这正是密集检索任务需要的核心能力——生成能够准确反映语义的向量表示。技术增强增强解码传统的MLM只计算15%掩码位置的损失数据利用效率低下。RetroMAE的增强解码解决了这个问题。核心思想为序列中的每一个词元包括非掩码词元都创建一个重建任务并且每个词元重建时使用的上下文都略有不同。技术实现双流输入查询流H1一串相同的句子嵌入h~X每个位置加上了不同的位置编码。[h~Xp0, h~Xp1, ..., h~XpN]。用于作为重建每个词元的“提问者”。上下文流H2完整的令牌嵌入序列包括所有未被掩码的原始词。[h~X, e_The, e_rapid, ..., e_society]。作为重建时可参考的“知识库”。位置特定的注意力掩码M这是一个预先定义好的矩阵控制着在重建第i个词元时能“看到”哪些位置的上下文。规则重建x_i时除了不能看自己x_i的位置可以从上下文流中随机采样一部分其他位置的词元作为上下文。例子在重建第1个词The时注意力掩码可能允许它看到{h~X, rapid, intelligence, transforming}。而在重建第3个词development时掩码可能允许它看到{h~X, The, artificial, society}。效果100%数据利用率我们为句子里的每一个词包括标点都进行了一次重建并计算了损失。而基础解码只重建被掩码的50%的词。上下文多样化每个词元都在一个略微不同的“视角”下被重建这迫使句子嵌入h~X必须是一个信息高度密集且鲁棒的表示能够应对各种不同的“查询”。训练过程RetroMAE预训练工作流的三个核心阶段展示了从编码到增强解码的完整过程:A编码B解码基础版C增强解码例子假设我们的句子是[x1, x2, x3, x4]猫 喜欢 鱼 。1H1查询流[h_Xp0, h_Xp1, h_Xp2, h_Xp3, h_Xp4]这里全是h_X但每个都加了一个独特的位置编码p0, p1...。可以理解为h_X带着5个不同的问题来了h_Xp0: “第一个位置应该是什么词”h_Xp1: “第二个位置应该是什么词”H2上下文流[h_X, e_猫, e_喜欢, e_鱼, e_。]h_X: 编码器生成的句子嵌入“中心思想”比如“这是一个关于猫的喜好的陈述”e_猫,e_喜欢...每个词原本的嵌入向量没有被掩码2生成掩码矩阵M规定了在回答某个问题时能看哪些部分。假设规则在重建第i个词时除了不看自己随机其他的词。第一行猜“猫”h_Xp0被允许查阅h_X、“喜欢”第2个词。但它不能看“猫”自己和“鱼”还有“。”。第二行猜“喜欢”h_Xp1被允许查阅h_X、“猫”和“鱼”。不能看“喜欢”和“。”。主对角线永远是灰色因为永远不能看自己。3单层Transformer解码器开始工作它拿着规则表开始逐个位置进行推理。①重建第一个词 (x1猫)答题卡h_Xp0问第一个词是允许看的线索h_X中心思想 e_喜欢第二个词推理过程h_X中心思想是“猫的喜好”。e_喜欢后面跟着一个表示“喜好”的词。综合判断在“喜好”前面最可能的主语是“猫”。输出预测“猫”的概率最高。计算损失比较预测结果和真实的“猫”算出损失1。②重建第二个词 (x2喜欢)答题卡h_Xp1问第二个词是允许看的线索h_X中心思想 e_猫第一个词 e_鱼第三个词推理过程h_X中心思想是“猫的喜好”。e_猫前面是“猫”。e_鱼后面是“鱼”。综合判断连接“猫”和“鱼”表达“喜好”关系的词最可能是“喜欢”。输出预测“喜欢”。计算损失比较预测结果和真实的“喜欢”算出损失2。......就按这样的过程把所有词都重构出来。总体工作流程4. 小结关于M3之前的其他模型还是专注于密集检索和单语言。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑