微信如何训练多模态 Embedding 模型

简介: 多模态 Embedding 模型训练的两个阶段……

Embedding 模型从文本扩展到图片、视频和视觉文档之后,训练需要处理的数据类型和任务也变得更加复杂。如何把不同模态、不同任务的数据组织进同一套训练体系,并学习统一的多模态表示,正成为训练中的一个核心问题。

上周,微信团队发布了 WeMM-Embedding 技术报告,并开源了 2B、4B 和 9B 三个版本。模型支持文本、图片、视频、视觉文档以及交错多模态输入,并应用于微信内部的搜索和推荐场景。

WeMM-Embedding: WeChat Multi-Modal Embedding Technical Report」论文采用两阶段训练方案:第一阶段用数亿级异构数据完成大规模多模态对齐第二阶段再通过数据重采样、质量清洗、难负样本、Reranker 和模型蒸馏进一步提升表示能力

在这篇文章里,我们将从训练数据、Batch 构造和两阶段训练策略入手,看看微信是如何训练一个多模态 Embedding 模型的。

多模态训练数据的统一组织

WeMM-Embedding 面对的第一个问题,是训练数据之间存在很大差异。论文中显示的训练数据主要包括六类:

  • 图文、视频文本等弱监督配对数据;

  • 描述实体、属性、关系、动作、空间和时间信息的图像/视频描述数据;

  • 实例、文档、时刻定位、组合查询、推理、工具和 GUI 等检索数据;

  • 商品、视频、文章等带多级相关性的配对数据;

  • 物体、场景、动作等分类数据;

  • OCR、文档、图表、知识、空间关系和推理等问答数据。

这些数据覆盖文本、图片、视频以及交错多模态输入,来源包括公开数据集、Web 级弱监督数据、面向任务生成的合成数据,以及微信内部数据。第一阶段使用的数据规模达到数亿对。

图 1:多模态训练数据概述图

面对这些差异很大的任务,微信团队没有为每种任务建立独立的数据结构,而是把训练样本统一表示成一个 Pair:

$$z_i=(I_i,q_i,c_i,N_i,y_i$$

其中包含五个元素:

  • Iᵢ:可选的任务指令;

  • qᵢ:Source,也就是查询侧输入;

  • cᵢ:与 Source 匹配的 Target;

  • Nᵢ:可选的显式难负样本(Hard Negative,下面简称:难负样本);

  • yᵢ:可选的相关性分数。

Source 和 Target 都可以是文本、图片、视频,也可以由多种模态交错组成。

经过这种转换,大量看起来差异很大的任务,都能够进入同一种训练接口:给定一个 Source,在候选空间中找到与它匹配的 Target。图文检索可以写成图片与文本 Pair,分类任务可以转成输入与类别描述 Pair,视觉问答可以转成问题与答案 Pair,工具检索也可以转成查询与工具描述 Pair。

不同任务依然保留各自的语义,但进入训练管线之后,可以共享同一套 Source-Target 数据结构。

多模态 Embedding 的表示提取

数据结构统一之后,接下来是如何从原生多模态模型中得到 Embedding。

WeMM-Embedding 基于 Qwen3.5 的原生多模态架构构建。文本、图片和视频经过各自的处理流程后,会按照原始输入顺序排列成一串 Token。

微信团队在序列结尾加入一个专门的 <embedding> Token。

文本 / 图片 / 视频 / ...
          ↓
Multimodal Tokens
          ↓
<embedding>
          ↓
Qwen3.5
          ↓
最后一层 <embedding> Hidden State
          ↓
L2 Normalize
          ↓
Embedding

模型完成前向计算后,取 <embedding> 对应的最后一层隐藏状态,再进行 L2 归一化,得到整段多模态内容的向量表示。

这个设计有一个比较灵活的点,就是一段输入中可以放入多个 <embedding> Token。论文举了视频和语音转写的例子。可以在视频 Token 后加入一个 <embedding>,再在视频与 ASR 文本之后加入另一个 <embedding>

一次前向计算便可以得到两种表示:

视频
  ↓
Video Embedding

视频 + ASR 文本
  ↓
Video-Text Embedding

通过这种方式,同一个输入序列可以同时生成面向不同下游需求的向量。

模型训练的第一阶段

WeMM-Embedding 的训练分为两个阶段。

第一阶段使用数亿规模的训练数据,目标是建立一个覆盖范围足够广的通用多模态表示空间。这个阶段会从前面提到的六类数据中采样训练,其中一个关键设计是 Batch 的构造方式:同一个 Batch 中的样本来自同一数据源和同一任务。

对于普通的 Source-Target 配对数据,模型采用 InfoNCE 对比学习。每条样本对应的 Target 是正样本,同一 Batch 中其他样本的 Target 则作为负样本;如果数据本身包含显式难负样本,也会一并加入负样本集合。

这里,Batch 如何构造会直接影响 In-batch Negative 的质量。

如果把分类、视频检索、文档检索和图文匹配等不同任务混在同一个 Batch 中,其他样本虽然也会被当作负样本,但它们可能来自完全不同的候选空间,缺少有意义的比较关系,对模型学习细粒度区分能力的帮助有限。

而论文中的消融实验也证实了这一点。

图 2:第一阶段数据分析

论文用 2B 模型做了一组小规模的第一阶段消融实验。结果显示,任务一致的 Batch 对效果影响最大:去掉这一设计后,MMEB-v2 的平均分从 71.9 降到 68.5,下降了 3.4 分;相比之下,去掉任务指令后下降 0.8 分,去掉重复感知 Mask 后下降 0.5 分。这说明,多任务训练虽然可以共享统一的数据接口,但 Batch 内的样本仍需要来自相同任务,避免把缺乏有效比较关系的候选混在一起

除了任务之间的差异,In-batch Negative 还要处理假负样本。比如在分类任务中,两张图片都可能对应 "dog",如果它们进入同一个 Batch,其中一条样本的 "dog" Target 就可能被另一条样本当作负样本参与训练。针对这类情况,WeMM-Embedding 会同时检查 Source 和 Target 的相似关系,对重复或语义近似的样本进行 Mask,避免它们互相成为负样本。上面的消融结果中,去掉重复感知 Mask 后,MMEB-v2 从 71.9 降到 71.4。对于大量样本可能共享 Target 的任务,这一步可以减少错误的负样本监督。

除了正负样本,部分搜索和推荐数据还包含更加细粒度的相关性。

高度相关
相关
弱相关
不相关

对于这类数据,WeMM-Embedding 使用基于 CoSENT 的排序目标。

训练过程中,模型会比较不同 Source-Target Pair 之间的相关性顺序,并根据两组样本的相关性分数差距调整权重。相关性差距越大,排序错误受到的惩罚也越强。

训练目标由简单的 正样本 > 负样本扩展为 高度相关 > 相关 > 弱相关 > 不相关

由此,第一阶段通过完成大规模多模态对齐、In-batch Negative 和多级相关性学习,先建立一个覆盖范围足够广的表示空间。

模型训练的第二阶段

第一阶段完成后,WeMM-Embedding 会从原有数据中筛出一套规模约为十分之一的精选训练集,用于第二阶段训练。相比第一阶段强调数据规模和任务覆盖,第二阶段更关注语义分布、数据质量和难样本,希望用更少的数据提供更有效的监督。

其中一个关键环节是基于 Semantic ID 的重采样。大规模训练数据很容易呈现长尾分布:部分高频语义模式反复出现,低频语义则覆盖不足。如果继续按照原始分布采样,模型会反复看到相似内容。

WeMM-Embedding 先使用中间 Checkpoint 对训练数据进行编码,再训练一个三层 RQ-KMeans 量化器,将每条样本映射成一个三段式 Semantic ID。随后根据不同 Semantic ID 的密度重新调整采样概率:

高密度 Semantic ID
        ↓
降低采样比例

低密度 Semantic ID
        ↓
提高保留比例

这种重采样会降低高频语义模式的占比,让精选训练集覆盖更多不同的语义区域。

Semantic ID 在论文里还被用于线上系统。在微信的推荐场景中,多模态 Embedding 会进一步转换成 Semantic ID,用作索引和用户序列建模中的离散特征。

完成语义重采样后,训练数据还会进入质量清洗阶段。微信使用多模态大模型判断 Source-Target Pair 是否符合对应任务的语义关系,并过滤匹配错误的数据;对于部分文本字段,模型也会参与修正。

例如,从 Web 获取的图文和视频文本弱监督数据规模很大,但其中可能包含噪声、描述错误或语义偏差。多模态模型会尽量保留原始 Alt Text 的表达风格和信息粒度,同时修正会影响训练质量的内容。

整个第二阶段的数据精炼过程可以概括为:

Stage 1
数亿级训练数据
      ↓
通用多模态表示空间

      ↓

Semantic ID 重采样
      ↓
质量清洗
      ↓

Stage 2
约 1/10 精选训练数据

第二阶段的数据量明显减少,但样本的语义覆盖和监督质量得到进一步整理。

监督信号增强

数据筛选完成后,第二阶段还会进一步增强训练样本提供的监督信号,其中一个重点就是难负样本的构造。

WeMM-Embedding 会根据不同模态采用不同的难负样本生成方式。对于文本 Target,多模态大模型会根据 Source 和正确答案生成语义接近、表面合理但实际错误的候选;对于图片和视频 Target,则使用 WeMM-Embedding 的中间 Checkpoint,从对应任务的真实候选池中检索语义相近的图片或视频。

这样一来,中间阶段训练出的 Embedding 模型又会反过来参与下一阶段的数据构造,形成一个训练闭环:

训练 Embedding
      ↓
得到中间 Checkpoint
      ↓
从真实候选池检索难负样本
      ↓
构建精选训练数据
      ↓
进一步训练 Embedding

对于图片和视频,从真实候选池中挖掘难样本还有一个好处:负样本和模型上线后面对的候选分布更加接近,也减少了额外生成视觉内容的成本。

难负样本构建完成后,微信还训练了多模态 Reranker。针对同一个 Query,Reranker 会分别判断正确 Target 和多个难负样本的相关程度,并输出更细粒度的相关性分数:

Candidate A   0.93
Candidate B   0.71
Candidate C   0.43
Candidate D   0.12

相比简单的正负标签,这些分数保留了不同候选之间更细的相关性差异。不过论文实验显示,Reranker 监督并非对所有任务都能带来稳定收益,因此第二阶段只在经过实验验证有效的任务上使用这类监督。

除了 Reranker,2B 和 4B 模型在第二阶段还会接受来自 9B WeMM-Embedding 的知识蒸馏。9B 模型作为冻结的老师模型,为较小模型提供额外的相似度监督。

这里蒸馏的重点,是老师模型在整个 Batch 中给出的候选相似度结构。例如,同一个 Query 面对多个 Candidate 时,老师模型可能产生这样的相似度分布:

          A      B      C      D
Query    .91    .73    .28    .11

相比 One-hot 正负标签,这种分布保留了不同候选之间更细的语义距离。

训练时,模型会分别计算 Source→Target 和 Target→Source 两个方向的概率分布,再通过 KL 散度约束学生模型接近老师模型,把 9B 模型学到的多模态相似度结构传递给 2B 和 4B 模型。

对于 9B 模型,由于没有更大规模的同系列老师模型,微信采用了另一种方式:训练多个使用不同数据混合和训练配置的 Stage 2 模型,再通过模型合并得到最终版本。

训练策略的消融分析

论文通过一组累积消融实验,观察第二阶段各项策略带来的收益。

图 3:第二阶段分析

整个第二阶段将 MMEB-v2 的分数从 75.7 提升到 77.9。其中,精选数据带来了 0.9 分增益;加入 Embedding 老师模型蒸馏后,分数又从 76.7 提升到 77.6,是这一阶段贡献较明显的策略之一。

Reranker 对整体指标的提升只有 0.1 分,但视觉文档任务从 78.5 提升到 79.1,也印证了前面的实验观察:这类监督对部分任务更有效,因此只用于经过验证的训练任务。最后一步增加视觉输入预算,包括更高分辨率的图片和更密集的视频帧采样,视频相关任务从 70.0 提升到 70.8。

从这组消融实验来看,第一阶段完成大规模表示对齐后,第二阶段的主要增益来自更精细的数据筛选、监督信号增强,以及跨规模知识迁移。

Matryoshka 多维表示训练

Embedding 模型进入搜索和推荐系统后,还需要考虑向量带来的存储和检索开销。Embedding 维度越高,索引空间、向量存储和相似度计算的成本也会随之增加。

为此,WeMM-Embedding 引入了 Matryoshka Representation Learning。训练时,模型会同时在多个 Embedding 维度上计算目标;推理时只需进行一次前向计算,再截取完整向量前面的不同长度并重新归一化,就可以得到多种维度的 Embedding。

图 4:不同 Embedding 维度下的性能表现

论文测试了 64 到 2048 维之间的模型表现。2B 模型压缩到 256 维后,图片和视频任务仍能保留 2048 维版本约 98.7% 的性能;提升到 512 维后,两类任务分别可以保留约 99.2% 和 98.8% 的性能。

不同任务对向量维度的敏感度并不相同。视觉文档在降维后的性能下降更明显,检索任务对向量长度的依赖也高于分类任务。不过当维度达到 256 之后,论文测试的分类、问答和检索任务都能保留完整维度模型超过 97% 的性能。

从部署角度看,如果业务更关注向量存储和检索效率,256 或 512 维是比较有参考价值的选择。

微信业务场景的线上验证

最终,WeMM-Embedding-2B 在 MMEB-v2 上取得 77.9 分,9B 模型则达到 80.6。除了公开 Benchmark,微信团队还构建了一套包含 26 个内部任务的评测集,覆盖分类、搜索、跨域内容匹配、文章相关性和视频相关性等场景。

在这套内部评测中,WeMM-Embedding-2B 的平均得分达到 72.0,高于对照模型 Qwen3-VL-Embedding-2B 的 60.9。

目前,WeMM-Embedding 被用于视频号、公众号和电商等推荐场景,参与候选召回、排序特征构建、用户序列建模和跨域内容理解;在搜索侧,则覆盖视频号视频、公众号文章和朋友圈内容。

论文还披露了 14 项线上 A/B 测试,多项指标取得持续收益,相关方案随后进入生产环境。

把前面的训练过程收束起来,WeMM-Embedding 的整体链路可以概括为:

异构多模态数据
      ↓
统一 Source-Target Pair
      ↓
任务一致 Batch
      ↓
大规模对比学习
多级相关性学习
      ↓
通用多模态表示空间
      ↓
Semantic ID 重采样
数据质量清洗
Hard Negative
      ↓
Reranker 监督
Embedding Teacher 蒸馏
      ↓
Matryoshka 多维表示
      ↓
搜索 / 推荐

第一阶段通过大规模、多任务数据建立统一的多模态表示空间;第二阶段则缩小数据规模,通过重采样、数据清洗、难负样本和知识蒸馏,提高监督质量和相似度区分能力。

进入线上系统后,Matryoshka 多维表示和 Semantic ID 又进一步兼顾了向量存储、检索效率和推荐建模需求。

从工程实践角度看,WeMM-Embedding 的参考价值也在于此:多模态 Embedding 的训练效果除了依赖底座模型,也受到数据组织、Batch 构造、负样本质量和第二阶段训练策略的共同影响。

相关文章
|
18天前
|
人工智能 缓存 前端开发
DeepSeek Harness 首发实测 + 入门教程,夯爆了!梁神我错了
DeepSeek Harness + DeepSeek V4 Pro 项目实战保姆级教程!手把手带你从零安装开源 AI 编程工具,开发架构图、知识讲解网站、3D 网页游戏、全栈 AI 应用 4 个项目,覆盖运行模式选择、插件安装与开发,看看能不能对标 Claude。
12934 81
DeepSeek Harness 首发实测 + 入门教程,夯爆了!梁神我错了
|
6天前
|
人工智能 自然语言处理 安全
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
本文聚焦阿里云2026年推出的三款自研AI办公产品,清晰拆解千问办公、Qoder Teams、Qoder CN的差异化定位与能力边界:千问办公主打职场全场景提效,支持自然语言指令一键完成PPT生成、数据分析等高频办公任务;Qoder Teams面向程序员团队,深度整合AI代码生成、团队协同与企业知识库能力;Qoder CN则专为金融、政务等强合规场景打造,实现数据不出境与VPC私有化部署。文章同步给出分场景选型指南与最新活动定价,帮助不同类型的企业按需组合产品,实现业务岗、研发岗与强合规场景的AI能力全覆盖。
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
|
11天前
|
Web App开发 人工智能 API
16 个超火的 DeepSeek Harness 插件,大肥鱼已经落后 N 个版本了。。。
DeepSeek Harness 精选插件推荐合集,从图片识别、浏览器操控、多 Agent 协作到手机远程控制,一口气带你看完 DSH 社区热门的十几个插件,覆盖技能扩展、UI 界面增强、整活玩法三大类,让你的鲸鱼变得更强。
1656 3
|
人工智能 JavaScript 开发工具
DeepSeek Harness 本地安装与使用指南
DeepSeek Harness(DSH)是DeepSeek AI开源的Agent运行框架,支持本地文件操作、命令执行与工具调用。基于Cordis插件架构,具备高扩展性与强可控性,适合开发者搭建可控Agent环境或开展模型基准测试。当前为开发者预览版,需Node.js环境,推荐先用`npx @deepseek-ai/dsh web`快速体验。
5062 0
|
12天前
|
人工智能 Java BI
【AI】DeepSeek Harness 安装、运行、管理插件
本文介绍了如何运行DeepSeek开源的Agent框架DeepSeek Harness(dsh)。主要内容包括:使用nvm安装适配的Node版本;通过代理加速克隆GitHub源码;使用pnpm安装依赖并启动项目;配置DeepSeek API Token;安装扩展功能的插件。该框架自带Web界面,支持模型适配、文件编辑等插件化功能
1801 1
|
14天前
|
人工智能 JavaScript 测试技术
保姆级教程:DeepSeek Harness从安装到跑通测试,30分钟上手
DeepSeek Harness是DeepSeek开源的AI Agent运行时,主打“一行命令安装、5分钟跑通”。它让模型真正动手干活——读代码、跑测试、分析失败、生成修复方案。本文手把手教你30分钟从零上手,覆盖安装、配置、实测及避坑指南,助你快速掌握下一代AI编程范式。
|
16天前
|
开发工具 Swift git
DeepSeek Harness 插件推荐:4 款开源神器让写代码直接起飞
DeepSeek Harness 插件推荐:ModLens 视觉、Web UI 全家桶、Mac 原生与 GenUI 渲染,4 款开源插件给纯文本模型补齐短板。
2035 6
DeepSeek Harness 插件推荐:4 款开源神器让写代码直接起飞
|
13天前
|
人工智能 JavaScript 测试技术
从 0 到 1,DeepSeek Harness 保姆级安装与使用教程!
DeepSeek Harness是DeepSeek推出的开源Agent运行框架,秉持“一切皆插件”理念,支持模型、工具、技能、工作流等全模块自由替换与扩展。其核心Cordis内核实现动态插件管理,赋能Agent自进化。已成GitHub史上增速最快开源项目(15w+ Star),标志着国内大模型从拼价格转向重架构与生态的新拐点。
1311 5
从 0 到 1,DeepSeek Harness 保姆级安装与使用教程!