Embedding Modelini Değiştirince Retrieval Bozuldu
Aynı indeks, başka bir uzay

Model kartı 'daha iyi retrieval' diyordu. Anahtarı değiştirdim. İlk sorguda tanıdık sayfa üçüncü sıraya düştü, alakasız bir giriş notu birinci oldu. Boyutlar uyuyordu. Uzay uymuyordu.
Eski vektörleri yeni modelle karşılaştırmak, iki ayrı haritayı üst üste koymak. Mesafe anlamlı değil. Anlamsız mesafe de bir sayı üretir; sayı kendinden emin durur.
İndeksi yeniden kurmak
Geçiş bir config satırı değil, yeniden gömme. Parça metnini saklıyorum; vektör türetilmiş. Metin duruyorsa indeks yeniden kurulur. Metni atıp yalnız vektör tuttuysam, geçiş için kaynağa dönmem gerekir.
from dataclasses import dataclass
@dataclass(frozen=True)
class IndexMeta:
embed_model: str
dim: int
chunk_hash: str
def can_query(index: IndexMeta, query_model: str, query_dim: int) -> bool:
return index.embed_model == query_model and index.dim == query_dim
def rebuild_required(old: IndexMeta, new_model: str, new_dim: int) -> bool:
return old.embed_model != new_model or old.dim != new_dim
Sorgu yolunda meta uymazsa hata. Sessizce skor üretmek, yanlış sayfayı 'yüksek benzerlik' diye göstermek. Boyut tesadüfen aynı kalsa da model adı farklıysa yine rebuild.
A/B'yi aynı uzayda yapmak
İki modeli karşılaştırmak istiyorsam iki indeks kuruyorum. Aynı koleksiyona karıştırmıyorum. Küçük bir sorgu seti — chunking yazısındaki üç soru — her iki indekste de koşuyor. Kazanan, his değil, o set. Geçişi de bir kerede değil, okuma yolunu yeni meta'ya bağlayınca yapıyorum.
Yorumlar
Yorumlar (0)
Yorumlar üyelere açık. Üye ol · Giriş yap