WeMM-Embedding:一个2B小模型是怎么打败8B大模型的

你有没有想过,一张图片、一段视频、一句话,怎么才能放到同一个"坐标系"里比较相似度?
这听起来像个哲学问题,但其实是搜索引擎、推荐系统每天都要解决的工程难题。你在微信看一个视频号内容,系统要判断它和你之前喜欢的文章像不像,和你搜索的关键词配不配,这背后就需要把图片、文字、视频统一变成一串数字,然后比较这些数字之间的距离。
这串数字就叫嵌入向量,英文是embedding,中文有时也叫嵌入表示:把一段内容(不管是文字、图片还是视频)压缩成一个固定长度的数字列表,语义相近的内容对应的数字列表在空间中距离也相近。
腾讯微信团队最近发了一篇技术报告,介绍了他们做的一套多模态嵌入模型,叫WeMM-Embedding。最让人意外的是,这套模型里最小的2B版本,居然打败了参数量是它4倍的8B开源模型。这不是噱头,是在权威榜单MMEB-v2上实打实测出来的成绩。
这件事的反直觉之处在于,过去几年整个AI圈的共识几乎都是"越大越强"。参数堆得越多,模型见过的数据越多,效果理应越好。可现在一个2B的模型,用不到四分之一的参数规模,跑赢了一个8B的对手,还小赢了将近5个百分点。这说明单纯堆参数量已经不是提升多模态表示能力的唯一路径,训练方法和数据质量的重要性,正在追上甚至超过模型规模本身。
那么,问题来了:这背后到底做对了什么?
多模态嵌入的老大难问题
先说说这个领域到底难在哪儿。
早期做跨模态检索(比如用文字搜图片)的模型,代表作是OpenAI的CLIP,思路是分别训练一个文本编码器和一个图像编码器,让配对的图文在向量空间里靠得更近。这个思路在2021年前后效果拔群,直接带火了整个跨模态检索赛道。
CLIP*:一种通过大规模图文对比学习,让图片和对应文字描述在向量空间中距离接近的模型架构,是多模态嵌入领域的早期奠基性工作。
但CLIP这类模型有个先天缺陷。图像编码器只认图片,文本编码器只认文字,两条腿走路,谁也不搭理谁。如果你想表示一段"图片+文字混排"的内容,比如一篇带插图的文章,或者一段配了字幕的视频,这种双编码器架构就很难优雅地处理,因为它天生没有"混合输入"这个概念。
后来有人尝试把预训练好的视觉编码器接到文本编码器上,当作视觉输入的"翻译器",扩大了匹配范围,但本质上还是在给旧架构打补丁,处理复杂的交错多模态输入依然力不从心。
真正的转折点出现在多模态大语言模型(MLLM)兴起之后。MLLM*:Multimodal Large Language Model,多模态大语言模型,一种可以同时理解文本、图像、视频等多种输入形式,并用统一方式处理的大模型,比如GPT-4V、InternVL等都属于这一类。
MLLM天生支持文本、图片、视频的任意穿插组合,这一点恰好补上了CLIP架构的短板。研究者们很快想到:既然MLLM已经能理解各种混合输入,那能不能直接从它的隐藏状态里提取出一个向量,当作这段内容的嵌入表示?这个想法在2024年前后被多篇论文验证是可行的,也就此打开了"MLLM转身做嵌入模型"这条新路。
但把一个语言模型改造成嵌入模型,光是能跑起来还不够,真正决定效果好坏的,是训练数据怎么收集、训练目标怎么设计。这正是WeMM-Embedding这篇报告用大篇幅去讲的东西。
数据怎么收:从海量粗放到精细打磨
WeMM-Embedding的训练分成两个阶段,用团队自己的话说,是"从广泛的多模态对齐逐步走向精细的相关性学习"。
第一阶段用的是大规模数据,规模是几亿级别的源目标配对。这里的"源目标配对"是个统一格式,不管你原来的任务是分类、检索还是问答,都被强行掰成"一个源实例去匹配一个或多个目标候选"的结构。
这个统一格式的设计思路很有意思。想象你是个仓库管理员,仓库里堆满了各种形状的货物,有圆的、方的、异形的,如果每种形状都要专门设计一套货架和搬运流程,效率会低到发疯。但如果你把所有货物都装进标准尺寸的集装箱,哪怕集装箱里面装的东西千差万别,搬运、堆放、调度的流程就能统一。如果不这么做,分类、检索、问答、图文配对这些任务的训练代码要各写一套,数据格式各不相同,想让不同任务的数据在同一个批次里训练,几乎没有可能。统一格式相当于给所有异构数据造了一个标准集装箱。
具体这些数据里包含哪些类型?报告里列了六大类:弱监督图文/视频文本对(网络上天然存在的图文关联,但描述比较粗糙)、更精细的字幕配对(详细描述实体、属性、空间关系的那种)、检索类配对(覆盖组合查询、推理检索、长上下文等复杂场景)、分类类配对(把分类任务硬转成"源和标签"的匹配问题)、多模态问答配对,以及带有人工评分的分级相关性配对。
分级相关性*:不是简单的"匹配"或"不匹配"两档,而是给一对内容打出多个等级的相关性分数,比如1到5分,让模型学会区分"非常相关""比较相关""有点相关""基本不相关"这些更细的档次。
光有第一阶段的海量数据还不够。团队又单独构建了一个规模只有大数据集十分之一的精选数据集,专门解决三个问题:语义分布不均衡、数据质量参差、负样本不够难。
这里最有巧思的一步是"语义ID引导的重采样"。他们借用了推荐系统里常用的Semantic ID思路,给每一对训练数据算出一个三级的离散身份编码,方法是用一个中间训练阶段的模型把数据编码成向量,再用一种叫RQ-KMeans的残差聚类算法把向量映射到编码本上。
Semantic ID*:给每条数据算出的一组离散数字标签,用来刻画这条数据在语义空间里"落在哪个位置",类似给每个人分配一个身份证号,同一批身份证号密集的地方说明这类语义模式出现得特别频繁。
算出这个身份编码之后,团队的做法是:那些身份编码扎堆密集的样本,说明这类语义模式已经被数据集见过太多次了,就降低它们被抽中训练的概率;而那些身份编码比较孤僻、稀疏的样本,说明是比较少见的语义模式,就提高它们被抽中的概率。
这背后的逻辑类似图书馆推荐系统的困境。如果一个图书馆按照借阅频率推荐新书,最后推荐列表永远被那几本网红书占满,冷门但优质的书永远没有出头机会。反过来,如果强行要求每类书籍数量绝对均等,又会破坏真实世界本来的语义分布,毕竟现实世界里,猫狗的图片天生就比稀有动物的图片多得多,硬性拉平反而失真。团队选择的做法是"降低高频、抬升低频,但不追求绝对均匀",这是一种更聪明的折中。
除了重采样,团队还做了两件事:用多模态大语言模型给数据"挑错",剔除源和目标根本不匹配的例子,顺手修正一些网络弱监督数据里常见的事实性错误(比如alt文本乱写的情况);以及针对语义相似但实际不匹配的候选,专门构造"硬负样本",对文本目标用大语言模型生成看起来很像对但其实错的候选,对图像视频目标则用模型自己去检索出容易混淆的候选,再用专门的重排序模型给这些难例打分。
硬负样本*:跟正确答案长得很像、语义上很接近,但确实不是正确答案的候选项,专门用来"刁难"模型,让它学会分辨那些细微的差别,而不是只会区分明显不相关的内容。
如果没有硬负样本训练,模型很容易陷入一种"松散及格"的状态,能分清猫和汽车,但分不清两只花色相近的猫。这就像考试只考选择题里正确答案和明显错误选项的区别,学生永远学不会辨析那些似是而非的干扰项。
模型架构:一个token承载所有语义
WeMM-Embedding基于Qwen3.5这个原生多模态大模型架构改造而来,2B、4B、9B三个尺寸。
它的核心技巧叫"末位token池化"。具体做法是在输入序列末尾加一个专门的embedding标记,让模型把前面所有文字、图片、视频信息都"看"一遍之后,把这个标记最后一层的隐藏状态拿出来,当作整段内容的向量表示。
这里有一个细节挺有意思:因为用的是因果注意力机制,这个特殊标记可以插在序列的任何位置,而不只是末尾。举个报告里的例子,一段视频后面跟着它的语音转写文字,团队可以在视频部分结束的地方插一个标记,专门提取"纯视频"的向量,再在整段结尾插另一个标记,提取"视频+文字综合"的向量,一次前向计算,同时拿到两种不同粒度的表示,供后续不同场景使用。
因果注意力机制*:一种只允许每个位置"看"它之前出现过的内容,不能偷看后面内容的注意力计算方式,是主流语言模型的标准设计。
除此之外,模型还支持一种叫Matryoshka表示学习的技巧,简称MRL,让同一个模型能一次性输出多种长度的向量,取完整的2048维,或者只取前512维、前256维,都能用,且都经过归一化处理。
Matryoshka表示学习*:得名于俄罗斯套娃,训练出的向量像套娃一样,截取向量的前面一部分依然是一个完整可用的低维表示,而不需要重新训练一个专门的低维模型。
这个设计解决的实际问题很直接。一个搜索引擎如果要检索几十亿条内容,用2048维的向量做相似度计算,存储和计算成本都非常高。如果模型只支持一种维度,想要更快的检索速度,就得重新训练一个小模型,费时又费钱。而套娃式设计相当于你买了一套可以拆分的行李箱,大箱子里嵌套着中箱子,中箱子里嵌套着小箱子,出门旅行几天就拿对应大小的箱子,不用为每种旅行时长单独买一个箱子。报告里的实测数据也验证了这个设计的实用性:把维度从2048降到256,图像和视频任务保留了98.7%的性能,几乎没有损失;但视觉文档类任务对降维更敏感,因为这类内容信息密度更高,文字细节更多,压缩起来更容易丢信息。
两阶段训练:先扎实基础,再精雕细琢
模型架构和数据都齐备之后,剩下的问题是怎么训练。WeMM-Embedding用了两阶段策略。
第一阶段的训练目标主要是两种。对于常规的配对数据,用的是InfoNCE对比学习目标,简单说就是让正确的配对相似度尽量高,同一批次里其他不相关的候选相似度尽量低。
InfoNCE*:一种对比学习的损失函数,核心思想是把一批数据里"应该匹配"的对当作正例,其余所有组合当作负例,通过拉近正例、推远负例来学习表示。
但对比学习有一个陷阱:如果同一批次里恰好出现了两条内容非常相似甚至几乎重复的数据,系统会把它们错误地当成负样本互相排斥,这就是"假负例"问题。报告里专门设计了"重复感知掩码"来解决,通过计算相似度阈值,把过于相似的候选从负样本池里剔除。这就像考试判卷时,如果两个学生写出了几乎一样的正确答案,却因为顺序问题被系统判定为"互相抄袭并扣分",这显然是不合理的,重复感知掩码就是提前把这种误判拦下来。
对于那些带有人工评分的分级相关性数据,团队没有直接套用二元对比学习,而是采用了一种叫CoSENT式排序目标的方法,核心是让相关性差距更大的两条数据获得更强的排序约束力,相关性差距小的则约束更松。
CoSENT*:Consistent Sentence Embedding via Similarity ranking,一种通过排序关系而不是绝对分类来训练向量相似度的方法,特别适合处理"部分相关""比较相关"这种连续程度的标签。
第二阶段则是在那个精选数据集上继续训练,同时引入了三种新的监督信号:重排序模型的打分指导、更大模型的知识蒸馏、以及扩大后的图像分辨率和视频采样密度。
这里最值得展开的是知识蒸馏这一环。团队发现,重排序模型的指导并不是万能药,报告里坦率地写道:"经验上,我们发现对我们自己嵌入模型检索出来的候选进行重排序,并不能在多模态任务上带来一致的提升。"这个坦白挺难得,很多论文习惯把所有尝试过的技巧都包装成"有效改进",但WeMM-Embedding团队直接承认某个方法效果有限,只在少数任务上有用,所以选择性地应用它。
真正带来稳定提升的是"嵌入蒸馏"。做法是让训练好的9B大模型当"老师",2B和4B的小模型当"学生",老师看到一批数据后计算出的相似度分布,不是简单的"对/错"两个值,而是一整套连续的相似度排序,这个排序结构被当作软标签,教小模型去模仿。
知识蒸馏*:让一个训练好的大模型充当老师,用它对同一批数据的判断结果,去指导一个更小的模型进行学习,目的是让小模型尽可能逼近大模型的能力,同时保持体积小、速度快的优势。
这个设计巧妙在哪儿?普通的监督学习只告诉模型"这个是对的,这个是错的",是非黑白的信息。但知识蒸馏传递的是一整套关系结构,老师模型认为候选A比候选B相关一点点,候选C比候选D相关很多,这些细微的相对关系差异,都被编码进软标签里传给学生。
这就像师傅带徒弟修表。徒弟如果只被告知"这个零件装对了,那个装错了",学到的信息很有限。但如果师傅进一步告诉他"这个零件的位置偏差在可接受范围内,但那个偏差已经超出容忍度了",徒弟能学到的分寸感就完全不同,这种"程度上的判断力",恰恰是二元对错标签教不会的。如果没有这层蒸馏信号,报告里的消融实验显示,2B模型在MMEB-v2上的整体得分会从77.6掉到76.7,这将近1个点的差距,正是"只学对错"和"学会分寸"之间的差距。
而对于9B这个最大的模型,因为没有更大的模型可以充当老师,团队换了个思路:训练出多个针对不同数据配比、不同训练策略的9B变体,再用模型合并技术把它们的能力揉到一起,形成最终版本。
模型合并*:把多个针对不同任务或数据训练出的模型参数进行某种加权组合,得到一个综合了各家优点的单一模型,避免了从零训练一个"全能模型"的高成本。
成绩单:数据说话
说了这么多设计思路,最终效果到底怎么样?
在MMEB-v2这个业界公认的多模态嵌入评测榜单上(覆盖78个数据集,涵盖图像、视频、视觉文档),结果是这样的:
模型 参数量 MMEB-v2总分
Qwen3-VL-Embedding 2B 73.2
DME-Small 2B 74.8
WeMM-Embedding 2B **77.9**
Qwen3-VL-Embedding 8B 77.8
WeMM-Embedding 4B **79.2**
DME-Medium 9B 78.4
WeMM-Embedding 9B **80.6**
这张表格最扎眼的地方是:WeMM-Embedding的2B版本(77.9分)已经超过了Qwen3-VL-Embedding的8B版本(77.8分),参数只有对方的四分之一,反而分数更高。而9B版本更是拿到了整个MMEB-v2官方榜单的第一名,超过了所有列出的开源和商业模型,截止到2026年8月24日的榜单状态。
在扩展版的MMEB-v3评测里(新增了文本推理检索、智能体相关任务),WeMM-Embedding依然保持领先,2B版本拿到56.0分,已经超过所有对比模型,包括参数量更大的对手。
在Gemini Embedding 2报告里提到的12个跨模态检索基准测试上,WeMM-Embedding的2B版本平均分79.8,超过了Amazon Nova MME(70.2分)和Voyage Multimodal 3.5(71.8分)这两个商业闭源模型。要知道这些商业模型的参数规模是保密的,很可能远超2B,能在这种情况下打平甚至反超,说明这套训练方法确实有真材实料。
而在微信内部搭建的26项任务的实测基准上,差距更明显。WeMM-Embedding的2B版本平均分72.0,对比同样是2B规模的Qwen3-VL-Embedding的60.9分,足足高出11.1分。
11个百分点的差距,具体意味着什么?意味着每做10次任务,WeMM-Embedding能比对手多蒙对1到2次的关键判断,在搜索、内容匹配、视频相关性这些涉及真实用户体验的场景里,这种差距是能被用户实实在在感知到的。
这些不是纸面上的数字游戏,这套模型已经在微信视频号、公众号、朋友圈还有电商场景里跑起来了。报告提到,它在14个线上A/B测试里都取得了正向收益,并且后续被真正推上线上生产环境,涉及候选召回、排序特征构建、用户序列建模、跨域内容理解等多个环节。这意味着这不是一篇纯学术意义上的论文,而是一套已经被验证能在真实业务里赚钱、省钱、留住用户的系统。
设计取舍的再思考
看完整篇报告,能感受到团队在很多地方做的都是取舍而非完美方案。
比如报告坦白说重排序监督不是万能的,只在特定任务上有用,这种诚实的态度在论文里不算常见。再比如语义ID引导的重采样,团队特意强调"减少对高频模式的重复暴露,而不是强制均匀分布",说明他们清楚地知道,过度追求数据均衡反而可能破坏真实世界的自然分布特征,这是一种带着克制的设计智慧。
还有一个值得琢磨的地方是消融实验的结果。报告里做了一个小规模的第一阶段设计消融,结果显示"任务一致的批次构建"这一项如果去掉,整体分数会从71.9掉到68.5,掉了3.4分,是所有消融项目里影响最大的。这说明什么?说明让同一批次的数据来自同一个任务、同一个候选空间,这个看似不起眼的工程细节,比任务指令、去重掩码这些设计的影响都大。
这背后的道理并不复杂。如果一个批次里混杂了分类任务和检索任务的数据,模型在对比负样本的时候,其实是在拿两种完全不同尺度的"相关性"互相比较,就像让一个裁判同时给短跑和跳远打分,还要求两项成绩放在同一个排行榜上比较名次,这种比较本身就是错位的。
写在后面
读这篇报告的时候,最让我意外的不是那些技术细节,而是团队愿意公开写下"重排序监督不总是有效"这句话。大部分技术报告的写法是把所有尝试过的手段都包装成"我们提出了X,带来了Y%的提升",很少有人愿意说"这个方法我们试了,但效果不稳定,所以我们只在部分任务上用它"。这种坦白反而让整篇报告的可信度更高。
另一个值得记下的细节是语义ID引导重采样的设计哲学:不追求绝对均匀,只削峰填谷。这打破了我原本以为的"数据均衡就该做成完全平均"的直觉,真实世界的数据分布本来就是不均匀的,猫的图片天然比稀有动物多,强行拉平反而是一种失真。这种"降低高频、抬升低频,但保留分布形状"的思路,或许在很多其他需要处理数据不平衡的场景里都值得借鉴,不管是推荐系统还是医疗数据处理。
还有一个问题报告没有展开说,但很值得追问:9B模型因为没有更大的模型当老师,只能靠模型合并来弥补,这种"没有老师就自己长大"的策略,在未来更大规模的模型上还能奏效吗?如果某天要训练一个70B的版本,又该找谁当它的老师?
Q&A
Q1:WeMM-Embedding是什么?
A:WeMM-Embedding是腾讯微信团队推出的一套多模态嵌入模型家族,支持文本、图像、视频、视觉文档等多种输入形式,能把这些内容统一转换成向量表示,用于检索、推荐、分类等场景,包含2B、4B、9B三种参数规模。
Q2:WeMM-Embedding的2B小模型真的能打过8B大模型吗?
A:是的,在MMEB-v2权威榜单测试中,WeMM-Embedding的2B版本拿到77.9分,超过了参数量是它4倍的Qwen3-VL-Embedding 8B版本(77.8分),说明训练方法和数据质量的优化能弥补参数规模的差距。
Q3:WeMM-Embedding已经在实际产品中使用了吗?
A:已经大规模部署,应用在微信视频号、公众号、朋友圈和电商搜索推荐系统中,参与候选召回、排序特征构建等环节,并在14个线上A/B测试中都取得了正向收益。