Kısa maddeler neden kayboluyor
Uzun bir teknik dokümanda en kritik bilgi bazen tek satırdır: "titreşim 7,1 mm/s'yi aşarsa makineyi durdur." Ve tam o satır, aramada en kolay kaybolandı.
Belirti
Arama sistemimiz uzun paragrafları iyi getiriyordu. Ama tek satırlık kritik uyarıları getiremiyordu. Kullanıcı bir eşik değeri soruyor; sistem ilgili bölümü genel hatlarıyla getiriyor, fakat o tek satırı atlıyordu.
Değerlendirme (eval) setimizde desen netti: uzun-bağlam sorularında recall yüksek, kısa-madde sorularında düşük. Yani model konuyu biliyor, sadece kritik cümleyi göremiyordu.
Kök sebep: seyrelme
Bir metin parçasını (chunk) tek bir vektöre gömüyoruz. Parça uzunsa, o tek satırlık kritik ifadenin sinyali paragrafın geri kalanının ortalamasında seyreliyor. 800 kelimelik bir bölümün içinde geçen 7,1 mm/s, embedding uzayında neredeyse görünmez hâle geliyor.
Sorun modelin bilmemesi değildi; kritik ifadenin gürültüde boğulmasıydı.
İki adımlı çözüm
- Small-to-big. Eşleştirmeyi küçük parçalarla yap — o tek satır kendi başına bir chunk olsun, sinyali güçlü kalsın. Ama cevaba büyük bağlamı getir, çünkü satır tek başına anlamsızdır; ait olduğu bölümle birlikte anlam kazanır.
- Nadir-ifade sinyali.
7,1 mm/s,M12x1.5gibi nadir ve ayırt edici ifadeleri yakalayan bir keyword katmanı ekledik. Embedding kaçırırsa, tam-eşleşme yakalar.
Sonuç
Eval setimizde kısa-madde recall'ı 5/5'e çıktı — üstelik uzun-bağlam performansını bozmadan. Açık kalan iş: mevcut belgeleri bu yeni yapıya taşımak ve eval setini büyütmek. Bunları da not ediyoruz; çünkü "çözüldü" demek, "her belgede çözüldü" demek değil.
Ortalamanın iyi olması, uçların iyi olması demek değildir.
Ve sahada en çok acıtan, uçlardaki hatalardır — çünkü kritik bilgi çoğu zaman en kısa cümlede saklıdır.