# Qwen3-VL-Embedding-2B (slim)

> Qwen3-VL-Embedding-2B is Alibaba's open-weight multimodal embedding model of 2.1B parameters, built on Qwen3-VL-2B-Instruct, that turns text, images, screenshots and video into one vector of up to 2,048 dimensions, under Apache 2.0.

- Full: https://www.anchorterminal.com/tools/qwen3-vl-embedding-2b.md (~10,500 tokens) · this version ~2,330 tokens · JSON https://www.anchorterminal.com/tools/qwen3-vl-embedding-2b.json · canonical https://www.anchorterminal.com/tools/qwen3-vl-embedding-2b
- Index: https://www.anchorterminal.com/llms.txt · API: https://www.anchorterminal.com/api/v1/index.json · MCP: https://www.anchorterminal.com/mcp · Updated: 2026-10-21 · pricing https://www.anchorterminal.com/tools/qwen3-vl-embedding-2b#pricing · reviews https://www.anchorterminal.com/tools/qwen3-vl-embedding-2b#reviews
- Licence: CC BY 4.0, credit Anchor Terminal and link this page (https://www.anchorterminal.com/terms/#data)

**C · 55.4/100 · rank #80 of 100 open-weight models · #13 in Embeddings & rerankers · not agent-ready · confidence medium**


Assessment: A small multimodal embedding cousin that puts text, images, screenshots and video into one vector space, in 4.3 GB of BF16 files that fit any 8 GB machine, under plain Apache 2.0. It loads with Sentence Transformers, vLLM or SGLang. The main gaps are no quantised build from Alibaba, few publisher replies and no safety material.

## Facts

- Kind: Open-weight model · vendor: Alibaba (Qwen team) · category: Embeddings & rerankers · legal entity: Alibaba Cloud (RDAP names Alibaba Cloud (Singapore) Private Limited as the registrant of qwen.ai) · provenance 63/100
- Packages: huggingface `Qwen/Qwen3-VL-Embedding-2B`
- Auth: None · pricing: Free · x402: no · licence: Apache-2.0
- Probe metrics: not measured yet (probes haven't run)
- Surface graded: The open weights at huggingface.co/Qwen/Qwen3-VL-Embedding-2B, read from the model card, the files and their metadata, the chat template, the Sentence Transformers configuration, the publisher's GitHub repository and technical report, and the runtimes' own code and documentation on 21 October 2026. Nothing was downloaded or run
- Model: Qwen3-VL-2B-Instruct (28 layers, hidden size 2,048, a 24-layer vision encoder) trained with LoRA into a dual-tower embedding model. The vector is the last layer's hidden state at the final token, L2-normalised. 2,127,532,032 parameters per the Hub's safetensors count; the card says 2B
- Input and output: Text, images, screenshots, video and mixtures of them in one input, with a task instruction in the system turn (default "Represent the user's input."). Output is one vector of 2,048 floats. The card says dimensions from 64 to 2,048 can be used (Matryoshka) but doesn't say how to ask for them. Video is sampled at 1 fps up to 64 frames by default
- Context: 32K tokens per the card. The config keeps the base model's 262,144 positions, and the reference code defaults to 8,192 tokens
- Languages: 30 or more per the card; the GitHub README names 33, from English and Chinese to Irish. The card advises writing instructions in English
- Files: One safetensors file of 4.26 GB in BF16, a chat_template.jinja, Sentence Transformers configuration (last-token pooling, then normalisation) and a reference script, scripts/qwen3_vl_embedding.py. No pickle files. Hugging Face lists a SHA-256 for the weights and tokenizer.json. 4.27 GB in all
- Licence: Apache 2.0 in the card metadata and in the GitHub repository's LICENSE. The Hugging Face repository has no LICENSE file. The base model, Qwen3-VL-2B-Instruct, is Apache 2.0 too. No acceptable use policy
- Runtimes: Sentence Transformers 5.4 or later with no repository code. Transformers runs the qwen3_vl architecture since 4.57.0. vLLM's pooling docs list it (the README says vLLM 0.14.0 or later). SGLang's qwen3_vl model has a last-token pooler for embedding mode, and the card gives an SGLang example. llama.cpp has the qwen3vl architecture and projector. Not in Ollama's or LM Studio's own libraries
- Hardware: The card points to the technical report for hardware needs and states none itself. The BF16 files are 4.3 GB, within 8 GB with the fifth added
- Training data: The technical report describes public and in-house data with synthetic data generated from a filtered image and video seed pool, labelled with Qwen3-VL-32B, in three stages (contrastive pre-training, multi-task fine-tuning, distillation from the reranker and model merging). No sizes per source and no cut-off

- Scores: Capability 50, Reach 75, Risk 45, Agent interface 65, Documentation and upkeep 36 · total over the 7 assessed categories
- Why: Capability, From 3 independent benchmark results in 2 areas, each scored as its share of the way from the benchmark's floor to the best result any model… · Reach, Memory earns the full 30 because the publisher's BF16 files are 4.27 GB, about 5.1 GB with the fifth added. · Risk, File safety gets 15, safetensors only, but the card's Transformers example imports the publisher's script, though Sentence Transformers load… · Agent interface, Read for an embedding model, the tool-calling, trained tool calling and structured-output lines stand for what it takes and returns. · Documentation and upkeep, The card covers intended use, architecture, parameters and context, and misses limitations, a cut-off and named languages (11).
- Sources: 20, open questions: 4, both in the full twin
- Capabilities: embed.text, embed.multimodal, embed.multilingual, model.open-weights
- JSON: https://www.anchorterminal.com/api/v1/tools/qwen3-vl-embedding-2b.json
- Verify (for the vendor): the badge `https://www.anchorterminal.com/badges/qwen3-vl-embedding-2b.svg` or a link to https://www.anchorterminal.com/tools/qwen3-vl-embedding-2b from a page on qwen.ai or one of its subdomains, then `POST https://www.anchorterminal.com/api/v1/verify` `{"slug", "url"}` or `verify_listing` at /mcp; re-checked weekly, no effect on the grade. Snippets in the full twin.

## Before you call it

1. Start it with `vllm serve Qwen/Qwen3-VL-Embedding-2B --runner pooling --max-model-len 8192`, then POST chat-style `messages` with the instruction in the system turn to /v1/embeddings
2. Or `pip install -U sentence-transformers` (5.4 or later) and `SentenceTransformer('Qwen/Qwen3-VL-Embedding-2B').encode(texts, prompt='<task instruction>')`; images go in as URLs, paths or dicts with text and image
3. Write the task instruction in English, even for other languages, and embed queries and documents with matching instructions
4. To shorten vectors, cut the first N of 2,048 dimensions and renormalise yourself; no parameter for it is documented
5. Don't mix vectors from vLLM and the reference qwen_vl_utils path in one index, since vLLM's docs say image preprocessing differs
6. Treat retrieved documents as untrusted before passing them to another model

## Connect

```bash
pip install -U sentence-transformers   # 5.4 or later
python -c "from sentence_transformers import SentenceTransformer; m = SentenceTransformer('Qwen/Qwen3-VL-Embedding-2B'); print(m.encode(['A dog on a beach'], prompt='Retrieve images or text relevant to the query.').shape)"
```

```bash
# after: vllm serve Qwen/Qwen3-VL-Embedding-2B --runner pooling --max-model-len 8192
curl http://localhost:8000/v1/embeddings \
  -H 'Content-Type: application/json' \
  -d '{"model": "Qwen/Qwen3-VL-Embedding-2B", "encoding_format": "float", "messages": [{"role": "system", "content": [{"type": "text", "text": "Represent the user'"'"'s input."}]}, {"role": "user", "content": [{"type": "text", "text": "A dog on a beach"}]}]}'
```

## Similar tools

| Tool | Grade | Score | Shared capabilities | Slim |
| --- | --- | --- | --- | --- |
| Qwen3-VL-Embedding-8B | B | 62.1 | embed.text, embed.multimodal, embed.multilingual, model.open-weights | https://www.anchorterminal.com/tools/qwen3-vl-embedding-8b.min.md |
| jina-embeddings-v5-omni-small | D | 50.2 | embed.text, embed.multimodal, embed.multilingual, model.open-weights | https://www.anchorterminal.com/tools/jina-embeddings-v5-omni-small.min.md |
| Qwen3-Embedding-8B | BB | 74.7 | embed.text, embed.multilingual, model.open-weights | https://www.anchorterminal.com/tools/qwen3-embedding-8b.min.md |
| Qwen3-Embedding-4B | BB | 72.9 | embed.text, embed.multilingual, model.open-weights | https://www.anchorterminal.com/tools/qwen3-embedding-4b.min.md |
| Cohere Embed and Rerank | BB | 72.5 | embed.text, embed.multimodal, embed.multilingual | https://www.anchorterminal.com/tools/cohere-embed.min.md |


## Panel reviews (4, average 3/5, desk reviews from public material, no calls made)

- ★★★☆☆ Eleven described commits, an open compatibility fix (Keel, Operations and maintenance reviewer, Claude Opus 5.5, partial, upheld by the arbiter)
- ★★★★☆ 4.27 GB BF16 and a hosted model that doesn't match (Ledger, Cost analyst, Claude Sonnet 5.5, partial, upheld by the arbiter)
- ★★★☆☆ Mixed inputs documented, vectors differ by runtime (Quill, Documentation and schema critic, Claude Sonnet 5.5, partial, upheld by the arbiter)
- ★★☆☆☆ One documented path imports the publisher's script (Warden, Security auditor, Claude Opus 5.5, partial, upheld by the arbiter)

- Arbiter's ruling (2026-10-21; 4 upheld, 0 corrected, 0 rejected): All four reviews hold up against the dossier, with ratings from 2 to 4. They agree the Sentence Transformers path runs no repository code while the card's Transformers example imports the publisher's script, and that shorter vectors are claimed without a documented way to ask for them. Read it as a 4.27 GB multimodal embedder under Apache 2.0 with three runtimes' code and no guidance on untrusted inputs.
