alt.freeweights.minicpm / Trident-Qwen3VL-2B
From: openbmb <huggingface.co/openbmb>Newsgroups: alt.freeweights.minicpmSubject:

Trident-Qwen3VL-2B

Date: 2026-11-15Commit: ed4ff93Signed: 2DC28CC7B26A283B ✓

Feature extraction model with 2.1B parameters. Safetensors weights, 4.27 GB in all. Published by openbmb under MIT.

2.1B params4.27GBTrident-Qwen3VL-2Bsafetensorspermissive
FactsParams2.1BSize4.27 GBFormatssafetensorsTaskfeature extractionLicenseMITFrom sourcepermissive
$ fw get openbmb/Trident-Qwen3VL-2B
# manifest sha256 c99e5763be22… · 4.27 GB · 16 files
$ fw verify ./Trident-Qwen3VL-2B openbmb/Trident-Qwen3VL-2B
From sourceHosted (signed)openbmb/Trident-Qwen3VL-2BLast check: 2026-11-15 03:50 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Fine-tune of Qwen3-VL-2B-Instruct.

Works with

Evaluate with

Overview

Size
4.27 GB
Weights
4.26 GB (safetensors)
Parameters
2.1B
Formats
safetensors
Task
feature extraction
License
MIT (permissive)
Files
16, each with a sha256
Publisher
openbmb
Added
2026-11-15
Section
alt.freeweights.minicpm
Lineage

Original release from the publisher.

Base model: Qwen/Qwen3-VL-2B-Instruct

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 03:50 UTCpassed

Model card

From the publisher at commit ed4ff93. Shown as plain text with links; images open at the publisher.

Trident-Qwen3VL-2B#

Official model for Chaos in the Text: Revealing the Modality Preference in Mixed-Modality Retrievers

Project Page arXiv Code Model Train data Eval data License

Trident-Qwen3VL-2B is a multimodal embedding model for mixed-modality retrieval. It maps text, images, and fused text-image inputs into one shared space, so a text query can rank text-only, image-only, and fused documents in a single list. It is fine-tuned from Qwen3-VL-2B-Instruct on Trident-Train, as described in the paper Chaos in the Text: Revealing the Modality Preference in Mixed-Modality Retrievers. The LoRA adapter is already merged, so no base model or PEFT is needed.

Quickstart#

1. Set up the code and download the weights

git clone https://github.com/OpenBMB/Trident.git
cd Trident
conda create -n trident python=3.12 -y && conda activate trident
pip install -r requirements.txt     # tested with transformers 4.57.1 (Qwen3-VL needs >= 4.57)

hf download OpenBMB/Trident-Qwen3VL-2B --local-dir checkpoints/Trident-Qwen3VL-2B

2. Encode queries and documents

no repository clone needed

import sys

CKPT = "checkpoints/Trident-Qwen3VL-2B"
sys.path.insert(0, CKPT)

from trident_embedder import TridentEmbedder

model = TridentEmbedder(CKPT)

queries = [
    {"text": "How many stores did Saint Laurent operate in Western Europe in 2020?", "images": []},
]

documents = [
    {"text": "A bar chart showing the number of Saint Laurent stores by region and year.", "images": []},  # text-only
    {"text": None, "images": ["figs/example_chart.png"]},                                                # image-only
    {"text": "Number of stores by region.", "images": ["figs/example_chart.png"]},                       # text + image
]

q = model.process(queries, role="query")
d = model.process(documents, role="doc")
print(q @ d.T)

run from the root of the Trident repository

import sys
sys.path.insert(0, "src")

from embedding_backends.common import (
    ensure_tokenizers_thread_safety,
    ensure_transformers_special_tokens_compat,
)
from embedding_backends.trident_qwen3vl import TridentQwen3VLBackend

ensure_transformers_special_tokens_compat()
ensure_tokenizers_thread_safety()

CKPT = "checkpoints/Trident-Qwen3VL-2B"

backend = TridentQwen3VLBackend(
    {"model_type": "trident_qwen3vl", "checkpoint": CKPT, "dtype": "bfloat16"},
    device="cuda:0",
)
backend.load()


def encode(items, role):
    """items: list of {"text": str | None, "images": [paths]}; role: "query" or "doc"."""
    backend.args_dict["role"] = role
    instruction = backend.default_instruction(role)
    inputs = [{**item, "instruction": instruction} for item in items]
    embeddings, _ = backend.process(inputs, role=role)
    return embeddings  # [N, dim] numpy array, L2-normalised


queries = [
    {"text": "How many stores did Saint Laurent operate in Western Europe in 2020?", "images": []},
]

documents = [
    {"text": "A bar chart showing the number of Saint Laurent stores by region and year.", "images": []},  # text-only
    {"text": None, "images": ["figs/example_chart.png"]},                                                # image-only
    {"text": "Number of stores by region.", "images": ["figs/example_chart.png"]},                       # text + image
]

q = encode(queries, role="query")      # [1, dim]
d = encode(documents, role="doc")      # [3, dim]

scores = q @ d.T                       # cosine similarity, comparable across all document types
print(scores)
print(scores[0].argsort()[::-1])       # document ranking for the query

Each input is a dict with an optional text string and an images list of local image paths. Use text only, images only, or both for fused inputs. Queries and documents use different default instructions, which are part of the training format.

About This Checkpoint#

This is the general-purpose release, trained on the merged visual-document and natural-image data. It is intended for real-world use, where a corpus often contains both document images and natural images and the domain of a query is not known in advance.

It is not the checkpoint behind the numbers in the paper. Please note:

  • Per-domain training in the paper. The results in Table 1 (visual documents) and Table 4 (natural images) come from two separately trained models, using the only_vdoc and only_nature subsets of Trident-Train. We do not release these per-domain checkpoints. The data and code are public, so the paper's numbers can be reproduced by training each domain separately following the paper's setup (Appendix D).
  • No Matryoshka loss. The Matryoshka experiments (Appendix I, Fig. 17) use a separately trained version. This checkpoint was trained without the Matryoshka loss, so please use the full 2048-dim embedding and do not truncate it to lower dimensions.
  • Expected performance. Compared with the paper, this merged model scores about 2–3 points lower on visual-document benchmarks and noticeably lower on natural-image benchmarks, especially in the Mix setting. The two domains differ in how well text, image, and fused views align semantically, which makes natural images more sensitive to merged training. Average NDCG@10 of this checkpoint (our re-evaluation):
Benchmark groupOriginMix
Visual documents (6 datasets, Table 1)78.2870.96
Natural images (4 datasets, Table 4)64.8665.91

For paper-reported numbers (Origin / Mix averages: 80.51 / 73.90 on visual documents, 69.81 / 76.78 on natural images), please train per-domain models as described above.

License#

The Trident-specific contributions, including the fine-tuned weights, are released under the MIT License. The model is fine-tuned from Qwen3-VL-2B-Instruct, which is released under Apache-2.0, and the base model's license terms continue to apply to the weights derived from it. The training images come from third-party datasets (see Trident-Train) and remain subject to their original licenses.

Citation#

If you find this work useful, please cite:

@article{sun2026chaos,
  title={Chaos in the Text: Revealing the Modality Preference in Mixed-Modality Retrievers},
  author={Sun, Yubo and Peng, Chunyi and Yan, Yukun and Liu, Zhenghao and Xu, Zhipeng and Mei, Sen and Xin, Linlin and Zeng, Zheni and Sun, Maosong},
  journal={arXiv preprint arXiv:2610.11816},
  year={2026}
}

Files

16 files · 4.27 GBWeights 4.26 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 16 files with their sha256
FileSizesha256
.gitattributes1.57 KB34448b82c17d60fec9b65b1f093c115ddbaadc04beb1b0140b6bfed2e012a930
README.md8.36 KB49bd5bc96577d28205050ab5ebaa66756eb2d4e87126bc77fa5f1233d1f32401
added_tokens.json707 Bc0284b582e14987fbd3d5a2cb2bd139084371ed9acbae488829a1c900833c680
chat_template.jinja5.29 KB3636d0f0bd6bef02654cdffdc447b79cb2cef8ab02cc75267345946291a489e4
config.json1.54 KBe2fdf43c0ef5c8c34333467d5d43ecca6c234da95445a7d14954b361f79b6926
configuration.json32 B2329660ae04203d158cb86d342f8d5516cdde329585745dbe22ca5f91c9ef65e
merges.txt1.67 MB8831e4f1a044471340f7c0a83d7bd71306a5b867e95fd870f74d0c5308a904d5
mmemb_model.json923 B9cc150d8b175d9b6e4ec6bb9f919d50307dca341b537278e59284d1928bff3de
model.safetensors4.26 GB984c6dad40e50c68497764e363b4980634a3c82ea9396d395e81e0668e62ea2f
preprocessor_config.json782 B93585062a80db5e8ca038efc7726a3e6411d9db948472d81d63c6303993be8c5
special_tokens_map.json613 B76862e765266b85aa9459767e33cbaf13970f327a0e88d1c65846c2ddd3a1ecd
tokenizer.json11.4 MB8d15a42a4361d0b9ba8768bfc32102f5745102ec6fe5c3de45835088195d9468
tokenizer_config.json5.47 KBcf43a5bf1a49ee69ecced02f419b169e72559034dcf15af47cf775bd253830f0
trident_embedder.py19.3 KB4bf7bf15345a074b3e77574fa407d9edd923c19358b39490d103ea72c5e12757
video_preprocessor_config.json817 B59c5c9eb52182eb14c06ffb10ca9effd29adce5f238a95de23ca14a38dbd2cb1
vocab.json2.78 MBca10d7e9fb3ed18575dd1e277a2579c16d108e32f27439684afa0e10b1440910
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
ed4ff93bd1 pinned now2026-11-15 03:50 UTC16 files · 4.27 GB

Use it

$ fw get openbmb/Trident-Qwen3VL-2B
# manifest sha256 c99e5763be22… · 4.27 GB · 16 files
$ fw verify ./Trident-Qwen3VL-2B openbmb/Trident-Qwen3VL-2B
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/openbmb/Trident-Qwen3VL-2B.json --dir ./Trident-Qwen3VL-2B $ python3 fw.py verify ./Trident-Qwen3VL-2B ./openbmb__Trident-Qwen3VL-2B.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download openbmb/Trident-Qwen3VL-2B --revision ed4ff93bd1ed814a8479681b2d8edb1d5eaf3e0c --local-dir ./Trident-Qwen3VL-2B
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModel, AutoTokenizer tok = AutoTokenizer.from_pretrained("openbmb/Trident-Qwen3VL-2B", revision="ed4ff93bd1ed814a8479681b2d8edb1d5eaf3e0c") model = AutoModel.from_pretrained("openbmb/Trident-Qwen3VL-2B", revision="ed4ff93bd1ed814a8479681b2d8edb1d5eaf3e0c", device_map="auto")

License

Name
MIT License
Id
MIT
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
49bd5bc96577d28205050ab5ebaa66756eb2d4e87126bc77fa5f1233d1f32401
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: openbmb <huggingface.co/openbmb>Newsgroups: alt.freeweights.minicpmSubject: Trident-Qwen3VL-2BDate: 2026-11-15Commit: ed4ff93Signed: 2DC28CC7B26A283B ✓
Upstream
openbmb/Trident-Qwen3VL-2B
Pinned commit
ed4ff93bd1ed814a8479681b2d8edb1d5eaf3e0c
Manifest
Trident-Qwen3VL-2B.json · .minisig
Manifest sha256
c99e5763be22290ea597b46e96d620ffbe32bceaa41a15d18c4c18e0df028f41
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 03:50 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/openbmb/Trident-Qwen3VL-2B.json $ curl -O https://freeweights.allternit.com/manifests/openbmb/Trident-Qwen3VL-2B.json.minisig $ minisign -Vm Trident-Qwen3VL-2B.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

Qwen/Qwen3-VL-2B-Instruct · this model is a finetune of it

No model in the catalog names this one as its parent.

Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download openbmb/Trident-Qwen3VL-2B
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. Trident-Qwen3VL-2B.json. Provenance. Takedown history: none.
From: openbmb <huggingface.co/openbmb>Subject: AgentCPM-Explore-GGUF
From: openbmb <huggingface.co/openbmb>Subject: AgentCPM-Report
From: openbmb <huggingface.co/openbmb>Subject: AgentCPM-Report-GGUF
From: openbmb <huggingface.co/openbmb>Subject: BitCPM-CANN-0.5B-gguf
From: openbmb <huggingface.co/openbmb>Subject: BitCPM-CANN-1B-gguf
From: openbmb <huggingface.co/openbmb>Subject: BitCPM-CANN-3B-gguf