İçeriğe atla
SinaptikLabAI KNOWLEDGE PLATFORM
DersOrta30 dakikaGenerative AI Engineer · 9. ders

Gömme modeli seçimi ve vektör hijyeni

Gömme modelini isabet, bellek ve yeniden gömme yükünü birlikte tartarak seçmeyi; normalizasyon, asimetrik önek ve sürüm kaydını vektör hijyeninin parçası olarak kurmayı öğretir.

Önkoşul: Tokenization

BU DERSİN SONUNDA

  • Kosinüs, iç çarpım ve Öklid uzaklığı arasındaki ilişkiyi normalizasyon üzerinden açıklamak
  • Boyut kararını bellek ve gecikme maliyetiyle birlikte gerekçelendirmek
  • Sorgu ve belge tarafını aynı uzaya taşıyan önek kuralını kurmak
  • Gömme modeli değiştiğinde yeniden gömme planını yazmak
  1. 1

    Teori

    Kavramın çalışma mantığı

  2. 2

    Örnek

    Gerçek bir senaryo üzerinde gösterim

  3. 3

    Lab

    Uygulamalı alıştırma

  4. 4

    Test

    Kısa ölçüm

  5. 5

    Proje

    Rotadaki projeye katkı

Kısa cevap

Gömme modeli seçimi bir kalite yarışması değil, uyum kararıdır: metninizin dili ve alanı, sorgu ile belge arasındaki biçim farkı, boyutun getirdiği bellek maliyeti ve modeli değiştirdiğinizde tüm dizini yeniden gömme yükü birlikte değerlendirilir. Aynı dizinde iki farklı modelin vektörü yan yana duramaz; bu yüzden karar ilk günden bir sürüm yönetimi kararıdır.

Teori: yön, ölçü ve boyut#

Bir gömme vektörünün iki bilgisi vardır: yön ve uzunluk. Anlamsal yakınlık yönde taşınır; uzunluk ise çoğu modelde metnin uzunluğu ve terim yoğunluğu gibi ilgisiz etkenlerle değişir. Kosinüs benzerliği yalnızca yönü karşılaştırdığı için uzunluğu görmezden gelir, iç çarpım ise uzun vektörleri ödüllendirir. Vektörleri birim uzunluğa indirdiğinizde iç çarpım kosinüsle aynı sonucu verir ve Öklid uzaklığı da kosinüsün tekdüze bir dönüşümü olur; yani üç metrik arasındaki tercih, tek bir soruya iner: normalize ediyor muyum?

Boyut sayısı doğrudan maliyettir. float32 bir sayı tanım gereği 4 bayt tutar; bu örnekte 768 boyut varsayarsak bir vektörün ham hali yaklaşık 3 KB yer kaplar, parça sayısı milyonlara çıktığında yalnızca ham vektörler gigabayt ölçeğine ulaşır. Yüksek boyut daha ince ayrım imkânı verebilir ama bellek, dizin inşa süresi ve sorgu gecikmesi de onunla birlikte büyür. Bazı modeller vektörün baştan belli bir kısmının kendi başına anlamlı kalacağı biçimde eğitilir; böyle bir modelde boyutu kırpmak kaliteyi kademeli düşürür. Model kartında böyle bir davranış yazmıyorsa kırpmayın, gelişigüzel kesilen vektör sessizce bozulur.

python
import numpy as np


def birimlestir(v):
    """Vektörü birim uzunluğa indirir; sıfır vektörü olduğu gibi döner."""
    norm = np.linalg.norm(v, axis=-1, keepdims=True)
    return v / np.where(norm == 0, 1, norm)


# Birimleştirdikten sonra iç çarpım, kosinüs benzerliğine eşittir.
belgeler = birimlestir(belge_vektorleri)  # (n, d)
sorgu = birimlestir(sorgu_vektoru)        # (d,)
benzerlik = belgeler @ sorgu              # (n,)

# Kritik nokta: sıralamayı belge tarafı belirler. Yalnızca sorguyu birimleştirmek
# bütün puanları aynı sabite böler; sıra değişmez, yalnızca eşikler kayar.
# Asıl tehlike dizinde normalize edilmiş ve edilmemiş vektörlerin karışmasıdır.

Asimetri: sorgu ile belge aynı şey değil#

Aramada iki taraf farklı biçimdedir: sorgu kısa ve soru kipinde, belge uzun ve bildirim kipindedir. İkisini aynı kodlayıcıdan aynı biçimde geçirirseniz model soruya benzeyen metinleri öne çıkarmaya eğilir; en çok soru cümlesi içeren parça, cevabı taşıyan parçanın önüne geçer. Asimetrik eğitilmiş modeller bunu sorgu ve belge için ayrı önek ya da yönerge bekleyerek çözer. Modelin beklediği öneki atlamak sessiz bir kalite kaybıdır: sistem hata vermez, yalnızca isabet düşer. Belgeyi önekle dizine yazıp sorguyu öneksiz sormak da iki tarafı fiilen farklı uzaylara taşır.

Uygulamada: seçim ölçütleri#

ÖlçütNeden önemliNasıl sınanır
Dil kapsamıTürkçe morfolojisi ve karışık dilli metin her modelde eşit temsil edilmezKendi setinizden Türkçe sorgu-belge çiftleriyle ilk-beş isabeti elle işaretleyin
Alan uyumuHukuk, sağlık veya kod gibi alanlarda genel amaçlı gömme yakın terimleri ayırt edemezAlan terimlerini ve eşanlamlılarını içeren 20 sorguyla iki modeli karşılaştırın
Asimetri desteğiSorgu ve belge aynı uzaya doğru önekle taşınmazsa isabet düşerÖnekli ve öneksiz koşuyu aynı sorgu setinde ölçün
Boyut ve kırpılabilirlikBellek ve gecikme doğrudan boyuta bağlıdırTam boyut ile kırpılmış boyutu aynı sette karşılaştırın
Girdi sınırıModel girdiyi sessizce kesiyorsa parçanın sonu vektöre hiç girmezParça uzunluğu dağılımınızı modelin girdi sınırıyla karşılaştırın
Çalıştırma yeriKendi donanımınızda mı yoksa dış serviste mi koşacağı, veri çıkışı ve gecikmeyi belirlerKurumsal veri sınıflandırmanızla uyumu yazılı olarak kontrol edin
Ölçütler öncelik sırasına göre dizilmemiştir; hangisinin bağlayıcı olduğunu kendi veri setiniz belirler.

Karar akışı#

  1. 1Sınama seti yaz

    Üretimden gelmiş 20-30 gerçek sorgu seçin ve her biri için doğru kabul edilen parçaları elle işaretleyin.

  2. 2İki aday belirle

    Biri genel amaçlı ve çok dilli, diğeri alanınıza yakın olsun; ikisini de aynı parçalamayla gömün.

  3. 3Aynı koşulda ölç

    Aynı normalizasyon, aynı önek kuralı, aynı ilk-k değeri; tek değişken model olsun.

  4. 4Maliyeti karara kat

    İsabet farkını bellek, gecikme ve olası yeniden gömme yüküyle birlikte yazın; fark küçükse ucuz olanı seçin.

Sık yapılan hata: sessiz sürüm kayması#

En pahalı hata, model sürümünü kayıt altına almadan dizin doldurmaktır. Gömme modeli değiştiğinde ya da servis tarafında sessizce güncellendiğinde eski vektörler yeni sorgu vektörleriyle aynı uzayda olmaz; sistem yine hata vermez, yalnızca giderek daha alakasız sonuç döndürür. Her parçanın üst verisinde model adı, sürümü ve normalizasyon kuralı bulunmalı; yeniden gömme bir bakım işi olarak planlanmalı ve geçiş sırasında eski ile yeni dizin bir süre yan yana yaşayabilmelidir.

  • Benzerlik puanını doğruluk sanmak: gömme yakınlık ölçer, doğruluk ölçmez; alakasız iki metin de yüksek puan alabilir.
  • Sabit eşik yazmak: eşik model, alan ve parçalamaya göre değişir; eşik kullanılacaksa kendi setinizde kalibre edilir.
  • Sorgu ile belgeyi farklı modellerle gömmek: iki ayrı uzayda kosinüs hesaplamak anlamsızdır.
  • Boyutu keyfî kırpmak: model buna göre eğitilmediyse vektör bozulur ve bozulma ölçümde geç görünür.

LAB · UYGULAMALI ALIŞTIRMA

İki gömme modelini aynı koşulda ölçün

  1. 1Kendi belge setinizden 30 parça ve 20 gerçek sorgu toplayın (üretim günlüğünüz yoksa bu belgeleri kullanan ekip arkadaşlarınızdan sorularını yazılı olarak isteyin); her sorgu için doğru kabul edilen parçaları elle işaretleyin.
  2. 2Aynı parçalamayı kullanarak hâlihazırda erişiminiz olan iki gömme kurulumuyla iki ayrı dizin kurun — ikinci aday yeni bir model olabileceği gibi aynı modelin farklı boyutlu çıktısı da olabilir; her vektörün üst verisine model adını ve sürümünü yazın.
  3. 3Her iki dizinde vektörleri birim uzunluğa indirip iç çarpımla arama yapın ve aynı işlemi sorgu tarafında da uyguladığınızı doğrulayın.
  4. 4Modellerden biri sorgu veya belge öneki bekliyorsa, önekli ve öneksiz olmak üzere iki koşu daha ekleyin.
  5. 5Her koşu için ilk-beş ilgili oranını, sorgu başına süreyi ve ham vektör boyutunu (boyut × 4 bayt × parça sayısı) tek tabloya yazın.
  6. 6Kazanan koşuyu seçin ve gerekçeyi isabet farkı, bellek farkı ve yeniden gömme yükü üçlüsüyle bir paragrafta yazın.

Beklenen çıktı

Koşuların ilk-beş isabet, gecikme ve bellek karşılaştırmasını taşıyan tek bir tablo ile seçilen gömme modelinin ve normalizasyon kuralının yazılı gerekçesi.

Sık sorulan sorular

Boyutu yüksek model her zaman daha iyi mi?

Hayır. Boyut ayrım kapasitesini artırabilir ama bellek, dizin inşası ve gecikmeyi de büyütür. Küçük boyutlu bir modelin alanınıza daha yakın eğitilmiş olması, yüksek boyutlu genel bir modeli geçmesine yeter. Kararı kendi sorgu setinizdeki isabete bakarak verin.

Normalizasyonu sonradan ekleyebilir miyim?

Yeniden gömmeye gerek yok ama dizindeki vektörleri yeniden yazmanız gerekir: normalizasyon yalnızca bir ölçeklemedir, mevcut vektörler modele tekrar sokulmadan birim uzunluğa indirilebilir. Sıralamayı belirleyen taraf belgelerdir; yalnızca sorguyu birimleştirmek bütün puanları aynı sabite böldüğü için sıralamayı değiştirmez, yalnızca mutlak puanları ve eşikleri kaydırır. Asıl tehlike dizinde normalize edilmiş ve edilmemiş vektörlerin yan yana durmasıdır; sıralama asıl o zaman sessizce bozulur. Bu yüzden kural üst veride kayıtlı tutulur ve dizin bir bütün olarak dönüştürülür.

Modeli değiştirmek zorunda kalırsam ne yapmalıyım?

Yeni dizini eskisinin yanına kurup aynı sınama setinde karşılaştırın, sonra okuma trafiğini yeni dizine alın. Kısmi geçiş, yani bazı parçaların eski bazılarının yeni modelle gömülmesi, sıralamayı sessizce bozar; karışık dizin bırakmayın.

LEARN

Generative AI Engineer rotasına devam et

Dersler tek başına da okunabilir, ama sıralı ilerlemek önkoşul boşluklarını kapatır.