1 Download Updated 2 days ago
Bu model, Türkçe odaklı uzun bağlam (2048 token) sentence embedding üretmek için eğitilmiş bir SentenceTransformer modelidir. 768 boyutlu normalize vektör uzayına projeksiyon yapar ve özellikle:
gibi görevlerde kullanılabilir.
Model, sıfırdan rastgele başlatılmak yerine iki aşamalı bir yaklaşımla geliştirilmiştir:
Bu sayede, büyük modellerle yarışan kaliteyi hedeflerken parametre sayısı yaklaşık 152M seviyesinde yakalamıştır.
Bu model SentenceTransformers formatında aşağıdaki boru hattını kullanır:
SentenceTransformer(
(0): Transformer({'max_seq_length': 2048, 'do_lower_case': False}) with Transformer model: Gemma3TextModel
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
(2): Dense({'in_features': 768, 'out_features': 3072, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
(3): Dense({'in_features': 3072, 'out_features': 768, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
(4): Normalize()
)
Bu bölüm, modelin “nasıl üretildiğini” mümkün olduğunca tekrarlanabilir ve teknik şekilde anlatır.
Amaç: Türkçe metinler için daha uygun alt-parça dağılımı elde ederek vocab’ı küçültmek ve embedding tablosu parametrelerini düşürmek.
transformer-clonerSıfırdan model başlatmak yerine, teacher modelin (EmbeddingGemma) ağırlıklarını mümkün olduğunca koruyarak yeni tokenizer’a adapte edebilmek için transformer-cloner adlı bir Python kütüphanesi kullanılmıştır:
Teacher modeldeki transformer katmanları (attention/MLP/LayerNorm vb.) olduğu gibi korunur; asıl sorun, tokenizer değiştiğinde token embedding tablosunun (vocab_size × hidden_size) uyumsuz hale gelmesidir.
transformer-cloner, yeni tokenizer’daki her token için teacher tokenizer tarafında bir token-id eşlemesi oluşturur:
build_token_id_map() yeni vocab’daki her target_token_id için teacher tarafında bir veya birden çok source_token_id döner: {target_id: [source_ids...]}clone() aşamasında embedding’ler hesaplanarak aktarılır.Yeni token birden fazla teacher token’a parçalanıyorsa, teacher embedding’leri birleştirilir. transformer-cloner bu birleşimi EmbeddingStrategy ile tanımlar (MEAN, WEIGHTED, FIRST, LAST, vb.).
Bu projede kullanılan yaklaşım:
Bu sayede:
distil-trainer (dataset üretimi)Teacher model distillation sırasında her adımda çalıştırılmasın diye, teacher embedding’leri önceden hesaplanıp bir Hugging Face dataset’i olarak kaydedilmiştir.
Bu aşamada TeacherEmbeddingsGenerator kullanılır:
Generator şu çıktıları üretebilir:
teacher_embedding_final: SentenceTransformer pipeline’ının final embedding’i (Normalize dahil encode çıktısı)teacher_embedding_pre_dense: Dense katmanlarından önceki embedding (Dense varsa)Bu projede teacher embedding’leri 300,000 örnek üzerinde hesaplanıp şu dataset’e yazılmıştır:
text, teacher_embedding_final ve Dense varsa teacher_embedding_pre_denseNot: Dataset preview’ında embedding kolonlarının float dizileri olduğu görülür.
Student model, teacher’ın embedding uzayına yaklaşacak şekilde eğitilmiştir.
Bu eğitimde kullanılan ana bileşen:
EmbeddingDistillationTrainer ve EmbeddingTrainerConfigBu projenin raporlanan ayarları (özet):
final (teacher final embedding’i hedefleniyor)Eğitim donanımı:
Deney takibi:
Bu bölümde iki seviyede sonuç raporlanmıştır:
Her 100 adım checkpoint alındıktan sonra, figenfikri/stsb_tr üzerinde Pearson/Spearman korelasyonları takip edilmiştir.
Örnek bir kayıt (timestamp: 2026-01-02):
| Model | Pearson | Spearman |
|---|---|---|
| intfloat/multilingual-e5-large-instruct | 0.8275 | 0.8129 |
| trmteb/turkish-embedding-model-fine-tuned | 0.8215 | 0.8061 |
| ytu-ce-cosmos/turkish-e5-large | 0.8090 | 0.7906 |
| sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 | 0.7884 | 0.7659 |
| embeddingmagibu-152m (bu model) | 0.7512 | 0.7305 |
| google/embeddinggemma-300m (teacher) | 0.7391 | 0.7194 |
Bu gözlem, distillation ilerledikçe student modelin teacher’ı geçebildiğini ve güçlü Türkçe embedding modellerine yaklaştığını göstermektedir.
TR-MTEB, Türkçe embedding modellerini çok görevli bir ölçekte değerlendiren bir benchmark’tır:
| Model | Ortalama |
|---|---|
| intfloat/multilingual-e5-large-instruct | 72.77 |
| intfloat/multilingual-e5-large | 72.28 |
| ytu-ce-cosmos/turkish-e5-large | 72.22 |
| google/embeddinggemma-300m | 70.97 |
| selmanbaysan/turkish embedding model fine tuned | 70.47 |
| embeddingmagibu-152m (bu model) | 69.68 |
| Model | Ortalama |
|---|---|
| intfloat/multilingual-e5-large | 65.59 |
| ytu-ce-cosmos/turkish-e5-large | 64.84 |
| intfloat/multilingual-e5-large-instruct | 64.72 |
| alibaba-NLP/gte-multilingual-base | 63.25 |
| intfloat/multilingual-e5-base | 63.00 |
| embeddingmagibu-152m (bu model) | 62.57 |
| selmanbaysan/turkish embedding model fine tuned | 62.17 |
Yorum: Bu model, bazı görevlerde çok daha büyük / çok daha pahalı şekilde eğitilmiş modellere yaklaşırken, daha küçük boyut + 2048 bağlam uzunluğu ile pratik bir denge hedefler.
Kurulum:
pip install -U sentence-transformers
Basit kullanım:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("alibayram/embeddingmagibu-152m", trust_remote_code=True)
sentences = [
"Bugün hava çok güzel.",
"Dışarısı güneşli.",
"Stadyuma arabayla gitti.",
]
embeddings = model.encode(sentences, normalize_embeddings=True)
print(embeddings.shape) # (3, 768)
Benzerlik hesaplama:
import numpy as np
sim = embeddings @ embeddings.T # normalize edilmişse cosine == dot
print(sim)
EmbeddingGemma ailesi, query/document ayrımı için prompt formatlarını destekler. Bu modelin Pooling konfigürasyonunda include_prompt=True olduğu için SentenceTransformers tarafında encode_query / encode_document kullanımına uygundur.
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("alibayram/embeddingmagibu-152m", trust_remote_code=True)
query = "Mars neden kırmızı gezegen olarak bilinir?"
docs = [
"Mars, yüzeyindeki demir oksit nedeniyle kırmızı görünür.",
"Venüs atmosferi çok yoğundur.",
]
q = model.encode_query(query)
d = model.encode_document(docs)
scores = model.similarity(q, d)
print(scores)
EmbeddingGemma aktivasyonları float16 ile sorun yaşayabilir; mümkünse bfloat16 veya float32 tercih edin.
Model, küçük boyutu ve uzun bağlam desteği nedeniyle bf16 formatında GGUF’a dönüştürülüp Ollama üzerinden paylaşılacak şekilde paketlenmiştir.
Bu çalışmanın üretim hattı:
transformer-cloner ile yeni vocab’e embedding map et ve modeli klonladistil-trainer ile teacher embedding’lerini dataset’e yaz (teacher_embedding_final, teacher_embedding_pre_dense)Eğer bu modeli veya eğitim hattını akademik çalışmada kullanırsanız, aşağıdaki referansları kullanmanız önerilir.
@misc{embeddingmagibu_152m_2025,
title={embeddingmagibu-152m: A Turkish-Focused Long-Context Sentence Embedding Model},
author={Bayram, M. Ali},
year={2025},
url={https://huggingface.co/alibayram/embeddingmagibu-152m}
}
EmbeddingGemma model kartında verilen BibTeX:
@article{embedding_gemma_2025,
title={EmbeddingGemma: Powerful and Lightweight Text Representations},
author={Schechter Vera, Henrique* and Dua, Sahil* and Zhang, Biao and Salz, Daniel and Mullins, Ryan and Raghuram Panyam, Sindhu and others},
year={2025},
url={https://arxiv.org/abs/2509.20354}
}
PyPI sayfasında önerilen referans:
@software{distil_trainer,
title = {Distil Trainer: A Comprehensive Knowledge Distillation Framework},
author = {Bayram, M. Ali},
year = {2025},
url = {https://github.com/malibayram/distil-trainer}
}
@software{transformer_cloner,
title = {Transformer Cloner: Clone and prune transformer models with new tokenizers},
author = {Bayram, M. Ali},
year = {2025},
url = {https://github.com/malibayram/transformer-cloner}
}
@article{muennighoff2022mteb,
title = {MTEB: Massive Text Embedding Benchmark},
author = {Muennighoff, Niklas and Tazi, Nouamane and Magne, Loic and Reimers, Nils},
year = {2022},
url = {https://arxiv.org/abs/2210.07316}
}
inproceedings{baysan-gungor-2025-tr,
title = "{TR}-{MTEB}: A Comprehensive Benchmark and Embedding Model Suite for {T}urkish Sentence Representations",
author = "Baysan, Mehmet Selman and Gungor, Tunga",
booktitle = "Findings of the Association for Computational Linguistics: EMNLP 2025",
month = nov,
year = "2025",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2025.findings-emnlp.471/",
doi = "10.18653/v1/2025.findings-emnlp.471",
pages = "8867--8887",
ISBN = "979-8-89176-335-7",
}