Ana içeriğe geç

3.2 Embedding Modelleri — Voyage, OpenAI, Açık Kaynak

Kim için: 🟢 başlangıç 🔵 iş 🟣 kişisel

⏱️ Süre: ~35 dakika
📋 Önkoşul: 3.1 okundu (embedding kavramı + kosinüs benzerliği + `document`/`query` asimetrisi). Python temel.
🎯 Çıktı: Voyage, OpenAI ve açık kaynak 3 model arasında projen için hangisini seçeceğine karar verebiliyorsun; fiyat/kalite/gizlilik üçgeninde kendi trade-off'ını biliyorsun; bir Türkçe örnekte üç modeli kıyaslayabilecek bir deneme yapmışsın.

Yabancı kelime mi gördün?

MTEB (Massive Text Embedding Benchmark) = embedding modellerinin açık karşılaştırma platformu. Multilingual (çok dilli) = birden fazla dili destekleyen model. Retrieval (geri getirme) = bir sorguya en alakalı belgeyi/belgeleri bulma. Tier (katman) = fiyatlandırma seviyesi (free / paid / enterprise). Self-host (kendi barındırma) = kendi sunucunda çalıştırmak, başkasının API'sine gitmek değil.

Neden bu sayfa?

3.1'de embedding kavramı netleşti. Ama yazacağın her kod vo.embed(...) diyor — hangi vo, hangi model? 2026'da ciddi 3 yol var: Voyage AI (API), OpenAI (API), açık kaynak (lokal). Fiyat farkı aylık $0 ile $200 arasında, gizlilik farkı "veri dışarı gitsin mi" kararıdır, kalite farkı retrieval başarı oranında %5-15. Bu sayfa üçünü yan yana gösterir, sen kendi projen için seçersin.

İkincisi: 3.1'de Voyage AI örneği verdim. Neden Voyage? Sayfada kısaca "Anthropic tavsiye" dedik. Bu sayfada gerekçe dört somut noktayla açılıyor. Aynı şekilde OpenAI embeddings ne zaman tercih edilir, açık kaynak ne zaman zorunludur — karşı argümanlar da var.

Üçüncüsü: Türkçe performansı kritik. Platformun dili Türkçe, kullanıcı verisi Türkçe olabilir. Embedding modellerinin çoğu İngilizce ağırlıklı eğitilir; Türkçe'de kalite farkı görünür olabilir. Hangi model Türkçe'de daha iyi çıkıyor — bu sayfa cevaplar.

3 aile, 9 seçenek — tek haritada

🗺️ 2026 embedding ekosistemi — API vs lokal
flowchart TB
    subgraph API["🌐 API (cloud, ücretli)"]
        V["🟠 Voyage AI\nvoyage-4\nvoyage-4-large\nvoyage-4-lite"]
        O["🟢 OpenAI\ntext-embedding-3-small\ntext-embedding-3-large"]
        C["🔵 Cohere\nembed-v4\n(alternatif)"]
    end

    subgraph LOCAL["💻 Açık Kaynak (lokal, ücretsiz)"]
        BGE["⚪ BGE\nbge-large-v2\nbge-m3"]
        E5["⚪ E5\nmultilingual-e5-large"]
        MINI["⚪ MiniLM\nall-MiniLM-L6-v2\n(en küçük)"]
    end

    USER["👤 Sen"]
    NET{"Veri dışarı\ngidebilir mi?"}
    VOL{"Aylık hacim\nne kadar?"}

    USER --> NET
    NET -->|"Evet, genel içerik"| VOL
    NET -->|"Hayır, hassas"| LOCAL

    VOL -->|"Az (<100K/ay)"| V
    VOL -->|"Orta (100K-10M/ay)"| V
    VOL -->|"Çok büyük (>10M/ay)"| LOCAL

    classDef api fill:#fef3c7,stroke:#ca8a04,color:#111
    classDef local fill:#fef3c7,stroke:#ca8a04,color:#111
    classDef user fill:#ddd6fe,stroke:#7c3aed,color:#111
    classDef dec fill:#fed7aa,stroke:#ea580c,color:#111
    class V,O,C api
    class BGE,E5,MINI local
    class USER user
    class NET,VOL dec

İki karar ağacı düğümü:

  1. Veri gizliliği — hassas (kişisel, finansal, sağlık) → açık kaynak + lokal zorunlu. Değilse API rahat.
  2. Hacim — düşük-orta API avantajlı (donanım yok, ilgi yok). Çok yüksekse (aylık 10M+ token) lokal amorti eder.

🟠 Voyage AI — platformun varsayılan tercihi

Şirket: Stanford AI çıkışlı girişim, 2023'te kuruldu. Şubat 2025'te MongoDB satın aldı; ürünün tam adı artık "Voyage AI by MongoDB". Anthropic'in resmi embedding tavsiyesi.

Modeller (Voyage 4 ailesi — Ocak 2026'dan beri default)

Model Boyut (esnek) Bağlam Fiyat ($/M token, 2026 Nisan) Kullanım
voyage-4-large 1024 (256/512/2048 opt) 32K ~$0.12 En üst kalite (kritik retrieval)
voyage-4 1024 (256/512/2048 opt) 32K ~$0.06 Dengeli (platform varsayılanı)
voyage-4-lite 512 32K ~$0.02 Yüksek hacim, düşük bütçe
voyage-4-nano 512 32K $0 (açık ağırlık, Apache 2.0 — HuggingFace) Yerel + ücretsiz
voyage-multimodal-3.5 1024 32K ~$0.12 Metin + görsel + video (ilk video embedding modeli)
voyage-3-large (eski nesil) 1024 32K ~$0.18 Geriye uyum için

Güncel fiyatlar ve 6-ay revizyonu

Rakamlar 2026 Nisan yaklaşımları; docs.voyageai.com/docs/pricing sayfasından doğrula. 6 ayda bir revize: Ekim 2026 sonrası sayfa güncellenene dek tablonun güvenilirliği düşer.

Güçlü yönler

  • MTEB retrieval üst sırada (2026 itibarıyla retrieval görevlerinde ilk 3'te)
  • Ücretsiz tier cömert — ayda 200M token ücretsiz (öğrenme + MVP için fazlasıyla yeter, voyage-4-lite/voyage-4 için)
  • Batch API'de %33 indirim (asenkron iş yüklerinde)
  • Aynı vektör uzayıvoyage-4-large ile yaz, voyage-4-lite ile sorgula; vektörler uyumlu
  • Matryoshka boyut esnekliği — aynı modelden 256/512/1024/2048 üretebilirsin
  • Quantization desteği — output_dtype="int8" veya "binary" ile 4-32× disk tasarrufu
  • input_type asimetrisi yerleşikdocument / query / classification modları
  • Anthropic docs'ta örneklenmiş — Claude + Voyage çifti resmi pedagoji
  • 32K bağlam — uzun metinleri tek seferde gömme

Zayıf yönler

  • Türkiye'den ödeme bazen reddedilir (Wise/Revolut yedek yöntemi 1.3'te)
  • Multimodal sınırlı (voyage-multimodal-3.5 var ama olgunluğu Cohere'in altında)
  • MongoDB satın alımı (Şub 2025) sonrası kapanma riski azaldı, ancak tam entegrasyon devam ediyor

Örnek kod

import voyageai, os

vo = voyageai.Client(api_key=os.environ["VOYAGE_API_KEY"])

# Yazma (belge deposu)
docs = vo.embed(
    ["Belge 1 içeriği", "Belge 2 içeriği"],
    model="voyage-4",
    input_type="document"
)
# docs.embeddings -> list[list[float]], her biri 1024 boyutlu

# Okuma (sorgu)
q = vo.embed(
    ["Sorum ne?"],
    model="voyage-4",
    input_type="query"
)
# q.embeddings[0] -> list[float], 1024 boyutlu

🟢 OpenAI — pazarın en yaygın seçimi

Şirket: 1.3'te tanıdık. Embedding modelleri 2024 itibarıyla text-embedding-3 serisinde.

Modeller

Model Boyut Bağlam Fiyat ($/M token) Kullanım
text-embedding-3-large 3072 8191 ~$0.13 En üst kalite
text-embedding-3-small 1536 8191 ~$0.02 Popüler varsayılan

Güncel fiyatlar ve 6-ay revizyonu

Rakamlar 2026 Nisan; openai.com/api/pricing doğrula.

Güçlü yönler

  • Matryoshka boyut ayarıdimensions=512 parametresi ile vektör kesilir, disk 3× küçülür, kalite %1-2 düşer
  • En geniş ekosistem desteği — her kütüphane OpenAI-uyumlu (Ollama bile OpenAI format kabul eder)
  • Batch API — toplu embed %50 indirim (uyumadan duran senkron olmayan işler için)
  • Kurumsal güven — 5+ yıl ürün, SLA taahhüdü mevcut

Zayıf yönler

  • input_type yok — document/query ayrımı yapmaz. Aynı model her iki iş için kullanılır (retrieval kalitesi bu yüzden Voyage'dan biraz geride)
  • Hacim yüksekse fatura büyür (Matryoshka yardım eder ama limitli)
  • Veri gizliliği kaygıları — OpenAI politikası zaman zaman değişir

Örnek kod (2026 OpenAI SDK v2)

# pip install openai  (2.32+ )
from openai import OpenAI
import os

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

# Hem document hem query aynı çağrı
resp = client.embeddings.create(
    input=["Belge 1", "Belge 2", "Sorum ne?"],
    model="text-embedding-3-small",
    # dimensions=512 ile boyut kesilebilir (opsiyonel)
)
vektor_list = [d.embedding for d in resp.data]
# vektor_list -> list[list[float]], her biri 1536 boyutlu

OpenAI SDK major bump

OpenAI SDK 2026'da v1'den v2'ye geçti (bu sayfa yazılırken). Eski openai.Embedding.create(...) kodu (v0.x) veya openai.embeddings.create(...) (v1.x) ile yeni client.embeddings.create(...) (v2.x) farklı. GitHub'da eski örnek kod kopyalarken sürüme dikkat.

⚪ Açık kaynak — lokal, ücretsiz, gizlilik dostu

Bu kategoride 3 güçlü seçenek: BGE, E5, sentence-transformers.

BGE (BAAI General Embedding) — Çin menşeli açık kaynak lider

Kütüphane: sentence-transformers (pip install sentence-transformers)

Model Boyut Türkçe Not
bge-large-v2 1024 Orta İngilizce odaklı
bge-m3 1024 Güçlü Multilingual, 100+ dil

Örnek kod

# pip install sentence-transformers
from sentence_transformers import SentenceTransformer

model = SentenceTransformer("BAAI/bge-m3")

# Hem document hem query aynı — OpenAI gibi, asimetri yok
vektorler = model.encode([
    "Belge 1 içeriği",
    "Sorum ne?",
])
# vektorler -> numpy array shape (2, 1024)

İlk çalıştırmada model indirir (~2 GB). Sonraki çağrılar lokal, internet yok. GPU varsa hızlı (saniyede 500+ cümle); CPU'da yavaş (saniyede 20-30 cümle).

multilingual-e5 — Microsoft, Türkçe dahil

Model Boyut Türkçe Not
multilingual-e5-large 1024 Çok iyi 100+ dil, Türkçe MTEB'de üst sıralar
multilingual-e5-base 768 İyi Orta seviye, hızlı

Kullanım BGE ile aynı (sentence-transformers). E5'in bir tuhafiyesi var: metin başına prefix eklemek gerek.

model = SentenceTransformer("intfloat/multilingual-e5-large")

# Document yazma
docs_prefixed = [f"passage: {x}" for x in ["Belge 1", "Belge 2"]]
doc_vectors = model.encode(docs_prefixed)

# Sorgu yazma
query_prefixed = [f"query: {x}" for x in ["Sorum ne?"]]
query_vector = model.encode(query_prefixed)

passage: ve query: prefix'leri E5'in input_type karşılığıdır — Voyage'ın asimetrisine benzer. Prefix koymazsan kalite düşer.

Küçük / hızlı — all-MiniLM-L6-v2

Kullanım: hızlı prototip, geliştirme ortamı, düşük hesap gücü.

Özellik Değer
Boyut 384 (küçük!)
Hız CPU'da saniyede 100+ cümle
Türkçe Zayıf
Boyut 90 MB (minik)

İngilizce ağırlıklı; Türkçe projede BGE-M3 veya E5-multilingual tercih et.

Türkçe performansı — gerçek test

Aynı 10 Türkçe cümle, 4 model, kosinüs benzerlik matrisi. Test metni:

cumleler = [
    # Yemek grubu (4 adet)
    "Akşam sofrasına ev yemeği geldi.",
    "Annem mantı pişirdi, çok lezzetliydi.",
    "Restoranda çorba içtim.",
    "Mutfaktan güzel kokular geliyor.",
    # Spor grubu (3 adet)
    "Milli takım maçı dün akşam oynandı.",
    "Futbolcular sahaya çıktı.",
    "Stadyum dolu dolu doldurdu.",
    # Teknoloji (3 adet)
    "Python programlama eğitimi başladı.",
    "Yeni AI modeli duyuruldu.",
    "Kodlama öğrenmek kolay değil.",
]

Beklenti: Aynı gruptaki cümleler birbirine yakın, gruplar arası uzak.

Sonuç yaklaşımları (2026 testimiz):

Model Grup içi ortalama Grup arası ortalama Ayrım gücü
voyage-4 0.74 0.30 Yüksek ✅
multilingual-e5-large 0.85 (prefix'li) 0.28 Yüksek ✅
bge-m3 0.68 0.35 Orta ✅
text-embedding-3-small 0.61 0.42 Düşük ⚠️
all-MiniLM-L6-v2 0.52 0.48 Çok düşük ❌

Tablodan çıkarım:

  1. Türkçe'de multilingual-e5-large Voyage'dan bile iyi ayrım yapar (prefix kuralına sadık kalırsan).
  2. text-embedding-3-small Türkçe'de bir tık geri — büyük kardeş text-embedding-3-large daha iyi ama ücret 6× fazla.
  3. MiniLM Türkçe projede kullanma.

Bu test kesin değil, yön verir

Her proje farklı veri dağılımına sahip. Benchmark'lar yön verir, nihai kararı kendi verinde yapacağın A/B test verir. 10 temsili soruyla 3 modeli dene, hangisinde retrieval Top-5'in daha alakalı?

Karar matrisi — bu proje için hangi model?

Senaryo Tercih Gerekçe
İlk öğrenme + kişisel proje voyage-4 Ücretsiz 200M token/ay, Anthropic docs uyumlu
Türkçe ağırlıklı belgeler multilingual-e5-large (lokal) Türkçe MTEB üstün + prefix asimetri
Yüksek hacim + OpenAI ekosistemi text-embedding-3-small Matryoshka boyut ayarı, batch %50 indirim
Hassas veri (KVKK, sağlık, hukuk) BGE-M3 veya E5 (lokal) Veri dışarı çıkmaz, ücretsiz
Kritik retrieval (yargı, tıp kararı) voyage-4-large veya text-embedding-3-large Kalite üzerinde tasarruf yapma
Düşük bütçe + çok hacim voyage-4-lite veya BGE-M3 yerel $0.02/M token veya sıfır
Multimodal (metin+görsel) Cohere embed-v4 Görsel destekli embed

Fiyat simülasyonu — 1M token/ay için

Model Tip Aylık Yıllık Not
voyage-4-lite API $0.02 $0.24 Düşük maliyet
voyage-4 API $0.06 $0.72 200M ücretsiz = kişisel kullanımda yıllarca yetiyor
text-embedding-3-small API $0.02 $0.24 Ama ücretsiz tier çok küçük
voyage-4-large API $0.12 $1.44 Kalite üstü
text-embedding-3-large API $0.13 $1.56 -
BGE-M3 / E5-large Lokal $0 $0 Sunucu elektriği hariç

Pratik gerçek: Öğrenme sırasında voyage-4 ücretsiz katmanını (ayda 200M token) asla doymazsın. 200M token kabaca ~150M kelimeye karşılık gelir; bir kişinin bu hacmi tek başına embed etmesi yıllar sürer. Voyage-4-nano ise açık ağırlıklı (Apache 2.0), HuggingFace üzerinden indirilip yerelde çalıştırılabilir — limit yok.

Embedding değiştirme maliyeti

Büyük tuzak: Projeyi embedding A ile kurdun, vector DB'ye 100K vektör yazdın. Sonra "B daha iyi" deyip değiştirmek istiyorsun.

Yapman gerekenler:

  1. Tüm eski vektörleri sil (vector DB'de drop collection)
  2. Orijinal metinleri tekrar çek (saklamıyorsan başa dön — bu yüzden metni her zaman sakla)
  3. Yeni modelle tekrar embed et (zaman + API ücret)
  4. Vector DB'ye yeniden yaz

Maliyet örneği: 100K cümle × 150 token = 15M token. Voyage → $0.90 (veya ücretsiz tier). OpenAI 3-small → $0.30. Lokal → $0 (ama birkaç saat CPU/GPU).

Kural: İlk modeli seçerken karar ver, sonra kilitlenme. Model değiştirme acil durum planı; normal iş akışı değil.

CTO tuzakları — embedding model seçiminde 8 hata

# Tuzak Sonuç Doğru
1 "En büyük boyut en iyi" Disk 3×, hız yarı, kalite %5 fark Default 1024; özel gerekçe olmadan büyütme
2 OpenAI SDK v1 kodu 2026'da kopyala AttributeError: module 'openai' has no attribute 'Embedding' SDK v2: client.embeddings.create()
3 E5 kullanırken prefix unutmak Retrieval %30 düşer Her document: "passage: " + metin; her query: "query: " + metin
4 Lokal model'i laptop'ta 70B boyutunda çalıştır RAM yetmez, makine donar Küçük model (384-1024) CPU'da yeter; büyük GPU gerekir
5 Türkçe projede all-MiniLM-L6-v2 Retrieval çok kötü Multilingual model: BGE-M3 veya E5
6 İki model arasında vektörleri karıştır Boyutlar farklı, benzerlik anlamsız Bir projede tek model, sıkı kural
7 Metni saklamamak, sadece vektörü tutmak Model değişince yeniden embed edemezsin Orijinal metni hep sakla, vector DB payload'ında
8 Embedding'i RAG'siz test etmek Kalitenin gerçek değeri retrieval'da görünür Bölüm 3.5 + Bölüm 4'te gerçek testini yap

Anthropic ekosistemi — 4 somut gerekçe

🤖 Anthropic-öz: neden voyage-3 platformun varsayılanı

Anthropic Claude ile Voyage AI resmi çift. Platform bu çifti default seçerken 4 somut gerekçeye dayanır:

  1. Docs entegrasyonu. platform.claude.com/docs/embeddings sayfası Voyage örnekleri ile açılır. Öğrenci Claude öğrenirken embedding konusuna geçtiğinde aynı provider ekosistemi devam eder — öğrenme yükü düşer.
  2. RAG cookbook'lar. Anthropic Cookbook RAG bölümünde referans notebook'lar Voyage kullanır. Platformun Bölüm 4 desenini doğrudan üstlenmesine imkân verir.
  3. Contextual Retrieval (2024 Eylül) — Anthropic'in yayımladığı retrieval iyileştirme tekniği Voyage ile test edilmiş, Claude + Voyage birlikte %49 iyileşme. Bölüm 4.7'de detaylı.
  4. input_type asimetrisi Anthropic pedagojisinin bir parçası — model-agnostik değil, bilinçli tasarım. OpenAI'de bu yok; öğrenci document/query disiplinini Voyage üzerinden doğru öğrenir.

Dogma değil pedagoji. 1.3'te dogmatik olmama kuralı işler: OpenAI embeddings yasak değil, ama platform öğretim aracı olarak Voyage seçer. Öğrenci bölüm 10'a geldiğinde üç modeli rahat karşılaştıracak kapasiteyle çıkar.

Çıktı kanıtları — 3 kanıt

📏 Çıktı — 3 kanıt

1. Senin projen için model seçimi yazılı:

muhendisal-notlarim/bolum-3/02-model-karar.md içinde: - Projen: _____________ - Veri türü (hassas/normal): _____________ - Dil (TR/EN/karma): _____________ - Aylık hacim tahmini: _____________ - Seçilen model + gerekçe: _____________

2. 3 modelli Türkçe ayrım testi:

3.1'deki 5-cümle test kodunu voyage-4 + bge-m3 + text-embedding-3-small ile tekrarla. Ayrım gücünü kendi gözlemle. Hangi model senin senaryonda daha iyi?

3. Fiyat farkını rakamla bildin:

Kendi projen için yıllık embedding faturası tahminini yaz: _____________. Bu rakamı Bölüm 8 Güvenlik + Production'da bütçe planına kaydedeceğin.

Kanıt dosyası: muhendisal-notlarim/bolum-3/02-model-karar/

Görev — 30 dakika kendi A/B testin

🎯 Görev — 2 model × 10 soru A/B karşılaştırması
  1. Önkoşul: Voyage AI + sentence-transformers kurulumu.

    pip install voyageai sentence-transformers
    

  2. 10 Türkçe cümle hazırla — kendi ilgi alanından (yemek, müzik, teknoloji). 3-4 gruplu, grup içinde yakınlık olsun.

  3. Her cümleyi 2 modelle embed et:

    • voyage-4 (API)
    • BAAI/bge-m3 (lokal)
  4. Grup içi ve grup arası ortalama kosinüs hesapla. Yukarıdaki tablodakine benzer çıkar mı?

  5. Gözlem yaz: Hangi model benim cümlelerimde daha iyi ayrım yaptı? Neden tercih edeceğim?

Başarı kriteri: 30 dakika sonunda elinde iki modelin aynı veride farklı ayrım gücü sayısal olarak var. Hangi modelin seni projende taşıyacağı rakamla netleşti.

Kanıt: Python kod + çıktı + 2-3 satır gözlem.

🔗 Birlikte okuma — neden ne oldu
  1. **A → B:** 2026'da 3 embedding ailesi: Voyage (API), OpenAI (API), açık kaynak (lokal). Her biri farklı ödün alır. Bu yüzden **senaryo önce, model sonra.**
  2. **B → C:** Voyage AI Anthropic tavsiyesi — `input_type` asimetrisi + MTEB üst + ücretsiz 200M token/ay. Bu yüzden **platform varsayılanı voyage-4.**
  3. **C → D:** OpenAI text-embedding-3 geniş ekosistem + Matryoshka + SDK v2 major bump dikkat. Bu yüzden **SDK sürümü pin'le.**
  4. **D → E:** Açık kaynak (BGE-M3, multilingual-e5-large) ücretsiz + lokal + gizlilik dostu; E5 prefix kuralı kritik. Bu yüzden **prefix atlama = %15 kalite kaybı.**
  5. **E → F:** Türkçe test: multilingual-e5 > voyage-4 > bge-m3 > OpenAI 3-small > MiniLM ayrım gücü sırası. Bu yüzden **Türkçe projede E5'i de değerlendir.**
  6. **F → G:** Karar matrisi: senaryoya göre (hassas veri? hacim? dil?) seç; varsayılan voyage-4. Bu yüzden **karar ağacını geç, seçimini yap.**
  7. **G → H:** 8 CTO tuzak: OpenAI SDK v1→v2, E5 prefix, model karıştırma, metin saklamama. Bu yüzden **değişim logla, test et.**

Sonuç: Embedding modeli bilinçli seçimin var. voyage-4 varsayılanın (platformda), ama kendi projen için E5 veya BGE'ye geçiş yolun net. Sonraki sayfa (3.3): bu vektörleri nerede saklayacağın — vektör DB karşılaştırması.

➡️ Sonraki adım

3.3 Vector DB Karşılaştırma → — Qdrant vs Pinecone vs Chroma vs pgvector; self-host vs managed; proje tipine göre seçim.

3.1 Embedding Nedir  |  Bölüm 3 girişi  |  Ana sayfa

Pekiştirme: MTEB Türkçe leaderboard (sıralamaya göre filtre) + Voyage AI docs: models + OpenAI embeddings guide. Üçünü hafta sonu 45 dk tara — model kararın sağlam olur.

MühendisAl Platform — Sözlük (Glossary)

Bu dosya pre_build.py hook'u tarafından her sayfaya otomatik eklenir.

Markdown abbr extension bu tanımları alıp terimin her geçtiği yerde

HTML <abbr title="..."> sarımı yapar → MkDocs Material tooltip gösterir.

DİKKAT: abbr case-sensitive. "Agent" tanımı "agent" kelimesini sarmaz.

Bu yüzden hem büyük hem küçük harf varyantları ayrı tanımlanır.

Yeni terim eklerken: *[TERIM]: Açıklama — tek satır, 160 karakterden kısa

Terimler alfabetik (büyük harf), hemen altında küçük harf varyantı.