WeMM-Embedding: recuperación multimodal universal de Tencent

Los modelos WeMM-Embedding de Tencent unifican texto, imágenes, vídeo y documentos visuales en un único espacio de embeddings, con sólidos resultados en benchmarks y dimensiones flexibles.

WeMM-Embedding: modelos de embeddings multimodales universales de Tencent

Los sistemas de recuperación multimodal suelen volverse complicados porque cada tipo de datos necesita su propio codificador, canal de preprocesamiento y estrategia de similitud. El equipo de WeChat Vision de Tencent adopta un enfoque diferente con WeMM-Embedding, una familia de modelos de embeddings diseñados para representar texto, imágenes, vídeos, documentos visuales y entradas multimodales intercaladas en un espacio vectorial unificado.

Esto hace que los modelos sean útiles para aplicaciones como la búsqueda de imágenes y texto, la recuperación de vídeos, el descubrimiento de documentos visuales, la recomendación multimodal y la generación aumentada mediante recuperación sobre contenido multimedia mixto. El proyecto es de código abierto bajo la licencia Apache 2.0 para el código escrito por Tencent e incluye ejemplos de inferencia, scripts de servicio y el pipeline de evaluación utilizado para obtener los resultados publicados.

Familia de modelos y entradas compatibles

El repositorio proporciona tres tamaños de modelo:

Modelo Dimensiones Matryoshka compatibles
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

Los tres modelos admiten texto, imágenes, vídeos, documentos visuales y entradas multimodales intercaladas. El audio no es compatible actualmente. Esta limitación es importante al interpretar los resultados generales de los benchmarks multimodales: las tareas de audio reciben una puntuación de cero en la evaluación agregada MMEB-v3.

Los embeddings se extraen del estado oculto de la última capa en la posición del token dedicado <embedding> del modelo. A continuación, el vector resultante se normaliza mediante L2, lo que facilita el uso de la similitud coseno o la búsqueda por producto punto en bases de datos vectoriales y pipelines de recuperación.

Instalación e inferencia

Clona el repositorio e instala sus dependencias:

pip install -r requirements.txt

El proyecto recomienda transformers==5.2.0 para la inferencia y la reproducibilidad. Las versiones más recientes pueden modificar el comportamiento del preprocesamiento, por lo que fijar la versión es una decisión razonable al reproducir los ejemplos o las cifras de los benchmarks del repositorio.

Inferencia con Transformers

El ejemplo de Transformers acepta entradas de texto, imagen y vídeo de forma independiente:

python examples/transformers_inference.py \
  --model /path/to/WeMM-Embedding-2B \
  --image /path/to/image.jpg \
  --video /path/to/video.mp4 \
  --dimension 2048

El comando produce embeddings separados para las entradas de texto, imagen y vídeo proporcionadas. Si se omite --dimension, el modelo genera su dimensión de embedding completa. En el modelo 2B, ese tamaño completo es de 2048 dimensiones; el modelo 4B utiliza 2560 y el 9B utiliza 4096.

Sentence Transformers

El proyecto también proporciona una integración con 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

A diferencia del ejemplo anterior, que utiliza una ruta local, SentenceTransformer puede cargar directamente un ID de modelo de Hugging Face. Por ejemplo:

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("tencent/WeMM-Embedding-2B")

Las entradas de texto, imagen y vídeo se procesan mediante SentenceTransformer.encode(). La opción --dimension selecciona la representación Matryoshka deseada, lo que permite a las aplicaciones intercambiar tamaño de vector y coste de búsqueda por calidad de recuperación.

Embeddings Matryoshka: vectores más pequeños sin reentrenamiento

WeMM-Embedding admite Matryoshka Representation Learning, o MRL. Un único modelo puede producir embeddings útiles en varias dimensiones, en lugar de requerir un modelo independiente para cada tamaño de vector.

Para crear una representación de menor dimensión, trunca el vector completo y vuelve a normalizar el resultado:

import torch

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

El segundo paso de normalización es importante. El truncamiento cambia la norma del vector, por lo que renormalizarlo mantiene coherentes los cálculos de similitud.

El repositorio informa de que, en MMEB-v2, el modelo 2B con 256 dimensiones conserva el 98,7 % de su rendimiento en imágenes y vídeos con respecto a la representación de dimensión completa. Esto puede reducir considerablemente los costes de almacenamiento, ancho de banda de memoria e indexación de vecinos más cercanos aproximados. Un despliegue práctico puede utilizar vectores de 256 dimensiones para una búsqueda inicial y mantener la opción de usar una dimensión mayor cuando sea necesario obtener más exhaustividad.

Servicio con vLLM o SGLang

Los modelos pueden exponerse como endpoints de pooling mediante vLLM o SGLang. El repositorio probó vLLM 0.27.0 y SGLang 0.5.9.

Para vLLM:

MODEL_PATH=/path/to/WeMM-Embedding-2B

vllm serve "$MODEL_PATH" \
  --runner pooling \
  --chat-template "$MODEL_PATH/embedding_chat_template.jinja"

Para SGLang, aplica primero el parche de procesamiento de vídeo del proyecto y, después, inicia el servidor de embeddings:

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

También se incluyen wrappers equivalentes en scripts/serve_vllm.sh y scripts/serve_sglang.sh. El parche explícito para vídeo y la opción de interpolación precisa son especialmente relevantes para cargas de trabajo de vídeo, donde el muestreo de fotogramas y el preprocesamiento temporal pueden afectar tanto a la latencia como a la calidad de recuperación.

Rendimiento en benchmarks

En MMEB-v2, que abarca 78 conjuntos de datos, las tareas de imágenes y vídeos se miden con Hit@1 y las tareas de documentos visuales con NDCG@5. El modelo WeMM-Embedding 2B informa de una puntuación media de 77,9, con puntuaciones de 79,6 para imágenes, 70,8 para vídeos y 80,7 para documentos visuales. El modelo 4B alcanza una media de 79,2, mientras que el modelo 9B llega a 80,6, con puntuaciones para imágenes, vídeos y documentos visuales de 81,9, 74,3 y 83,3, respectivamente.

Como referencia, Qwen3-VL-Embedding informa de medias MMEB-v2 de 73,2 con 2B y 77,8 con 8B. El repositorio también incluye DME-Small con 74,8 y DME-Medium con 78,4; estos aparecen marcados como envíos de leaderboard de código cerrado, sin pesos publicados ni un endpoint de inferencia público.

En la evaluación más amplia MMEB-v3, que contiene 190 tareas que abarcan las 78 tareas de MMEB-v2, 53 tareas de texto, 47 tareas de agentes, 11 tareas de audio y MCMR, WeMM-Embedding informa de:

  • 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

Los resultados de texto utilizan NDCG@5, mientras que los resultados de agentes, MCMR y audio utilizan Hit@1. La puntuación de audio del modelo 9B es cero porque no admite entradas de audio, no porque el modelo se haya evaluado como un codificador de audio.

Reproducción de la evaluación

El directorio mmeb_v3_eval/ contiene el código de evaluación utilizado para las cifras publicadas. Se basa en el pipeline oficial de TIGER-AI-Lab/VLM2Vec, con cambios para la inferencia multinodo y multiGPU, un backbone específico de WeMM, preprocesamiento por lotes, instrucciones de conjuntos de datos alineadas y muestreo de vídeo de 64 fotogramas.

Una configuración de evaluación típica es:

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

Las herramientas de evaluación también documentan la ejecución en un solo nodo y en varios nodos mediante torchrun --nnodes=N, lo que resulta útil al probar checkpoints más grandes o reproducir el benchmark completo.

Cuándo encaja WeMM-Embedding

WeMM-Embedding resulta especialmente atractivo cuando un sistema necesita una única interfaz de recuperación para varios tipos de contenido multimedia. Un catálogo de productos podría buscar descripciones de texto frente a imágenes de productos; una base de conocimiento podría recuperar capturas de pantalla y documentos escaneados junto con prosa; y un archivo de vídeo podría relacionar consultas en lenguaje natural con clips muestreados.

Las principales decisiones de ingeniería son el tamaño del modelo, la dimensión de los embeddings y el backend de servicio. Los checkpoints más pequeños y las dimensiones Matryoshka reducen el coste de infraestructura, mientras que el modelo 9B ofrece las puntuaciones de benchmark publicadas más altas del repositorio. Los equipos también deben tener en cuenta el preprocesamiento de vídeo, la memoria de la GPU, los requisitos del índice vectorial y la falta de compatibilidad con audio antes de seleccionar el modelo para producción.

El repositorio solo incluye 14 commits y no cuenta con versiones publicadas ni paquetes, por lo que fijar las versiones y validar la pila exacta de preprocesamiento son aspectos especialmente importantes. Los componentes de terceros conservan sus propias licencias y avisos de copyright, que deben revisarse antes del despliegue.

Cita

Si utilizas el proyecto en investigaciones o experimentos de producción, los autores solicitan la siguiente cita:

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

Fuente

Tencent/WeMM-Embedding: WeMM-Embedding es una familia de modelos de embeddings multimodales universales del equipo de WeChat Vision de Tencent, compatible con la comprensión y recuperación multimodales.