WeMM-Embedding:腾讯的通用多模态检索
腾讯的 WeMM-Embedding 模型将文本、图像、视频和视觉文档统一到同一个嵌入空间中,在基准测试中表现出色,并支持灵活的向量维度。
WeMM-Embedding:腾讯的通用多模态嵌入模型
多模态检索系统通常会变得十分复杂,因为每种数据类型都需要独立的编码器、预处理流程和相似度策略。腾讯微信视觉团队通过 WeMM-Embedding 采用了不同的方法:这是一个嵌入模型系列,旨在将文本、图像、视频、视觉文档以及交错式多模态输入表示在统一的向量空间中。
因此,这些模型可用于图文搜索、视频检索、视觉文档发现、多模态推荐,以及针对混合媒体内容的检索增强生成等应用。该项目以 Apache License 2.0 开源,适用于腾讯编写的代码,并包含推理示例、服务脚本以及用于生成报告结果的评估流程。
模型系列与支持的输入
代码仓库提供三种模型规模:
| 模型 | 支持的 Matryoshka 维度 |
|---|---|
WeMM-Embedding-2B |
64、128、256、512、1024、2048 |
WeMM-Embedding-4B |
64、128、256、512、1024、2560 |
WeMM-Embedding-9B |
64、128、256、512、1024、2048、4096 |
三个模型均支持文本、图像、视频、视觉文档和交错式多模态输入。目前不支持音频。在解读广泛的多模态基准测试结果时,这一限制十分重要:在 MMEB-v3 汇总评估中,音频任务的得分被设为零。
嵌入向量从模型最后一层隐藏状态中专用的 <embedding> token 位置提取。随后对生成的向量进行 L2 归一化,使其能够直接用于向量数据库和检索流程中的余弦相似度或点积搜索。
安装与推理
克隆代码仓库并安装依赖:
pip install -r requirements.txt
项目建议在推理和复现时使用 transformers==5.2.0。更新版本可能会改变预处理行为,因此在复现代码仓库示例或基准测试数据时固定版本是合理的做法。
Transformers 推理
Transformers 示例可分别接受文本、图像和视频输入:
python examples/transformers_inference.py \
--model /path/to/WeMM-Embedding-2B \
--image /path/to/image.jpg \
--video /path/to/video.mp4 \
--dimension 2048
该命令会为提供的文本、图像和视频输入分别生成嵌入。如果省略 --dimension,模型将输出完整维度的嵌入。2B 模型的完整维度为 2048;4B 模型为 2560,9B 模型为 4096。
Sentence Transformers
项目还提供了 Sentence Transformers 集成:
python examples/sentence_transformers_inference.py \
--model /path/to/WeMM-Embedding-2B \
--image /path/to/image.jpg \
--video /path/to/video.mp4 \
--dimension 2048
与上面的本地路径示例不同,SentenceTransformer 可以直接加载 Hugging Face 模型 ID。例如:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("tencent/WeMM-Embedding-2B")
文本、图像和视频输入会通过 SentenceTransformer.encode() 处理。--dimension 选项用于选择所需的 Matryoshka 表示,使应用能够在向量大小和搜索成本与检索质量之间进行权衡。
Matryoshka 嵌入:无需重新训练即可使用更小的向量
WeMM-Embedding 支持 Matryoshka Representation Learning,即 MRL。单个模型可以在多个维度上生成有效嵌入,而不需要为每种向量大小分别训练一个模型。
要创建低维表示,可以截断完整向量,然后再次对结果进行归一化:
import torch
embedding = torch.nn.functional.normalize(
embedding[..., :d],
dim=-1,
)
第二次归一化很重要。截断会改变向量的范数,因此重新归一化可以保持相似度计算的一致性。
代码仓库报告称,在 MMEB-v2 上,2B 模型使用 256 维向量时,仍能保留其完整维度图像和视频性能的 98.7%。这可以显著降低存储、内存带宽以及近似最近邻索引的成本。在实际部署中,可以使用 256 维向量进行第一阶段搜索,同时在需要更高召回率时保留使用更高维度的选项。
使用 vLLM 或 SGLang 提供服务
这些模型可以通过 vLLM 或 SGLang 作为池化端点提供服务。代码仓库测试的版本分别为 vLLM 0.27.0 和 SGLang 0.5.9。
对于 vLLM:
MODEL_PATH=/path/to/WeMM-Embedding-2B
vllm serve "$MODEL_PATH" \
--runner pooling \
--chat-template "$MODEL_PATH/embedding_chat_template.jinja"
对于 SGLang,首先应用项目提供的视频处理补丁,然后启动嵌入服务器:
MODEL_PATH=/path/to/WeMM-Embedding-2B
python scripts/patch_sglang_video.py
python -m sglang.launch_server \
--model-path "$MODEL_PATH" \
--is-embedding \
--enable-precise-embedding-interpolation
scripts/serve_vllm.sh 和 scripts/serve_sglang.sh 中包含了对应的封装脚本。对于视频工作负载而言,显式的视频补丁和精确插值选项尤其重要,因为帧采样和时间预处理可能同时影响延迟与检索质量。
基准测试性能
在涵盖 78 个数据集的 MMEB-v2 上,图像和视频任务使用 Hit@1 进行评测,视觉文档任务使用 NDCG@5。2B WeMM-Embedding 模型报告的平均得分为 77.9,其中图像、视频和视觉文档得分分别为 79.6、70.8 和 80.7。4B 模型的平均得分达到 79.2,而 9B 模型达到 80.6;其图像、视频和视觉文档得分分别为 81.9、74.3 和 83.3。
作为参考,Qwen3-VL-Embedding 在 MMEB-v2 上报告的平均得分为:2B 模型 73.2,8B 模型 77.8。代码仓库还列出了 DME-Small 的 74.8 和 DME-Medium 的 78.4;这些结果被标记为闭源排行榜提交,未公开发布权重或公共推理端点。
在更广泛的 MMEB-v3 评估中,该评估包含 190 个任务,涵盖 78 个 MMEB-v2 任务、53 个文本任务、47 个智能体任务、11 个音频任务以及 MCMR,WeMM-Embedding 的报告结果如下:
- 2B: V3-All 56.0,Text 45.3,Agent 45.1,MCMR 42.5,Audio 0.0
- 4B: V3-All 58.2,Text 47.9,Agent 49.0,MCMR 41.9,Audio 0.0
- 9B: V3-All 59.5,Text 48.8,Agent 51.0,MCMR 49.3,Audio 0.0
文本结果使用 NDCG@5,而智能体、MCMR 和音频结果使用 Hit@1。9B 模型的音频得分为零,是因为不支持音频输入,并非因为该模型被作为音频编码器进行评测。
复现评估
mmeb_v3_eval/ 目录包含用于生成上述结果的评估代码。该代码基于官方 TIGER-AI-Lab/VLM2Vec 流程,并针对多节点、多 GPU 推理、WeMM 专用骨干网络、批量预处理、对齐的数据集指令以及 64 帧视频采样进行了修改。
典型的评估设置如下:
cd mmeb_v3_eval
DATA_ROOT=/path/to/MMEB-V3 \
bash scripts/download_data.sh
MODEL_PATH=/path/to/WeMM-Embedding-2B \
DATA_BASEDIR=/path/to/MMEB-V3 \
OUTPUT_DIR=exps/wemm_embedding \
bash scripts/run_eval.sh
评估工具还记录了使用 torchrun --nnodes=N 执行单节点和多节点评估的方法,这对于测试更大的检查点或复现完整基准测试十分有用。
WeMM-Embedding 的适用场景
当系统需要为多种媒体类型提供统一的检索接口时,WeMM-Embedding 尤其具有吸引力。产品目录可以将文本描述与产品图像进行匹配,知识库可以在检索文章的同时查找截图和扫描文档,视频档案则可以将自然语言查询匹配到采样片段。
主要的工程选择包括模型规模、嵌入维度和服务后端。更小的检查点和 Matryoshka 维度可以降低基础设施成本,而 9B 模型在代码仓库中提供了最高的报告基准得分。在为生产环境选择模型之前,团队还应考虑视频预处理、GPU 内存、向量索引需求以及不支持音频这一限制。
代码仓库目前仅包含 14 次提交,也没有已发布的版本或软件包,因此固定版本并验证准确的预处理技术栈尤其重要。第三方组件保留其各自的许可证和版权声明,部署前应进行审查。
引用
如果你在研究或生产实验中使用该项目,作者请求引用以下文献:
@article{wemm-embedding,
title={WeMM-Embedding: WeChat Multi-Modal Embedding Technical Report},
author={Junjie Zhou and Ke Mei and Lei Li and Tianyi Wang and Fengyun Rao and Jing Lyu},
year={2026},
eprint={2608.24053},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2608.24053}
}
来源
Tencent/WeMM-Embedding:WeMM-Embedding 是由腾讯微信视觉团队开发的通用多模态嵌入模型系列,支持多模态理解与检索。