tencent_hunyuan/WeMM-Embedding-2B
模型介绍
文件和版本
Pull Requests
讨论
分析

WeMM-Embedding-2B

Hugging Face Technical Report GitHub

WeMM-Embedding-2B 是构建于 Qwen3.5 之上的通用多模态嵌入模型。它支持文本、图像、视频、视觉文档以及交错多模态输入,并返回 2,048 维的 L2 归一化嵌入。不支持音频输入。

安装

pip install torch transformers==5.2.0 "qwen-vl-utils[decord]==0.0.14" \
  "sentence-transformers>=5.7.0" "accelerate>=1.1.0"

Transformers

import torch
from qwen_vl_utils import process_vision_info
from transformers import AutoModel, AutoProcessor

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()

messages = [{"role": "user", "content": [
    {"type": "image", "image": "/path/to/image.jpg"},
    {"type": "video", "video": "/path/to/video.mp4"},
    {"type": "text", "text": "This can be any text input."},
]}]
text = processor.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=False
)
images, videos, video_kwargs = process_vision_info(
    messages,
    image_patch_size=16,
    return_video_kwargs=True,
    return_video_metadata=True,
)
if videos is not None:
    videos, video_metadata = zip(*videos)
    videos, video_metadata = list(videos), list(video_metadata)
else:
    video_metadata = None
inputs = processor(
    text=text,
    images=images,
    videos=videos,
    video_metadata=video_metadata,
    return_tensors="pt",
    **video_kwargs,
).to("cuda")

with torch.inference_mode():
    embedding = model.embedding(**inputs)

可使用任意内容项子集,独立编码文本、图像或视频。

Sentence Transformers

from sentence_transformers import SentenceTransformer

model_id = "tencent/WeMM-Embedding-2B"
model = SentenceTransformer(model_id, trust_remote_code=True)

queries = [
    "Which Llama 4 model variants are available?",
    "How is mapo tofu prepared?",
]
documents = [
    "Mapo tofu is a Sichuan dish of soft tofu simmered in a spicy, numbing sauce of chili bean paste and Sichuan peppercorn.",
    {
        "image": "https://huggingface.co/datasets/sentence-transformers/example-documents/resolve/main/llama4_hgf.png",
    },
    {
        "video": "https://huggingface.co/datasets/sentence-transformers/example-documents/resolve/main/mapo_tofu.mp4",
    },
]

query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings.shape)
# (2, 2048) (3, 2048)

similarities = model.similarity(query_embeddings, document_embeddings)
print(similarities)
# tensor([[0.0685, 0.5379, 0.0423],
#         [0.7829, 0.1852, 0.4729]])

每个输入都可以是字符串、URL 或路径、PIL.Image,或一个组合了 image、video 和 text 键的 dict。也支持类似如下的聊天消息: {"role": "user", "content": [{"type": "image", "image": ...}, {"type": "text", "text": ...}]} 这是在同一条输入中交错放置多张图片或视频的方式。

Matryoshka 嵌入

embedding_256 = torch.nn.functional.normalize(embedding[..., :256], dim=-1)

使用 Sentence Transformers 时,传入 truncate_dim,让其重新归一化:

embeddings_256 = model.encode_document(documents, truncate_dim=256, normalize_embeddings=True)

请使用 model.config.matryoshka_dimensions 中列出的任一维度。在 MMEB-v2 上,256 维嵌入可保留全维度图像与视频性能的 98.7%。

服务

vLLM 0.27.0:

MODEL_PATH=/path/to/WeMM-Embedding-2B
vllm serve "$MODEL_PATH" \
  --runner pooling \
  --chat-template "$MODEL_PATH/embedding_chat_template.jinja"

SGLang 0.5.9:

MODEL_PATH=/path/to/WeMM-Embedding-2B
python patch_sglang_video.py
python -m sglang.launch_server \
  --model-path "$MODEL_PATH" \
  --is-embedding \
  --enable-precise-embedding-interpolation

评估

MMEB-v2

技术报告 表 1 中 78 个数据集上的结果。图像与视频任务采用 Hit@1,视觉文档任务采用 NDCG@5。分数越高越好。

模型规模平均图像视频视觉文档
VLM2Vec2B47.859.729.044.0
GME2B55.451.933.976.8
VLM2Vec-V22B59.364.934.969.2
Qwen3-VL-Embedding2B73.275.061.979.2
DME-Small†2B74.875.965.679.9
WeMM-Embedding2B77.979.670.880.7
WeMM-Embedding4B79.280.872.182.0
VLM2Vec8B53.265.534.049.1
GME8B59.256.038.679.3
Qwen3-VL-Embedding8B77.880.167.182.4
DME-Medium†9B78.479.870.882.0
WeMM-Embedding9B80.681.974.383.3

† 闭源排行榜提交,未公开发布模型权重或公开推理端点。

MMEB-v3

技术报告 表 2 中全部 190 项任务的结果。V3-All 包含 78 项 MMEB-v2 任务、53 项文本任务、47 项智能体任务、11 项音频任务以及 MCMR。不支持的任务按零分计。

模型规模V3-All文本智能体MCMR音频
VLM2Vec-V22B38.324.528.74.10.0
Omni-Embed-Nemotron3B43.539.236.526.136.5
E5-Omni3B44.626.736.931.930.8
Qwen3-VL-Embedding2B50.939.239.342.00.0
WeMM-Embedding2B56.045.345.142.50.0
WeMM-Embedding4B58.247.949.041.90.0
WAVE7B26.313.711.38.931.8
VLM2Vec8B32.922.219.70.90.0
LCO-Embedding-Omni7B40.632.427.820.043.2
GME8B43.637.135.627.30.0
E5-Omni7B47.126.936.741.143.0
Tianmu-Emb-Uni8B53.343.639.438.838.9
Qwen3-VL-Embedding8B53.542.538.438.00.0
WeMM-Embedding9B59.548.851.049.30.0

文本结果使用 NDCG@5;智能体、MCMR 和音频结果使用 Hit@1。

引用

如果您觉得本仓库有用,请考虑点亮星标 ⭐ 并提供引用

@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}, 
}

许可证

由腾讯公开发布的 WeMM-Embedding-2B,包括代码、模型参数和权重,均依据 Apache License 2.0 授权。 第三方组件仍受其各自原始许可证约束。