Türkçe embedding modelleri: nasıl seçilir, hangisi ne işe yarar?
Türkçe embedding modeli, Türkçe bir metni anlamını temsil eden sabit uzunlukta bir sayı dizisine (vektöre) çeviren modeldir. Arama ve RAG için model seçerken kaliteyi, model boyutunu ve hızı birlikte tartmalı, kararı kendi sorgularınız ve belgelerinizle yapılmış bir arama testine (örneğin Recall@10) dayandırmalısınız. BGE-M3 gibi büyük çok dilli modeller yüksek kalite verir; damıtılmış ve statik modeller aynı işi çok daha az kaynakla, bir miktar kalite kaybıyla yapar.
Embedding ne işe yarar?
Embedding (vektör temsili), anlamca yakın metinleri birbirine yakın vektörlere dönüştürür. İki metnin benzerliği bu vektörler arasındaki açıyla (kosinüs benzerliği) ölçülür. Böylece arama ortak sözcüklere değil anlama göre yapılabilir: “Ürün çok gürültülü çalışıyor” sorusu, tek ortak sözcüğü olmayan “Fan sesi artarsa yatakları yağlayın.” kaydını bulabilir.
Kurumsal projelerde embedding en çok şu işlerde kullanılır:
- Anlamsal arama ve RAG sistemlerinde soruyla ilgili belge parçalarını bulmak,
- benzer ya da yinelenen kayıtları bulmak, belgeleri kümelemek,
- sınıflandırma modellerine girdi hazırlamak.
Vektörler genellikle bir vektör veritabanında saklanır; sorgu vektörüne en yakın kayıtlar getirilir.
Nasıl çalışır: dense ve statik modeller
Dense (yoğun, Transformer tabanlı) modeller cümleyi katmanlardan geçirir; her sözcük çevresindeki sözcüklere göre yorumlanır. BGE-M3 bunun bilinen bir örneğidir: 24 katmanlı, 100’den fazla dili destekleyen, 8192 token’a kadar girdi alan çok dilli bir modeldir. ALTAI blogundaki değerlere göre ağırlıkları yaklaşık 2,2 GB’tır ve modern bir GPU’da saniyede yaklaşık 79 cümle işler.
Statik modeller her parça (token) için önceden hesaplanmış vektörü bir tablodan alır ve bunların ortalamasını cümlenin vektörü sayar. Katman ve dikkat (attention) hesabı olmadığı için CPU’da çok hızlıdır; buna karşılık sözcük sırasını ve bağlamı büyük ölçüde görmez. Model2Vec, bir Transformer modelini böyle bir tabloya dönüştüren tekniktir.
İki tür de büyük bir “öğretmen” modelden damıtma ile küçültülebilir; sayıları daha az bitle saklamak (kuantizasyon) boyutu daha da düşürür.
| Dense (Transformer) | Statik | |
|---|---|---|
| Bağlam ve sözcük sırası | Dikkate alır | Büyük ölçüde dikkate almaz |
| Donanım | Büyük hacimde GPU tercih edilir | CPU yeterlidir |
| Model boyutu | Yüzlerce MB ile birkaç GB | Birkaç MB |
| Uygun olduğu iş | Anlam ayrıntısının önemli olduğu arama | Büyük hacim, düşük gecikme, cihaz üstü kullanım |
ALTAI’nin iki açık Türkçe modeli
ALTAI, BGE-M3’ten türettiği iki modeli Hugging Face’te açık olarak yayımlıyor.
BGE-M3 Distill 4L dört Transformer katmanlı, damıtılmış bir modeldir. 1024 boyutlu vektör üretir, CLS havuzlama kullanır ve SentenceTransformers ile çalışır. ALTAI’nin damıtma çalışmasında 8, 6 ve 4 katmanlı sürümler denendi: 8 katmanlı sürüm T4 GPU’da saniyede yaklaşık 454 metin işledi; aynı ölçümde öğretmen model 175’te kaldı (yaklaşık 2,5 kat). Bu ölçüm, aşağıdaki TurboQuant yazısındaki ölçümden farklı bir düzenekte yapıldı; iki yazıdaki hızlar birbiriyle doğrudan karşılaştırılamaz. 4 katmanlı sürüm için tahmini hızlanma yaklaşık 4 kattır. Bedeli sıralamadadır: 4 katmanlı modelin ilk 10 sonucu 8 katmanlı modelinkilerle 0,580 oranında örtüştü, 50 sonuçta bu oran 0,665’e çıktı. Model kartındaki değerlendirme STS Pearson / Spearman’dır, bir retrieval testi değildir.
Model2Vec TurboQuant 2-bit 256 boyutlu statik bir modeldir; her parçanın vektörü 2 bitle saklanır. Apache-2.0 lisanslıdır ve Akana’nın içinde gelir. 533.189 Türkçe Vikipedi makalesinin BGE-M3 vektörlerinden damıtıldı; sözlüğü 39.655 Türkçe token’a budandı. Blog yazısındaki sonuçlar:
| Model | Boyut | STSb-TR (gorkem) | STSb-TR (emrecan) | Hız (cümle/sn) |
|---|---|---|---|---|
| BGE-M3 (öğretmen) | ~2.200 MB | %96,35 | %79,57 | 79 |
| Damıtılmış model (FP16) | 19,36 MB | %91,36 | %64,34 | 63.012 |
| + TurboQuant 4-bit | 4,92 MB | %91,79 | %64,19 | 24.248 |
| + TurboQuant 2-bit | 2,50 MB | %92,19 | %63,53 | 20.013 |
Tablodan iki sonuç çıkar. Birincisi, 2-bit kuantizasyon bu modelde kaliteyi belirgin biçimde düşürmedi (gorkem setinde %91,36’dan %92,19’a çıktı, emrecan setinde %64,34’ten %63,53’e indi); blog bunu kaba kuantizasyonun eğitimden kalan küçük gürültüyü sıfıra çekmesiyle açıklıyor. İkincisi, kalite kaybı test setine göre değişir: öğretmenle fark gorkem setinde yaklaşık 4 puan, emrecan setinde yaklaşık 16 puandır. Öğretmen modelin hızı blogda GPU için verilmiştir; küçük modeller GPU gerektirmez.
Akana bu modeli yerleşik olarak içerir. Akana’daki, ALTAI’nin kendi geliştirdiği hibrit arama yönteminde 1-bit vektörler morfolojik BM25 ile birleşir; projenin Türkçe RAG testlerinde yalnız CPU ile %96,7–100 Recall@10’a ulaşır.
import akana
vector = akana.embed("Türkçe belgeler içinde arama.")
print(len(vector)) # 256
print(akana.similarity(
"Filtreyi ne zaman temizlemeliyim?",
"Filtreyi her ay kontrol edin.",
))
Hangi model ne zaman?
| Durumunuz | Uygun başlangıç |
|---|---|
| Milyonlarca parça, yalnız CPU, düşük gecikme, cihaz üstü kullanım | Statik model (ör. TurboQuant 2-bit), BM25 ile hibrit |
| Anlam ayrıntısının önemli olduğu arama, GPU var | Dense model (BGE-M3 ya da damıtılmış sürümleri) |
| Türkçe soru, başka dilde belge | Çok dilli dense model; Türkçe için budanmış statik modeller bu iş için tasarlanmadı |
| Birkaç yüz belge, basit sorular | BM25 ya da iyi bir çok dilli model çoğu zaman yeterlidir |
Adım adım: model nasıl değerlendirilir?
- Test seti hazırlayın. Kullanıcılarınızın gerçek sorularını toplayın ve her soru için doğru belge parçasını işaretleyin; başlangıç için birkaç yüz soru iyi bir hedeftir. Gerçek soru azsa belgelerden sentetik sorular üretebilirsiniz. ALTAI de damıtılmış modellerini bu yolla üretilmiş sorularla karşılaştırdı.
- Parçalamayı sabitleyin. Bütün adayları aynı parçalar üzerinde deneyin; yoksa modeli değil parçalamayı ölçersiniz.
- Her adayla ayrı indeks kurun. Sorgu vektörleri, indeksi oluşturan modelden gelmelidir.
- Recall@10’u hesaplayın. Recall@10, her sorunun tek bir doğru parçası olduğu testlerde, doğru parçanın ilk 10 sonuç içinde bulunduğu soruların oranıdır. RAG’da model yalnız getirilen parçaları gördüğü için bu oran yanıt kalitesinin üst sınırını belirler.
- Taban çizgisiyle karşılaştırın. Aynı testi BM25 ve hibrit arama ile de çalıştırın.
- Maliyeti ölçün. Sorgu gecikmesini, indeksleme süresini, bellek ve disk kullanımını kaydedin; hedef recall’a en düşük maliyetle ulaşan modeli seçin.
STS skorlarını retrieval sonuçlarıyla karıştırmayın. STS, modelin iki cümleye verdiği benzerliğin insan puanlarıyla ne kadar uyuştuğunu ölçer; doğru belgenin bulunup bulunmadığını ölçmez. MTEB gibi genel karşılaştırma tabloları ilk eleme için yararlıdır, ama sizin belgelerinizdeki sonucu göstermez.
Dikkat edilmesi gerekenler
- Vektör boyutu depolamayı belirler. 32 bitlik sayılarla 1024 boyutlu bir vektör 4 KB, 256 boyutlu bir vektör 1 KB tutar; bir milyon parça için bu yaklaşık 4 GB’a karşı 1 GB demektir. 1-bit vektörlerde 1024 boyut 128 bayta iner.
- Model değişirse indeks değişir. Farklı modellerin vektörleri karşılaştırılamaz; modeli değiştirdiğinizde koleksiyonun tamamını yeniden vektörleştirin.
- Girdi uzunluğunun bir sınırı vardır. Uzun belgeleri anlamlı parçalara bölün.
- Yazımı normalleştirin. “odeme” ile “ödeme” gibi Türkçe karaktersiz yazımlar hem sözcük hem vektör aramasını etkiler; bkz. Türkçe doğal dil işleme.
- Lisansı kontrol edin. BGE-M3 Distill 4L’nin lisansı model kartında belirtilmemiş; kullanmadan önce netleştirin. TurboQuant 2-bit Apache-2.0’dır; çalıştığı ortamı ve bağımlılıkları ayrıca inceleyin.
ALTAI’de nasıl yapıyoruz
Müşteri projelerinde bu iki modeli diğer seçeneklerle birlikte kurumunuzun verilerinde test ediyoruz; arama doğruluğu, bellek kullanımı ve çalışma süresine göre uygun modeli seçip uygulamaya bağlıyoruz. Modeller, metin koleksiyonlarını vektör olarak indeksleyip arama servisi olarak sunan letsearch ve Türkçe metin işleme kütüphanesi Akana içinde kullanılır. Doküman Asistanı projelerinde test sorularını çalışanların günlük sorularından seçiyoruz. Model kartı sizin sonucunuz değildir: modelleri inceleyin ya da kendi sorgularınızla ölçmek için bize yazın.
Sık sorulan sorular
Türkçe için en iyi embedding modeli hangisi?
Herkes için tek bir en iyi model yoktur. Kalite, model boyutu, hız ve donanım arasında bir seçim yaparsınız; doğru cevabı kendi sorgularınız ve belgelerinizle yaptığınız bir arama testi verir. Genel karşılaştırma tablolarını yalnız ilk eleme için kullanın.
Statik embedding modeli Transformer modelinin yerini tutar mı?
Birçok arama işinde tutabilir, her zaman değil. ALTAI’nin 2,50 MB’lık 2-bit modeli bir STSb-TR setinde %92,19 aldı, öğretmen BGE-M3 %96,35 aldı; başka bir sette fark daha büyüktü. Statik modeli BM25 ile hibrit kullanmak kaybın bir bölümünü kapatabilir.
Recall@10 nedir?
Arama sonuçlarının ilk 10’unda sorguyla ilgili belgelerin ne kadarının bulunduğunu gösterir; her sorunun tek doğru parçası varsa, bu parçanın ilk 10 sonuçta çıktığı soruların oranıdır. RAG sisteminde model yalnız getirilen parçaları görür; doğru parça ilk sonuçlarda yoksa iyi bir yanıt beklenemez. Bu yüzden embedding modelini seçerken STS skorlarından çok bu tür retrieval ölçümlerine bakın.
Embedding modeli GPU olmadan çalışır mı?
Evet. Statik modeller CPU’da hızlı çalışır: ALTAI’nin 2-bit modeli blogdaki ölçümde yalnız CPU ile saniyede 20.000’den fazla cümle işledi. Dense modeller de CPU’da çalışır, ancak büyük koleksiyonları indekslerken GPU belirgin biçimde hızlandırır.
Embedding modelini sonradan değiştirebilir miyim?
Değiştirebilirsiniz, ama koleksiyonun tamamını yeni modelle yeniden vektörleştirmeniz gerekir; farklı modellerin vektörleri aynı indekste karşılaştırılamaz. Bu yüzden model seçimini indeks büyümeden, küçük bir testle yapın.