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
Teori
Kavramın çalışma mantığı
- 2
Örnek
Gerçek bir senaryo üzerinde gösterim
- 3
Lab
Uygulamalı alıştırma
- 4
Test
Kısa ölçüm
- 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.
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çüt | Neden önemli | Nasıl sınanır |
|---|---|---|
| Dil kapsamı | Türkçe morfolojisi ve karışık dilli metin her modelde eşit temsil edilmez | Kendi setinizden Türkçe sorgu-belge çiftleriyle ilk-beş isabeti elle işaretleyin |
| Alan uyumu | Hukuk, sağlık veya kod gibi alanlarda genel amaçlı gömme yakın terimleri ayırt edemez | Alan terimlerini ve eşanlamlılarını içeren 20 sorguyla iki modeli karşılaştırın |
| Asimetri desteği | Sorgu 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ılabilirlik | Bellek ve gecikme doğrudan boyuta bağlıdır | Tam 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ç girmez | Parça uzunluğu dağılımınızı modelin girdi sınırıyla karşılaştırın |
| Çalıştırma yeri | Kendi donanımınızda mı yoksa dış serviste mi koşacağı, veri çıkışı ve gecikmeyi belirler | Kurumsal veri sınıflandırmanızla uyumu yazılı olarak kontrol edin |
Karar akışı#
- 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İ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.
- 3Aynı koşulda ölç
Aynı normalizasyon, aynı önek kuralı, aynı ilk-k değeri; tek değişken model olsun.
- 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
- 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.
- 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.
- 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.
- 4Modellerden biri sorgu veya belge öneki bekliyorsa, önekli ve öneksiz olmak üzere iki koşu daha ekleyin.
- 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.
- 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.
