File size: 13,814 Bytes
72d9220 7898f53 72d9220 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 | ---
license: cc-by-nc-4.0
language:
- en
pipeline_tag: feature-extraction
tags:
- embeddings
- multimodal
- audio
- retrieval
- matryoshka
- qwen3-vl
base_model: Qwen/Qwen3-VL-Embedding-2B
---

<div align="center">
**One model. One vector space. Text, image, video, audio — and PDF.**
*An open-weight multimodal embedding model that extends a state-of-the-art
vision-language embedding base with audio — without modifying a single base weight.*
[](https://github.com/Eximius-Labs/fusion-embedding-1)
[](https://github.com/Eximius-Labs/fusion-embedding-1)
[](#training-data-and-license)
[](#)
[](https://github.com/Eximius-Labs/fusion-embedding-1)
</div>
Fusion Embedding 1 extends [Qwen3-VL-Embedding-2B](https://huggingface.co/Qwen/Qwen3-VL-Embedding-2B)
with an audio modality. A trained connector (~16M parameters) maps frozen
[Qwen2.5-Omni](https://huggingface.co/Qwen/Qwen2.5-Omni-7B) audio-tower features into the
base model's embedding space; the base model itself is unmodified. The result is a single
embedding space covering **text, images, video, and audio**, with retrieval supported in
any direction between modalities.
**Highlights**
- **Leads every unified embedding model we measured on audio↔text.** On a single
cross-modal protocol, this model exceeds ImageBind, LanguageBind, and Gemini
Embedding 2 on audio↔text in both directions, and both language-bound baselines on
emergent audio↔image (full tables below).
- **Unmodified base.** Only the connector is trained; the base model's parameters are
byte-identical to the original release, so its text/image/video retrieval performance
(MMEB-V2) carries over unchanged.
- **Emergent cross-modal alignment.** The connector is trained exclusively on audio–text
pairs. Audio→image retrieval nonetheless reaches R@10 0.407 over 696 VGGSound candidates
(chance: 0.014) with no audio-visual pairs in training — alignment to text places audio
in the space the base already shares across modalities.
- **Matryoshka representation.** Embeddings truncate to {2048, 1536, 1024, 512, 256, 128,
64} dimensions with renormalization.
- **Compact distribution.** This repository ships the connector and normalization
statistics (~60 MB); the frozen towers are downloaded from their original repositories.
The parameter count shown for this repository (16.4M) is the trained connector —
`model.safetensors` and the `.pt` checkpoint contain the same weights; `inference.py`
loads the `.pt`.
This is a **research preview**, currently at **v0.3**: the v0.2 contrastive stage (484K
pairs) followed by a connector-only in-domain fine-tune on the AudioCaps train split.
Earlier versions remain downloadable via the `v0.1-preview` and `v0.2-preview` tags;
`v0.3-preview` pins the current version. All are compared below; pin a tag if you build
on this model.
## Architecture

A perceiver-resampler (width 384, 64 latent queries) translates frozen audio-tower frames
into the base model's input embedding space; its outputs occupy placeholder positions in
the input stream, mirroring the base model's image-token mechanism. Training is
contrastive (InfoNCE over the Matryoshka ladder, symmetric, with a full-corpus
frozen-text negative bank — 484K captions at v0.2) against the base model's text
embeddings in its native input format. v0.3 adds a second, connector-only fine-tuning
stage on the AudioCaps train split (400 steps at a reduced learning rate), warm-started
from the v0.2 checkpoint.
**Input formatting.** All inputs use the base model's chat-template format (instruction in
the system turn, content in the user turn, last-token pooling). Embedding quality is
sensitive to this formatting; use the templates in `inference.py`. For cross-modal
ranking, per-modality mean-centering of the gallery is recommended (`FusionEmbedder.center`).
## Evaluation
### Cross-modal retrieval — versus unified embedding models
<p align="center">
<img src="assets/fe_positioning.png" alt="Positioning: VGGSound-696 cross-modal retrieval versus model parameters; the fusion-embedding family leads unified models on audio-text and leads the emergent audio-image cluster (ImageBind's supervised pair annotated)" width="860px">
</p>
VGGSound-AV, 696 audio/video-frame pairs (chance R@10 = 0.014). R@10 shown as
audio-side → other / other → audio-side:
| Model | audio↔image | audio↔text | text↔image |
|---|---|---|---|
| ImageBind-Huge | **0.718 / 0.720** | 0.404 / 0.348 | 0.243 / 0.282 |
| LanguageBind | 0.365 / 0.415 | 0.547 / 0.331 | 0.221 / 0.283 |
| Gemini Embedding 2 (API, 2026-07-09) | 0.312 / 0.316 | 0.379 / 0.374 | 0.273 / **0.366** |
| fusion-embedding-1-2b-preview v0.1 | 0.368 / 0.388 | 0.555 / 0.592 | 0.331 / 0.319 |
| fusion-embedding-1-2b-preview v0.2 | 0.418 / 0.440 | 0.588 / 0.631 | 0.331 / 0.319 |
| **fusion-embedding-1-2b-preview v0.3** | 0.407 / 0.428 | **0.625 / 0.645** | **0.331** / 0.319 |
*ImageBind trains directly on audio–image pairs, so that pair is its supervised direction;
its audio–text alignment is emergent. LanguageBind trains audio against language (its
audio↔text is supervised; the value shown is its best readout, using the audio branch's
own text tower); its audio↔image is emergent. This model trains on audio–text only; its
audio–image alignment is emergent. All models evaluated with identical clips, frames, and
scoring, using the released imagebind_huge checkpoint and revision-pinned LanguageBind
checkpoints (LanguageBind_Audio_FT + LanguageBind_Image). Note on LanguageBind: its
branches fine-tune separate copies of the text tower, which diverge (mean caption cosine
0.55 between the audio and image branches' text embeddings) — the cross-branch binding
weakens, which is consistent with its emergent audio↔image score. This model's shared
space cannot drift by construction (the base is frozen; every training run asserts
parameter-level identity). Gemini Embedding 2 is Google's natively multimodal embedding
API (text/image/video/audio in one space), evaluated at its documented default invocation
(model id `gemini-embedding-2`, 3072-d native output, inline audio+image+text,
google-genai 2.10.0) on the evaluation date shown; API models may change after that date.
One shared caveat: the evaluation captions are model-generated, which could favor models
whose text tower shares that caption style — all models received identical inputs.*
Full audio→image metrics (per-modality mean-centered gallery — the readout implemented by
`FusionEmbedder.center`; chance R@10 = 0.014):
| Version | R@1 | R@5 | R@10 | mAP@10 |
|---|---|---|---|---|
| v0.1 | 0.085 | 0.260 | 0.368 | 0.155 |
| v0.2 | **0.088** | **0.315** | **0.418** | **0.179** |
| v0.3 | 0.085 | 0.297 | 0.407 | 0.177 |
*The v0.3 in-domain fine-tune costs ~1 point of emergent audio→image alignment while
improving audio↔text (see the cross-modal table); v0.2 remains available if audio→image
is the primary use case.*
**What audio→image retrieval looks like.** These numbers are not only aggregates — the
retrievals are organized by sound. Real examples (v0.2 checkpoint) on VGGSound-696
(query clip's frame left, top-5 retrieved images right; green = the clip's exact frame):

*Example frames from the [VGGSound](https://www.robots.ox.ac.uk/~vgg/data/vggsound/) dataset (CC-BY-4.0), shown for evaluation illustration.*
*Direct hits* — the clip's own frame is returned in the top 5, among the same kind of scene:
| Sound | Top-5 retrieval | Exact frame |
|---|---|---|
| Metallic clanking and banging | the kitchen it came from, first | rank 1 |
| A dog howling | its own dog, then more howling dogs | rank 1 |
| A cat purring | its own cat, then more purring and meowing cats | rank 1 |
| A siren with a dog howling | its own scene among howling dogs | rank 2 |
| *"Switch on the good piece"* (speech) | the blender being switched on | rank 2 |
| A female singer in a reverberant space | stage performances and singers | rank 3 |
*Right neighbourhood* — the exact frame ranks lower (often a poor still), but the top
results are the correct sound category:
| Sound | Top-5 retrieval | Exact frame |
|---|---|---|
| A man speaking Spanish amid birdsong | a man speaking with birds chirping behind | rank 13 |
| A cat's rhythmic purring | purring and meowing cats | rank 15 |
| Bird chirps and tweets | songbirds, owls, a cawing crow | rank 18 |
| A power-tool whirring | drills and small motors | rank 32 |
### MAEB (beta)
On 10 tasks of the MTEB team's Massive Audio Embedding Benchmark
(mteb 2.18.0, v0.2 checkpoint; ranks vs the live leaderboard as of 2026-07-09, 21–65
models per task): UrbanSound8K T2A retrieval #3, Ravdess zero-shot #4, FSD2019Kaggle #6
(disclosed only — 13.6% of its test clips appear in the FSD50K dev split used in
training, verified by Freesound id, so it is withheld from the official submission),
BeijingOpera #6, with mid-field placements on speech/music tasks the model was never
trained for. Official leaderboard submission in progress.
### Audio–text retrieval — versus specialist CLAP models
**AudioCaps test** — 883 clips, five reference captions per clip, recall computed as
min-rank over references:
| Model | A→T R@1 | A→T R@10 | T→A R@10 |
|---|---|---|---|
| LAION-CLAP | 0.468 | 0.907 | 0.839 |
| WavCaps HTSAT-BERT | 0.517 | 0.906 | 0.861 |
| Cacophony | 0.553 | 0.924 | 0.864 |
| M2D-CLAP | **0.593** | **0.928** | **0.886** |
| fusion-embedding-1-2b-preview v0.1 | 0.216 | 0.626 | 0.680 |
| fusion-embedding-1-2b-preview v0.2 | 0.279 | 0.717 | 0.736 |
| **fusion-embedding-1-2b-preview v0.3** | 0.332 | 0.741 | 0.746 |
*CLAP-family models fine-tune both encoders end-to-end and include AudioCaps and Clotho
training data; this model keeps both towers frozen and trains only the connector.*
**Clotho v2.1 evaluation** — 1,045 clips × 5 references, zero-shot (Clotho is excluded
from training data):
| Model | A→T R@10 | T→A R@10 |
|---|---|---|
| WavCaps CNN14-BERT (zero-shot) | **0.576** | **0.549** |
| fusion-embedding-1-2b-preview v0.1 | 0.252 | 0.329 |
| fusion-embedding-1-2b-preview v0.2 | 0.448 | 0.449 |
| **fusion-embedding-1-2b-preview v0.3** | 0.433 | 0.460 |
*v0.3's in-domain AudioCaps stage trades 1.5 points of zero-shot Clotho A→T for the
AudioCaps gains above; T→A improves in both settings.*
Text, image, and video benchmarks are the base model's published MMEB-V2 results, which
are unaffected by this extension.
## Usage
```python
# pip install git+https://github.com/Eximius-Labs/fusion-embedding-1 (+ transformers, torchvision, pillow)
from inference import FusionEmbedder
fe = FusionEmbedder.from_pretrained("EximiusLabs/fusion-embedding-1-2b-preview",
device="cuda")
# or pin a version: revision="v0.3-preview" (current) / "v0.2-preview" / "v0.1-preview"
a = fe.embed_audio("dog_barking.wav") # [2048]
t = fe.embed_text("a dog barks while rain falls") # [2048]
i = fe.embed_image("dog_photo.jpg") # [2048]
print((a @ t), (a @ i), (t @ i)) # cosine similarities
a256 = fe.embed_audio("dog_barking.wav", dim=256) # Matryoshka truncation
```
## Training data and license
v0.2 was trained on ~484K audio–caption pairs: the full AudioCaps train split (45K),
FSD50K, WavCaps/AudioSet_SL, and a 318K-clip subset of LAION-FreeSound, using 10-second
training windows (random crop for longer clips). v0.3 continues the v0.2 checkpoint with
a 400-step fine-tune on the AudioCaps train split only. v0.1 used a 131K-pair subset of
the same sources. As this mix includes YouTube-sourced and research-licensed corpora, the preview
is released under **CC-BY-NC-4.0**. Evaluation sets (AudioCaps test, Clotho, VGGSound,
ESC-50) are excluded from training by clip id.
## Limitations
- Trained on sound-event data; speech content, speaker attributes, and music description
are supported by the instruction taxonomy but not yet trained to comparable quality.
- English captions; 16 kHz mono input; 30 s per window (longer audio is chunked).
- Audio–text retrieval is below fully fine-tuned CLAP-family models at this checkpoint
(see Evaluation).
## Roadmap
Further corpus scaling, speech and music coverage, a commercially licensed release tier,
and the 8B model.
## Citation
```bibtex
@software{fusion_embedding_2026,
title = {Fusion Embedding 1: A Unified Embedding Space for Text,
Image, Video, and Audio},
author = {Tonmoy, Abdul Basit},
year = {2026},
url = {https://github.com/Eximius-Labs/fusion-embedding-1}
}
```
Built on Qwen3-VL-Embedding and Qwen2.5-Omni, with training data from AudioCaps, WavCaps,
and FSD50K.
|