Skip to page content
SAVRN
Search Plan a project

Open-weight model · Feature extraction

WeMM-Embedding-2B-GGUF

by Lain Soykaf lainsoykaf/WeMM-Embedding-2B-GGUF

WeMM-Embedding-2B-GGUF is an open-weight model for feature extraction from Lain Soykaf, released under Apache License 2.0. Its published files total 2.2 GB.

Unofficial GGUF conversion of tencent/WeMM-Embedding-2B for llama.cpp. It is the default embedding model of imgsearch, a local-first image search app. Not affiliated with or endorsed by Tencent.

Parameters—
Context—
Weights2.2 GB
Licenseapache-2.0
AccessOpen weights
Monthly Downloads—

Model Card

By Lain Soykaf, published under apache-2.0, revision b68edaf5445e.

Unofficial GGUF conversion of tencent/WeMM-Embedding-2B for llama.cpp. It is the default embedding model of imgsearch, a local-first image search app. Not affiliated with or endorsed by Tencent. All credit for the model goes to the WeChat Vision Team; it is licensed under Apache 2.0. Both files are needed for image input. Output: 2048 dimensions, L2-normalize; Matryoshka truncation (re-normalize) to 1024/512/256 works well. The prompt must match the reference processor output exactly. No system turn, no instruction; queries and documents are encoded the same way. Take the last-token hidden state (pooling none, last position, or --pooling last): is the llama.cpp mtmd media marker; mtmd adds…

Read Lain Soykaf's full model card

WeMM-Embedding-2B GGUF (unofficial)

Unofficial GGUF conversion of tencent/WeMM-Embedding-2B for llama.cpp. It is the default embedding model of imgsearch, a local-first image search app. Not affiliated with or endorsed by Tencent. All credit for the model goes to the WeChat Vision Team; it is licensed under Apache 2.0.

File Size SHA-256
WeMM-Embedding-2B-Q4_K_M.gguf 1.56 GB 3c6aa2dab16f250f730e7e87305fbd637a8fd068770d3cae16a0c16e33678d6d
mmproj-WeMM-Embedding-2B-f16.gguf 0.67 GB 02115c4aebe057aaf0473c8c9ee4efbbd080ae1b07386910cb326c1c042baaaa

Usage

Both files are needed for image input. Output: 2048 dimensions, L2-normalize; Matryoshka truncation (re-normalize) to 1024/512/256 works well.

The prompt must match the reference processor output exactly. No system turn, no instruction; queries and documents are encoded the same way. Take the last-token hidden state (pooling none, last position, or --pooling last):

text:  <|im_start|>user\n{text}<|im_end|>\n<embedding>
image: <|im_start|>user\n<__media__><|im_end|>\n<embedding>

<__media__> is the llama.cpp mtmd media marker; mtmd adds the vision start/end tokens. <embedding> (id 248077) is a control token and must be parsed as special.

Conversion

Made with llama.cpp 5343f45 (convert_hf_to_gguf.py, llama-quantize) from the official safetensors, with two adjustments:

  1. WeMM's tokenizer.json adds a normalizer (strips a trailing \n) and a post-processor (appends <embedding>). Both change the converter's pre-tokenizer hash. The conversion used a copy with normalizer set to {"type": "NFC"} and post_processor set to null. Vocabulary and merges are unchanged; the prompt above adds <embedding> explicitly.
  2. --no-mtp: the config declares an MTP layer that the weights do not contain.

Text model: f16 → Q4_K_M. Vision projector: f16.

Evaluation

Flickr30k 1k test (1,000 images, 5,000 captions), images resized to a maximum side of 384 px, through imgsearch's llama.cpp pipeline:

Model Quant T2I R@1 T2I R@5 I2T R@1 ms/image (M2 Max) ms/image (Radeon 780M)
Qwen3-VL-Embedding-2B Q6_K 80.8 94.7 94.3 242 –
Qwen3-VL-Embedding-8B Q4_K_M 81.1 95.0 94.5 799 1095
WeMM-Embedding-2B Q6_K 84.2 96.6 94.7 202 –
WeMM-Embedding-2B (this repo) Q4_K_M 84.1 96.5 95.0 236 421

Against the transformers reference, text embeddings reach cosine ≈0.99 at Q4_K_M (0.9999 at Q8_0). Image embeddings reach 0.95–0.97 with identical pixels; this gap comes from llama.cpp's vision implementation, not from quantization.

Identity and Version

Repository
lainsoykaf/WeMM-Embedding-2B-GGUF
Publisher
Lain Soykaf
Task
Feature extraction
Modality
Text
Library
gguf
Parameters
Not stated by the source
Languages
Not stated by the source
Revision
b68edaf5445e45bb0131ac9fd238805228c9255f
First published
2026-10-14
Last updated
2026-10-14

Files and Weights

4 files, 2.2 GB in total. The weights are 2 files totalling 2.2 GB in gguf.

Weights2 files · 2.2 GB
Documentation1 file · 3.0 KB
Repository1 file · 1.7 KB
Every file
FileTypeSizeSHA-256
WeMM-Embedding-2B-Q4_K_M.ggufWeights1.6 GB 3c6aa2dab16f
mmproj-WeMM-Embedding-2B-f16.ggufWeights668.2 MB 02115c4aebe0
README.mdDocumentation3.0 KB —
.gitattributesRepository1.7 KB —

License and Download

License
apache-2.0
Access
Open weights, no gate
Download size
2.2 GB
Download from Lain Soykaf

Released by Lain Soykaf through its official repository on Hugging Face. Read the license.

Built From

  • Derived from tencent/WeMM-Embedding-2B
  • Quantized from tencent/WeMM-Embedding-2B

Memory Requirements

PrecisionWeights in memory
As published2.2 GB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About WeMM-Embedding-2B-GGUF

Can I use WeMM-Embedding-2B-GGUF commercially?

Yes. WeMM-Embedding-2B-GGUF is released under Apache License 2.0. The Apache License 2.0 is a permissive open-source license. It permits commercial use, modification and redistribution. It requires keeping the license and copyright notices and any NOTICE file, stating significant changes, and it includes an express patent grant from contributors.

Similar Models

Model · Feature extraction

all-MiniLM-L6-v2

Joshua

https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2 with ONNX weights to be compatible with Transformers.js. If you haven't already, you can install the Transformers.js JavaScript library from NPM using: You can then use the model to compute embeddings like this: You can convert this Tensor to a nested JavaScript array using.tolist(): Note: Having a separate repo for ONNX weights is intended to be a temporary solution until WebML gains more traction. If you would like to make your models web-ready, we recommend converting to ONNX using Optimum and structuring your repo like this one (with ONNX weights located in a subfolder named onnx).

Open weights apache-2.0 512 tokens transformers.js

Model · Feature extraction

bge-base-en-v1.5

Joshua

https://huggingface.co/BAAI/bge-base-en-v1.5 with ONNX weights to be compatible with Transformers.js. If you haven't already, you can install the Transformers.js JavaScript library from NPM using: You can then use the model to compute embeddings, as follows: You can also use the model for retrieval. For example: Note: Having a separate repo for ONNX weights is intended to be a temporary solution until WebML gains more traction. If you would like to make your models web-ready, we recommend converting to ONNX using Optimum and structuring your repo like this one (with ONNX weights located in a subfolder named onnx).

Open weights mit 512 tokens transformers.js

For more details please refer to our Github: FlagEmbedding. If you are looking for a model that supports more languages, longer texts, and other retrieval methods, you can try using bge-m3. FlagEmbedding focuses on retrieval-augmented LLMs, consisting of the following projects currently: - 1/30/2024: Release BGE-M3, a new member to BGE model series! M3 stands for Multi-linguality (100+ languages), Multi-granularities (input length up to 8192), Multi-Functionality (unification of dense, lexical, multi-vec/colbert retrieval). It is the first embedding model which supports all three retrieval methods, achieving new SOTA on multi-lingual (MIRACL) and cross-lingual (MKQA) benchmarks. Technical…

Open weights mit 512 tokens sentence-transformers

Model · Feature extraction

wavlm-large

Microsoft

The large model pretrained on 16kHz sampled speech audio. When using the model, make sure that your speech input is also sampled at 16kHz. Note: This model does not have a tokenizer as it was pretrained on audio alone. In order to use this model speech recognition, a tokenizer should be created and the model should be fine-tuned on labeled text data. Check out this blog for more in-detail explanation of how to fine-tune the model. - 60,000 hours of Libri-Light - 10,000 hours of GigaSpeech - 24,000 hours of VoxPopuli Authors: Sanyuan Chen, Chengyi Wang, Zhengyang Chen, Yu Wu, Shujie Liu, Zhuo Chen, Jinyu Li, Naoyuki Kanda, Takuya Yoshioka, Xiong Xiao, Jian Wu, Long Zhou, Shuo Ren, Yanmin…

Open weights transformers

Model · Feature extraction

clap-htsat-unfused

LAION eV

The abstract of the paper states that: You can use this model for zero shot audio classification or extracting audio and/or textual features. You can also get the audio and text embeddings using ClapModel If you are using this model for your work, please consider citing the original paper

Open weights apache-2.0 514 tokens transformers