NEWVectors or files. Pick a path.Start →
    Models/Embeddings/tencent/WeMM-Embedding-2B
    HFVisual EmbeddingsApache 2.0 (repo LICENSE; the HF card tags it "other")

    WeMM-Embedding-2B

    by tencent

    Tencent's 2B multimodal embedding model: text, image, video and visual documents in one 2,048-dimension space

    424dl/month
    2.72B total (Qwen3.5-2B backbone plus vision tower)params
    Identifiers
    Model ID
    tencent/WeMM-Embedding-2B
    Feature URI
    mixpeek://multimodal_extractor@v2/tencent_wemm_embedding_2b_v1

    Overview

    WeMM-Embedding-2B is a universal multimodal embedding model from the WeChat team at Tencent, released 26 August 2026 on a Qwen3.5-2B backbone. Give it text, an image, a video, a scanned page, or several of those interleaved in one call, and it returns a single L2-normalized 2,048-dimension vector. Audio is the one input it refuses.

    At 2.72B parameters this is the size most archives should try first. It posts a 77.9 MMEB-v2 average against 73.2 for Qwen3-VL-Embedding-2B and 59.3 for VLM2Vec-V2 at the same scale, and it beats every 8B model in the same table except Qwen3-VL-Embedding-8B, which it also passes. It even takes MMEB-v3 MCMR off its own 4B sibling, 42.5 against 41.9.

    Matryoshka training lets you pick the output width when you build the index. The published truncation points are 64, 128, 256, 512, 1,024 and 2,048, and Tencent measured 256-dimension embeddings retaining 98.7% of full-dimension image and video performance on MMEB-v2. Storing 256 floats instead of 2,048 is roughly an 8x cut in bytes per vector, which is usually the line item that decides how much of an archive you can afford to index.

    Architecture

    Qwen3.5-2B language backbone with a 1,024-dimension vision tower, 2,720,809,792 parameters in BF16. The size in the name refers to the language model, so the safetensors total runs higher once the vision encoder is counted. Position embeddings extend to 262,144 tokens. Output is a 2,048-dimension L2-normalized vector with Matryoshka truncation at 64, 128, 256, 512, 1,024 and 2,048. Tencent publishes serving paths for Transformers, Sentence Transformers, vLLM 0.27.0 with the pooling runner, and SGLang 0.5.9.

    Mixpeek SDK Integration

    // WeMM-Embedding has no managed Mixpeek extractor yet, so encode with the
    // model and upsert the vectors. Route verified against the live OpenAPI:
    // POST /v1/namespaces/{namespace_id}/documents/upsert (document_id + vectors
    // are the only required fields).
    const res = await fetch(
      "https://api.mixpeek.com/v1/namespaces/ns_your_namespace/documents/upsert",
      {
        method: "POST",
        headers: {
          Authorization: "Bearer API_KEY",
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          collection_id: "col_your_collection",
          documents: [
            {
              document_id: "reel-00412",
              // 2048 floats from model.embedding(...). Slice and renormalize first
              // if you are storing a truncated Matryoshka dimension.
              vectors: { "multimodal-embedding": wemmVector },
              payload: { title: "Q3 launch reel", duration_s: 94 },
              metadata: { source: "brand-archive" },
            },
          ],
        }),
      },
    );

    Capabilities

    • One vector space covering text, image, video and visual-document queries
    • Matryoshka truncation to 64, 128, 256, 512, 1,024 and 2,048 without re-encoding
    • Interleaved inputs, so several images and a video can share a single embedding call
    • 262,144-token position range for long visual documents
    • Chinese and English
    • Published vLLM 0.27.0 and SGLang 0.5.9 serving recipes

    Use Cases on Mixpeek

    Text-to-video search over an archive, returning moments rather than filenames
    Retrieving scanned pages and slide decks without an OCR stage in front of the index
    Cross-modal dedup, where an image and its caption should land in the same neighbourhood
    Shrinking an existing index to 256 dimensions once storage cost outgrows the accuracy it buys

    Benchmarks

    DatasetMetricScoreSource
    MMEB-v2 (78 datasets)Average77.9WeMM-Embedding technical report, Table 1
    MMEB-v2 ImageHit@179.6Technical report, Table 1
    MMEB-v2 VideoHit@170.8Technical report, Table 1
    MMEB-v2 VisDocNDCG@580.7Technical report, Table 1
    MMEB-v3 (190 tasks)V3-All56.0Technical report, Table 2
    MMEB-v3 TextNDCG@545.3Technical report, Table 2
    MMEB-v3 AgentHit@145.1Technical report, Table 2
    MMEB-v3 MCMRHit@142.5Beats the 4B's 41.9; Table 2
    MMEB-v3 AudioHit@10.0Audio is unsupported and scores zero by construction

    Performance

    Input SizeText, image, video, visual document, or interleaved; 262,144-token position range
    Embedding Dim2048 (Matryoshka down to 64)
    GPU LatencyInput dependent
    GPU ThroughputBatch dependent
    GPU Memory~5 GB in BF16 for weights alone

    Tencent publishes no latency or throughput figures for this model. The memory number is computed from the 2,720,809,792 BF16 parameters in the safetensors index and covers weights only, so serving needs headroom for activations and for batched video frames.

    Frequently Asked Questions

    Can I run WeMM-Embedding on Mixpeek today?

    Not as a managed extractor. GET /v1/discovery/extractors returns 13 shipping extractors and none of them accepts an arbitrary Hugging Face model id, so a collection cannot be pointed at these weights. Two paths work now. Run the model on your own hardware and upsert the vectors through POST /v1/namespaces/{namespace_id}/documents/upsert, which takes a named-vector map and stores it in Mixpeek Vector Store alongside everything else. Or package it as a custom extractor plugin, which is available on Enterprise namespaces.

    Does WeMM-Embedding handle audio?

    No. The model card states that audio input is not supported, and on the 11 audio tasks in MMEB-v3 it scores 0.0, because the benchmark assigns zero to tasks a model cannot attempt. If audio has to live in the same index, the published omni-modal alternatives are Omni-Embed-Nemotron at 36.5 and E5-Omni-7B at 43.0 on the same tasks.

    What licence does WeMM-Embedding carry?

    Apache 2.0. The Hugging Face card sets the license field to "other", which reads as restrictive, and the LICENSE file in the repo resolves it: Tencent states the model is "licensed under Apache-2.0" except for listed third-party components, which keep their original terms. No additional restrictions are imposed beyond those.

    Is the 2B good enough, or should I start with the 9B?

    The 2B recovers 96.7% of the 9B's MMEB-v2 average, 77.9 against 80.6, on 29% of the parameters. Where the 9B pulls away is video (74.3 against 70.8) and the MMEB-v3 agent tasks (51.0 against 45.1). Index a sample with the 2B, score it on your own queries, and move up only if video recall is the thing that falls short.

    How small can the embedding go before quality drops?

    Tencent measured 256-dimension embeddings retaining 98.7% of full-dimension image and video performance on MMEB-v2, which is the only truncation figure they publish. The trained cut points are 64, 128, 256, 512, 1,024 and 2,048. Slicing to an arbitrary width is not supported: use a dimension listed in model.config.matryoshka_dimensions, and renormalize after slicing.

    Specification

    FrameworkHF
    Organizationtencent
    FeatureVisual Embeddings
    Output768-dim vector
    Modalitiesvideo, image
    RetrieverVector Search
    Parameters2.72B total (Qwen3.5-2B backbone plus vision tower)
    LicenseApache 2.0 (repo LICENSE; the HF card tags it "other")
    Downloads/mo424

    Research Paper

    WeMM-Embedding: WeChat Multi-Modal Embedding Technical Report

    arxiv.org

    Build a pipeline with WeMM-Embedding-2B

    Add this model to a processing pipeline alongside other extractors. Combine with retrieval stages for end-to-end search.

    Run it on your own data, free