Model
Turkish-first multimodal embeddings: text, images, speech, sound and video in one space.
embeddingmagibu2-v1 is a multilingual, multimodal embedding model developed by Magibu AI Research, with Turkish at the center of its tokenizer and adaptation process. It maps text and media into a shared, normalized 768-dimensional embedding space for semantic search and retrieval.
Built on Google's EmbeddingGemma 2, it extends the Turkish adaptation pipeline we introduced in our research paper to a multimodal model. It supports applications such as searching images with Turkish descriptions, matching Turkish speech to transcripts, and retrieving documents by meaning.
These are development-set results with known data-overlap limitations, detailed in Evaluation scope and data overlap.
| Release | Inputs | Parameters | BF16 weight file |
|---|---|---|---|
| embeddingmagibu2-text-v1 | Text | 271,002,648 | ~542 MB |
| embeddingmagibu2-v1 | Text, image, speech, sound, video | 744,371,512 | ~1.49 GB |
Both releases use the same trained text tower, tokenizer, pooling and projection. The text-only package removes the media encoders; it is not a separately distilled, lower-capacity text model. Its weight file is about 64% smaller. File size is not a measurement of runtime memory.
This repository uses gated access. If prompted, accept its access conditions on Hugging Face and authenticate your environment with an account that has access.
pip install -U "sentence-transformers>=6.1" "transformers>=5.19" pillow torchcodec
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("alibayram/embeddingmagibu2-v1")
queries = ["Türkiye'nin başkenti neresidir?"]
documents = [
"Ankara, Türkiye'nin başkentidir ve İç Anadolu Bölgesi'nde yer alır.",
"İstanbul, Türkiye'nin en kalabalık şehridir.",
]
query_vectors = model.encode(queries, prompt_name="query")
document_vectors = model.encode(documents, prompt_name="document")
print(model.similarity(query_vectors, document_vectors)) # shape: (1, 2)
from PIL import Image
with Image.open("photo.jpg") as image:
image_vectors = model.encode([image.convert("RGB")], prompt="")
text_vectors = model.encode(["Karda koşan bir köpek"], prompt_name="query")
print(model.similarity(text_vectors, image_vectors))
Encode media without a text prompt; use the query prompt for the text being matched to it.
| Input | Format |
|---|---|
| Image | RGB PIL image, as above |
| Speech or sound | {"array": waveform, "sampling_rate": 16000}, with a mono waveform at 16 kHz |
| Video | Local video path, for example "clip.mp4" |
# Supply an existing clip.mp4; media decoding requires compatible dependencies.
video_vectors = model.encode(["clip.mp4"], prompt="")
text_vectors = model.encode(["A dog running through snow"], prompt_name="query")
print(model.similarity(text_vectors, video_vectors))
Audio/video decoding may require compatible PyTorch, TorchCodec and FFmpeg installations. Sound and video were trained and evaluated with English captions; Turkish sound/video retrieval has not been quantitatively validated. The speech benchmark uses Turkish transcripts. Video inputs are processed through sampled visual frames; do not assume their audio track is represented automatically.
Use query for search queries, document for untitled documents, and STS for both sides of a sentence-similarity comparison. Other saved prompts include QuestionAnswering, FactChecking, Classification, Clustering and CodeRetrieval; inspect model.prompts for the full list.
For a document with a title, supply the formatting yourself and disable an additional prompt:
titled_documents = ["title: Ankara | text: Ankara, Türkiye'nin başkentidir."]
vectors = model.encode(titled_documents, prompt="")
The two v1 releases share their text embedding space. Release checks on sample inputs found identical token IDs and cosine similarity >0.9999 between the two text paths, using FP32 computation on the saved BF16 weights with query and document prompts. Different hardware or precision can still introduce small numerical differences. Keep model version, prompts, dimensions and preprocessing consistent across indexing and querying.
Do not reuse an index built with the original teacher or embeddingmagibu-200m: adaptation changes the embedding space. Re-embed that corpus with the new model.
Use BF16 on supported hardware or FP32 elsewhere; avoid FP16, as described in the base model's numerical-precision guidance. All reported results use 768-dimensional embeddings. Although training included 512/256/128 dimensions, their quality has not been evaluated for this release; truncated vectors must be re-normalized.
Developed by Magibu AI Research, this release builds on our Turkish adaptation pipeline introduced in Adapting Multilingual Embedding Models to Turkish via Cross-Lingual Tokenizer Surgery and Offline Distillation, first submitted on 28 May 2026.
That paper describes the earlier embeddingmagibu-200m model. embeddingmagibu2 extends this line of work to EmbeddingGemma 2, with a new tokenizer, retrieval training and multimodal alignment. The base architecture and pretrained weights come from Google; our contribution is the Turkish adaptation pipeline, tokenizer adaptation, training and released checkpoints.
lightonai/embeddings-fine-tuning-filtered-en.embeddingmagibu2-text-v1.All scores below are our own development evaluations at 768 dimensions, not an official MTEB leaderboard submission or an independent final holdout. The same evaluation setup is used for the teacher and student. These suites were consulted during development.
FactChecking for SciFact, QuestionAnswering for SQuAD/TQuAD, and query otherwise; documents use the title/text format shown above. These scores are not comparable to full-corpus TR-MTEB scores. Many Turkish tasks are translated from English.STS prompt. STS22-tr uses train+test; SICK-R-TR and STSb-TR use test.Teacher = google/embeddinggemma-2. Text results are shared by the full release and its extracted text tower.
| Task | Teacher | v1 / text-v1 |
|---|---|---|
| MS MARCO-TR | 0.7115 | 0.7592 |
| FiQA-TR | 0.3093 | 0.3582 |
| NFCorpus-TR | 0.3086 | 0.2940 |
| SciFact-TR | 0.6928 | 0.6871 |
| ArguAna-TR | 0.5305 | 0.5665 |
| SCIDOCS-TR | 0.2031 | 0.2032 |
| Quora-TR | 0.8525 | 0.8587 |
| CQADupStack-Gaming-TR | 0.5538 | 0.5477 |
| SQuAD-TR | 0.6710 | 0.6568 |
| TQuAD | 0.8730 | 0.8830 |
| Mean | 0.5706 | 0.5815 |
| Benchmark | Metric | Teacher | v1 / text-v1 |
|---|---|---|---|
| NanoBEIR, 13-set mean | nDCG@10 | 0.6338 | 0.6456 |
| STS22-tr | Spearman | 0.7420 | 0.7293 |
| SICK-R-TR | Spearman | 0.7443 | 0.7440 |
| STSb-TR — seen-source reference | Spearman | 0.7888 | 0.7898 |
STSb-TR is excluded from claims about generalization because its source test split was included in the earlier distillation mix.
Each test uses 500 media–text pairs, except MSR-VTT (300), with one selected caption/transcript per media item. Captions use query; media use no text prompt. Splits are Flickr8k test, XM3600 test, FLEURS tr test, Clotho test and MSR-VTT test_1k. Multimodal training uses separate splits, but some test examples were monitored during development, so these are not fresh final holdouts.
| Set | Direction | Teacher | v1 |
|---|---|---|---|
| Flickr8k TR (image) | text → image | 73.8 | 77.4 |
| image → text | 67.8 | 69.6 | |
| Flickr8k EN (image) | text → image | 87.0 | 86.8 |
| image → text | 86.0 | 83.8 | |
| XM3600 TR (image, human captions) | text → image | 79.8 | 81.8 |
| image → text | 79.4 | 66.4 | |
| FLEURS TR (speech ↔ transcript) | text → speech | 56.8 | 56.4 |
| speech → text | 56.6 | 55.4 | |
| Clotho EN (sound ↔ caption) | text → sound | 10.0 | 11.6 |
| sound → text | 7.4 | 11.8 | |
| MSR-VTT EN (video ↔ caption) | text → video | 61.3 | 61.7 |
| video → text | 60.3 | 58.3 |
Known weakness: XM3600-TR image→text. The raw score falls from 79.4% to 66.4%. A diagnostic found caption hubs: one caption was the top match for 20 of 500 images. On this fixed evaluation collection, centering and normalizing both the image and caption vectors yielded 80.0%; CSLS rescoring yielded 80.4%. These are separate, collection-dependent postprocessing results, not the model's raw score. Centering also reduced text→image Recall@1 from 81.8% to 79.4%.
Do not subtract the mean of a single incoming query or a tiny query batch: it can destroy the vector. Any such postprocessing needs an appropriate reference collection and validation for the intended retrieval direction.
| Model | Parameters | Mean nDCG@10 | Docs/s | Raw vectors, KiB/doc | Tokens / Turkish word |
|---|---|---|---|---|---|
| Vor-LateEmbed-TR-0.6B-v1 (late interaction) | 594M | 0.6104 | 58 | 35.2 | 2.49 |
| embeddinggemma-300m | 308M | 0.5899 | 444 | 1.5 | 2.41 |
| multilingual-e5-large-instruct | 560M | 0.5872 | 896 | 2.0 | 1.96 |
| embeddingmagibu2-text-v1 | 271M | 0.5815 | 442 | 1.5 | 1.80 |
| bge-m3 | 568M | 0.5729 | 909 | 2.0 | 1.96 |
| embeddinggemma-2 (teacher) | 744M total; 271M text | 0.5706 | 391 | 1.5 | 2.41 |
| turkish-e5-large | 560M | 0.5662 | 890 | 2.0 | 1.96 |
| multilingual-e5-base | 278M | 0.5476 | 1475 | 1.5 | 1.96 |
| Mursit-Large-TR-Retrieval | 404M | 0.5214 | 613 | 2.0 | 1.69 |
| embeddingmagibu-200m | 207M | 0.5083 | 459 | 1.5 |
In this comparison, text-v1 ranks third among single-vector models and is the smallest of those three. Its mean is 0.0084 below EmbeddingGemma-300m and 0.0057 below multilingual-e5-large-instruct. Vor has the highest score and uses multi-vector late interaction rather than a single vector per document.
Measurement details:
| Property | Value |
|---|---|
| Developer | Magibu AI Research |
| Base | google/embeddinggemma-2 |
| Text architecture | EmbeddingGemma2TextModel; 24 layers; hidden size 512; projection 512→768 |
| Tokenizer | magibu/Altus; 262,144 entries |
| Output | One 768-dimensional L2-normalized vector per input |
| Text pooling | Mean |
| Maximum text sequence | 8,192 tokens, including prompt/special tokens |
| Parameters | 744,371,512 total; 271,002,648 in the extracted text model |
| Saved weights | BF16 |
| License | Apache-2.0 |
Please cite the paper for the adaptation methodology and link this model repository for the specific v2 checkpoint. The paper reports the predecessor model, not the v2 results above.
@misc{bayram2026embeddingmagibu,
title = {Adapting Multilingual Embedding Models to Turkish via Cross-Lingual Tokenizer Surgery and Offline Distillation},
author = {Bayram, M. Ali and Diri, Banu and Y{\i}ld{\i}r{\i}m, Sava{\c{s}}},
year = {2026},
eprint = {2605.29992},
archivePrefix = {arXiv},
primaryClass = {cs.CL}
}
Developed by Magibu AI Research. Base model: Google EmbeddingGemma 2. Tokenizer: Magibu Altus.
| 1.83 |
| Qwen3-Embedding-0.6B | 596M | 0.4957 | 295 | 2.0 | 2.73 |