微信开源 WeMM-Embedding:2B/4B/9B 多模态检索模型 + 仓库与部署实测
微信视觉团队将内部使用的多模态 Embedding 模型开源,项目名为 WeMM-Embedding(WeChat Multi-Modal Embedding),基于 Qwen3.5 原生多模态底座训练。
它用一个语义空间同时表达文字、图片、视频和视觉文档,支持跨模态比较与检索:输入文本可检索图片,输入图片可检索视频,也可处理任意交错的图文/图视频输入。这类模型是搜索引擎、推荐系统和 RAG 检索的基础组件。据技术报告,模型已在微信朋友圈搜索、视频号推荐、公众号推荐、微信电商中大规模部署,日调用量十亿级。
项目信息
- 官方仓库:
- 模型权重(Hugging Face):
- tencent/WeMM-Embedding-2B
- tencent/WeMM-Embedding-4B
- tencent/WeMM-Embedding-9B
- 技术报告(arXiv):
- 许可证:Apache 2.0,可商用(HF 模型页标注为
wemm-model-license,条款与 Apache 2.0 一致;商用前建议自行核对 LICENSE)
注意别和 scenarios/WeMM(另一个多模态大模型项目)混淆,认准 Tencent/WeMM-Embedding。
MMEB-v2 榜单位置:9B 第一,2B 超过开源 8B
MMEB-v2 由 TIGER-AI-Lab 发布,是目前多模态检索领域常用评测基准之一,覆盖 78 个数据集,图片与视频任务用 Hit@1、视觉文档任务用 NDCG@5。9B 版以 80.6 总分登顶,超过此前已提交的开源和闭源模型。
2B 版得 77.9 分,反超此前开源榜最高的 Qwen3-VL-Embedding 8B(77.8)——以四分之一参数量追平甚至反超,部署成本和推理速度优势是实打实的。分项拆开看(Image/Video/VisDoc):
| 模型 | 尺寸 | AVG | Image | Video | VisDoc |
|---|---|---|---|---|---|
| Qwen3-VL-Embedding | 2B | 73.2 | 75.0 | 61.9 | 79.2 |
| Qwen3-VL-Embedding | 8B | 77.8 | 80.1 | 67.1 | 82.4 |
| WeMM-Embedding | 2B | 77.9 | 79.6 | 70.8 | 80.7 |
| WeMM-Embedding | 4B | 79.2 | 80.8 | 72.1 | 82.0 |
| WeMM-Embedding | 9B | 80.6 | 81.9 | 74.3 | 83.3 |
内部运行一年,14 次 A/B 测试正向
技术报告显示,模型在微信内部完成 14 次线上 A/B 测试,全部正向收益;在 26 个内部任务上也有显著提升。训练分两阶段:大规模多模态对齐 + 精炼(细粒度相关性监督 + 跨尺度知识迁移)。属于生产级模型,而非跑分专用。
开源内容与版本
本次开源三个版本,嵌入向量取自最后一层 hidden state 的专用 token 位置,再做 L2 归一化:
| 版本 | 参数量 | 默认输出维度 | Matryoshka 支持维度 | MMEB-v2 |
|---|---|---|---|---|
| WeMM-2B | 20 亿 | 2048 | 64…2048 | 77.9 |
| WeMM-4B | 40 亿 | 2560 | 64…2560 | 79.2 |
| WeMM-9B | 90 亿 | 4096 | 64…4096 | 80.6 |
代码、权重、评估代码(mmeb_v3_eval/,基于官方 VLM2Vec 管线改)和技术报告均已放出。
Matryoshka 维度截断,向量库直接省 8 倍
WeMM-Embedding 使用了 Matryoshka Representation Learning。其特点是模型输出的高维向量可截断到更小维度,性能损失很小。
以 2B 为例:默认 2048 维,截断到 256 维后仍保留 98.7% 的图像和视频检索性能。向量存储空间省 8 倍、检索更快,代价几乎可忽略。维度选择通过 model.config.matryoshka_dimensions 里列出的取值来指定(64/128/256/512/1024/2048 等)。
部署
Transformers 加载(注意钉死版本):
from transformers import AutoModel, AutoProcessor
import torch
model_id = "tencent/WeMM-Embedding-2B"
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
model = AutoModel.from_pretrained(
model_id, trust_remote_code=True, dtype=torch.bfloat16
).cuda().eval()
官方明确推荐 transformers==5.2.0——更高版本官方称"预处理行为可能有差异",跑不通先把版本钉死再排查,这是新模型常见的坑。
命令行推理:
python examples/transformers_inference.py \
--model /path/to/WeMM-Embedding-2B \
--image /path/to/image.jpg \
--video /path/to/video.mp4 \
--dimension 2048
Sentence Transformers:
python sentence_transformers_inference.py \
--model tencent/WeMM-Embedding-2B \
--image /path/to/image.jpg \
--dimension 256 # MRL 用 --dimension 选维度
SentenceTransformer.encode() 直接兼容文本/图片/视频,MRL 维度用 --dimension 指定。
生产部署(vLLM / SGLang):
MODEL_PATH=/path/to/WeMM-Embedding-2B
vllm serve "$MODEL_PATH" \
--runner pooling \
--chat-template "$MODEL_PATH/embedding_chat_template.jinja"
仓库同时提供 SGLang 部署脚本。官方建议生产用 vLLM 0.27.0 或 SGLang 0.5.9。
边界条件与坑
- 不支持音频。跨模态任务得分不含音频(Audio 栏为 0),纯音频场景需另选全模态模型。
- OCR/视觉文档能力有限,它是面向检索强化的专用模型,不是通用多模态理解模型。
- 依赖版本敏感:transformers 需钉 5.2.0,vLLM/SGLang 版本别乱升。
- 视频输入成本高:需抽帧处理(评估管线默认 64 帧采样),吞吐前先评估算力。
如果要做多模态搜索、内容推荐或 RAG 检索,建议按业务负载在 2B/4B/9B 之间选型:够用优先 2B,官方给出 256 维可进一步压存储。