Vebende Akademi - embeddings-gelistiriciler-icin-aciklama
Uzmanla Konuşun
Blog
MAKALE

Embeddings Nedir? Geliştiriciler İçin Kapsamlı Rehber

Yayınlayan: Vebende Akademi  |  Okuma süresi: ~20-30 dk

Embeddings Nedir? Geliştiriciler İçin Kapsamlı Rehber

Yayınlayan: Vebende Akademi  |  Okuma süresi: ~20-30 dk

1. Giriş

Embeddings — yani gömülü vektör temsilleri — modern makine öğrenimi ve özellikle doğal dil işleme (NLP) ile bilgi erişim sistemlerinin temel yapı taşlarından biri haline geldi. Bir kelimeyi, cümleyi, belgeyi veya bir nesneyi sayısal vektörlerle ifade etme yeteneği; arama, öneri, sınıflandırma, kümeleme, anomali tespiti ve Retrieval-Augmented Generation (RAG) gibi çok sayıda uygulamanın çekirdeğini oluşturuyor.

Bu teknoloji neden konuşuluyor? Çünkü vektör tabanlı temsil, ham metin veya veri ile doğrudan işlem yapmaktan çok daha esnek ve güçlü: anlamsal benzerlik ölçülebiliyor, çok dilli veriler tek bir gömleğe sokulabiliyor ve LLM'ler gibi büyük modellerle entegre etmek kolaylaşıyor. Geliştiriciler, veri mühendisleri ve ML mühendisleri için embeddings, veri mühendisliğinin bir parçası olarak ele alınmalı; çünkü yanlış embedding seçimi veya hatalı pipeline tasarımı üretimde pahalı hatalara yol açabilir.

Bu rehber, embeddings kavramını derinlemesine, mühendis odaklı ve pratik örneklerle ele alır. Hem kavramsal temelleri, hem mimari etkileri, hem de uygulama düzeyindeki en iyi pratikleri içerir.

2. Kavramsal Temeller

Temel tanım

Embedding: Nesnelerin (kelimeler, cümleler, paragraflar, görseller vb.) sayısal vektörlerle temsil edilmesidir. Amaç, benzer nesnelerin vektör uzayında yakın konumda yer almasını sağlamaktır. Vektörler tipik olarak 64–4096 boyut arası olabilir; boyut seçimi uygulamaya ve modele bağlıdır.

Mimari rolleri

Embeddings, ML mimarilerinde üç ana yerde kullanılır:

  1. Girdi temsilcisi: Modelin embeddingle başlatılan katmanı (ör. transformer embedding layer).
  2. Özellik vektörleri: Veri tabanlı özellikler olarak downstream modellerde kullanılır (recommendation, clustering).
  3. Indexing/Searching: Vektör veritabanlarında saklanıp benzerlik arama için kullanılır (Faiss, Milvus, Pinecone).

Terminoloji

  • Embedding dimension: Vektörün uzunluğu (ör. 768, 1024).
  • Embedding model: Vektör üreten algoritma veya ağ (word2vec, GloVe, BERT, sentence-transformers, CLIP).
  • Vector store / index: Vektörlerin saklandığı ve benzerlik araması yapıldığı veri yapısı/kütüphane.
  • Similarity metric: Benzerlik ölçüsü (cosine similarity, dot product, L2 distance).

3. Nasıl Çalışır?

Genel çalışma mantığı

Embedding üretimi genelde iki ana yolla olur: önceden eğitilmiş (pretrained) modellerin çıkarım (inference) ile kullanımı ve özel görevler için fine-tune edilmiş modellerle gömülülerin üretilmesi. Teknik olarak bir embedding modeli, girdiyi (ör. cümle) token'lara ayırır, token embedding'lerini birleştirir (pooling) ve son olarak bir normalizasyon veya lineer katman uygular.

Bazı yaygın üretim yolları

  • Word embeddings: word2vec, GloVe — kelime düzeyinde statik vektörler üretir.
  • Contextual embeddings: BERT, RoBERTa — aynı kelime farklı bağlamlarda farklı vektör üretir.
  • Sentence/Document embeddings: Sentence-BERT, Universal Sentence Encoder — cümle/başlık/döküman temsilleri üretir.
  • Multimodal embeddings: CLIP gibi modeller metin ve görüntüyü aynı uzaya gömer.

Veri akışı — örnek pipeline

  1. Ham veri toplanır (doküman, metin, metadata).
  2. Önişleme: temizleme, normalizasyon, tokenizasyon.
  3. Embedding üretimi: model inference veya batch training.
  4. Indexing: vektör veritabanına yazma (vektör + referans meta).
  5. Arama/Scoring: sorgu embed'i ile kNN/ANN araması.

Benzerlik metrikleri

En sık kullanılan iki metrik:

  • Cosine similarity: iki vektörün açısal benzerliğini ölçer. Daha çok normalizasyonlu embeddingler ile tercih edilir.
  • Dot product / inner product: skaler çarpım. Genelde embeddingler normalize edilmediğinde veya model dot-product'u optimize ettiyse kullanılır.

4. Gerçek Dünya Kullanımları

Arama ve RAG (Retrieval-Augmented Generation)

Arama sistemlerinde sorgu vektörü ile döküman vektörlerinin karşılaştırılması, klasik inverted-index yaklaşımlarına göre anlamsal eşleşme sunar. RAG sistemlerinde LLM'ler dış bellekten çekilen dökümanları bağlama ekleyerek daha doğru ve kaynaklı cevaplar üretir.

Öneri sistemleri (Recommendation)

Kullanıcı ve ürün davranışlarının embedding'leri, benzer kullanıcı/ürün aramaları ve implicit feedback ile yüksek kaliteli öneriler üretir. Örneğin, ürün embedding'leri ürün açıklamaları + görsellerin birleşik embedding'i olabilir.

Semantik arama — Netflix/Spotify tipi uygulamalar

İçerik etiketleri, başlıklar ve kullanıcı yorumlarından üretilen embedding'ler ile toplu ve kişiselleştirilmiş arama yapılır; aynı zamanda içerik keşfi için kümeleme ve benzerlik tabanlı özellikler üretilebilir.

Dolandırıcılık tespiti ve anomali

Olay dizilerini veya kullanıcı davranışlarını embedding'leyip düşük distance içinde gruplayarak anomalileri tespit etmek mümkündür; model drift ve concept change senaryolarında embedding'lerin periyodik olarak güncellenmesi gerekir.

5. Avantajlar ve Sınırlamalar

Avantajlar

  • Anlamsal eşleşme: Sadece yüzeysel token eşleşmesi yerine bağlamsal anlam yakalanır.
  • Esneklik: Metin, görsel ve diğer modaliteleri aynı uzaya sokma imkânı.
  • Ölçeklenebilir arama: ANN kütüphaneleri (Faiss, HNSW) ile büyük veri setlerinde hızlı sorgu.

Sınırlamalar

  • Maliyet: Büyük embedding modellerinin inference maliyeti yüksek olabilir.
  • Drift: Zamanla veri dağılımı değiştiğinde embedding'ler yanıltıcı olabilir.
  • Boyut ve latency tradeoff: daha yüksek boyut daha iyi temsil ama daha yavaş arama ve daha fazla depolama gerektirir.

6. Alternatifler ve Karşılaştırma

Aşağıdaki tablo, yaygın embedding yaklaşımlarını karşılaştırır.

Teknoloji Avantaj Dezavantaj
word2vec / GloVe Hafif, hızlı, iyi kelime temsili Context bağımsız; aynı kelime hep aynı vektör
BERT / Contextual Bağlama duyarlı temsil Çıkarım maliyeti yüksek, sentence pooling gerekebilir
Sentence-BERT / Sentence Transformers Kısa metin ve cümlede yüksek performans, hazır veritabanlarıyla uyumlu Model boyutu ve latency maliyeti
CLIP (multimodal) Görüntü+metin ortak uzay, görsel arama Özel kullanım senaryoları, eğitim verisi etkili

7. Practical Implementation (Python & C# Örnekleri)

Bu bölümde gerçekçi, üretime yakın örnekler sunuyorum. Örnek senaryo: metin koleksiyonundan embedding üretecek ve bir vektör DB'ye yazacak küçük bir pipeline.

Python: sentence-transformers ile embedding üretimi ve Faiss indexleme

# requirements: sentence-transformers, faiss-cpu, numpy
from sentence_transformers import SentenceTransformer
import faiss
import numpy as np

# Model yükleme
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')

# Örnek dokümanlar
texts = [
    "Vebende Akademi'de AI mühendisliği eğitimi.",
    "Docker ve Kubernetes ile üretime alma pratikleri.",
    "Büyük dil modelleri ve inference optimizasyonu."
]

# Embedding üret
embs = model.encode(texts, convert_to_numpy=True, show_progress_bar=False)

# Normalize (cosine similarity için)
faiss.normalize_L2(embs)

# Faiss index oluştur
d = embs.shape[1]
index = faiss.IndexFlatIP(d)  # inner product (cosine için normalize ettik)
index.add(embs)

# Sorgu
q = model.encode(["AI mühendisliği eğitimi"], convert_to_numpy=True)
faiss.normalize_L2(q)
D,I = index.search(q, k=2)
print('Distances:', D)
print('Indices:', I)

Bu pipeline küçük ölçek için uygundur. Üretimde Faiss yerine Milvus veya Pinecone gibi dağıtık/kalıcı çözümler tercih edilir; ayrıca batching, quantization ve async işleme eklenmelidir.

C#: .NET ile embedding servisi tüketimi (HTTP üzerinden Python servis örneği)

// .NET 7/10 minimal API tüketici örneği
using System.Net.Http.Json;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapPost("/search", async (SearchRequest req) =>
{
    using var client = new HttpClient();
    // Python servis /embedding endpoint'i döndürsün
    var embedResp = await client.PostAsJsonAsync("http://localhost:8000/embeddings", new { texts = req.Texts });
    embedResp.EnsureSuccessStatusCode();
    var embeds = await embedResp.Content.ReadFromJsonAsync();

    // Burada embeds ile .NET tarafında ANN sorgusu yapılabilir (örn. Annoy.NET veya Faiss.NET wrapper)
    // Örnek basit: döndürülen ilk embedding'i indekste karşılaştır
    return Results.Ok(new { message = "Embedding alındı", count = embeds.Length });
});

app.Run();

record SearchRequest(string[] Texts);

Gerçek üretimde .NET uygulamanız doğrudan ONNX veya ONNX Runtime ile embedding üretip Faiss/Annoy ile sorgu yapabilir; alternatif olarak vektör DB servislerini (Pinecone, Milvus) HTTP/gRPC ile çağırabilirsiniz.

8. Mimari Tasarım Örneği: Semantic Search Platform

Aşağıda ölçeklenebilir bir semantic search platformu için yüksek seviyeli mimari yer almaktadır.

Katmanlar

  1. Ingestion: Döküman import, text extraction (OCR, PDF parsing)
  2. Preprocessing: temizleme, chunking, metadata ekleme
  3. Embedding service: batch ve realtime embedding üretimi (GPU pool + CPU fallback)
  4. Vector store: ANN index (Milvus/Pinecone/Faiss + metadata DB)
  5. Query layer: API gateway, query embedding, retrieval + reranking
  6. Reranker: cross-encoder veya LLM ile döküman sıralama
  7. Monitoring & retraining: drift detection, cold-start handling

Tasarım notları

  • Chunking stratejisi: uzun dökümanları anlamlı parçalara bölün (overlap ile).
  • Embedding tutarlılığı: offline/online embedding'lerin aynı pipeline'ı kullanmasına dikkat edin.
  • Reranking: ilk ANN sonuçlarını daha maliyetli cross-encoder ile sıralayın.

9. En İyi Pratikler

Production kullanımı

  • Embedding modelini sürümleyin (model registry) ve her embedding ile model metadata'sını saklayın.
  • Embedding'leri normalize edin ve benzerlik metriğini sabitleyin (cosine vs dot).
  • İndeks güncellemeleri için yerinde reindex veya incremental index stratejileri tasarlayın.
  • Metrik takibi: recall@k, MRR, latency ve cost-per-query'yi izleyin.

Performans optimizasyonu

  • Vector quantization (PQ, IVF) ile depolama ve sorgu hızını optimize edin.
  • Mixed precision ve batch inference ile GPU verimliliğini artırın.
  • Cache sıcak sorguların embedding'lerini ve sonuçlarını.

Güvenlik

  • Embedding içerisine gizli/PII bilgi sızmasını önlemek için ön-işleme ve PII maskleme uygulayın.
  • Erişim kontrolleri ve API rate limiting uygulayın.

10. Sık Yapılan Hatalar

  • Train/serve mismatch: Eğitimde kullanılan embedding pipeline ile üretim pipeline'ın farklı olması.
  • Embeddingleri versiyonlamadan güncellemek: geriye dönük uyuşmazlıklar oluşur.
  • Index tutarlılığı: indeks güncellenirken eski meta ile yeni embedding karışması.
  • Uygun benchmark yapılmadan embedding boyutu seçimi yapmak.

11. Gelecek Trendler

  • Joint multimodal embeddings: tek vektör uzayında görüntü, metin, ses.
  • Adaptive ve context-aware embeddings: kullanıcı ve görev bağlamına göre dinamik embedding'ler.
  • On-device embeddings: gizlilik ve latency için uçta embedding üretimi.
  • Model-agnostic vector stores: standardizasyon ve performans optimizasyonu artacak.

12. Sonuç

Embeddings, modern uygulamalarda anlamsal eşleme, öneri ve bilgi erişimi için güçlü bir araçtır. Başarılı bir embedding stratejisi; doğru model seçimi, pipeline tutarlılığı, indeksleme ve sürekli izleme ile mümkün olur. Mühendislik perspektifinden bakıldığında, embedding'ler bir veri ve altyapı problemi olduğu kadar bir modelleme problemidir. Küçük deneylerle başlayın, metriklerle büyütün ve üretimde otomasyon ile sürdürün.

Ek Bölümler

FAQ (Sık Sorulan Sorular)

  1. Embedding ile feature vector aynı şey mi?

    Genel olarak evet; embedding bir feature vector çeşididir ama genelde semantik temsil amaçlıdır.

  2. Hangi similarity metric en iyisidir?

    Use-case'a bağlıdır. Cosine similarity genelde iyi bir başlangıçtır; dot product bazı öğrenilmiş retrieval senaryolarında daha uygundur.

  3. Embedding boyutunu nasıl seçmeliyim?

    Başlangıç için 256–1024 arası değerlere bakın; veri miktarı ve görev karmaşıklığı arttıkça boyutu artırın ve doğruluk/latency trade-off'u ölçün.

  4. Embeddings depolamak için en iyi seçenek nedir?

    Hedef performansa göre Faiss, Milvus, Pinecone veya Vespa gibi çözümler tercih edilir. Dağıtık ve kalıcı ihtiyaç varsa yönetilen servisleri düşünün.

  5. Embedding'leri her veri güncellemesinde yeniden mi üretmeliyim?

    Gerçek zamanlı veride incremental embedding üretimi idealdir; büyük değişikliklerde toplu reindex gerekebilir.

  6. Quantization güvenilir midir?

    Evet; genelde küçük doğruluk kaybı ile büyük depolama ve hız kazancı sağlar. Önce test edin.

  7. Embeddings etik sorunlar yaratır mı?

    Evet; eğitim verisindeki bias embedding'lere yansır. Veri temizliği ve fairness testleri uygulayın.

  8. Embedding modelini nasıl sürümlemeliyim?

    Model registry (örn. MLflow), model hash'i, eğitim verisi snapshot'ı ve embedding dimension gibi metadata ile sürümleyin.

Anahtar Kavramlar

  • Embedding: Nesnelerin vektör temsili.
  • Vector store: Vektörlerin saklandığı ve sorgulandığı veri tabanı.
  • Cosine similarity: İki vektör arasındaki açısal benzerlik ölçüsü.
  • ANN: Approximate Nearest Neighbor, hızlı benzerlik arama algoritmaları.
  • Quantization: Vektörlerin düşük-boyu temsil teknikleri.

Öğrenme Yol Haritası

  1. Lineer cebir ve vektör uzayı kavramlarını tazeleyin.
  2. Word2vec, GloVe gibi eski yaklaşımları öğrenin; basit uygulamalar yapın.
  3. Transformer tabanlı embedding üretimini (BERT, SBERT) öğrenin; Hugging Face deneyleri yapın.
  4. Faiss, Milvus veya Pinecone ile ANN indexleme ve benchmarking yapın.
  5. Production konuları: batching, quantization, model sürümleme ve izleme.
  6. Multimodal embeddings ve RAG sistemlerini inceleyin.