Benzerlik Araması: Neden Bazen Alakasız Sonuç Gelir?
Benzerlik araması her zaman sonuç döndürür, hiçbir zaman yok demez. Alakasız sonucun hangi katmandan geldiğini üç testle ayırın, sonra sessizliği duyulur yapın.
- Seviye
- Orta
- Ön koşul
- RAG Nedir ve Hangi Problemi Çözer? · Gömme Modeli Seçimi ve Vektör Veritabanları (isteğe bağlı)
- Okuma süresi
- ~11 dakika
Sisteme sorun: “2025 sözleşmesinde fesih bildirimi kaç gün önce yapılır?” Cevap gelir, otuz gün der, üstelik dayandığı kaynağı da gösterir. Tek sorun, gösterdiği kaynağın 2024 sözleşmesi olmasıdır.
Hiçbir yerde hata mesajı yok. Parçalama düzgün, sayıya çevirme doğru, depo en yakın parçaları eksiksiz getirdi. Yalnızca en yakın ile doğru aynı şey değildi.
Bu yazı o farkın yazısı. Önce alakasız sonucun hangi katmandan geldiğini ayırt etmenin bir yolunu, sonra bu katmanın kendi hata kalıplarını, en sonda da başarısızlığı görünür kılmanın yollarını anlatıyor.
Sistemin “sonuç yok” diye bir hâli yok
Bir arama motoruna olmayan bir şeyi sorarsanız boş sayfa gelir. Benzerlik aramasında böyle bir cevap yok.
Sistem her sorguda istediğiniz kadar parça döndürür. Beş parça istediyseniz beş parça gelir; külliyatta konuyla ilgili tek satır olmasa bile beş parça gelir. Gelenler o durumda en yakın olanlar değil, en az uzak olanlardır. Ve dışarıdan bakınca ikisi birbirinden ayırt edilemez, çünkü çıktı iki durumda da aynı biçimdedir: bir metin listesi.
Bu, bir kusur değil tasarımın sonucudur. Arama mesafe ölçer; mesafenin bir eşiği yoktur, çünkü hangi mesafenin çok uzak sayılacağı külliyattan külliyata değişir.
Sonuç, boru hattının en tanıdık davranışını üretir. Getirilen parçalar promptun içine konur, model onları okur ve cevabını yazar. Model bu parçaların doğru mu yoksa yalnızca en yakın mı olduğunu bilmez; ikisi de aynı biçimde önüne gelmiştir. → RAG Nedir ve Hangi Problemi Çözer?
Yani sistem yanılırken bunu size bildirmez. Sessizliğin kaynağı model değil, aramanın kendisidir.
Sezgi: kelimelerin kokusunu alan kütüphaneci
Bir kütüphaneci düşünün ki sorunuzu duymuyor, yalnızca kelimelerinizin kokusunu alıyor. “İade süresi kaç gün” dediğinizde iade kokan, süre kokan, gün kokan ne varsa raflardan çekip getiriyor.
Ve her seferinde tam beş kitap getiriyor. Kütüphanede iade hakkında hiçbir şey yoksa yine beş kitap getiriyor — sorunuza en az yabancı kokan beşini.
Kütüphaneci kötü niyetli değil, hatta çoğu zaman şaşırtıcı derecede isabetli. Ama işi koku eşleştirmek; sorunuzu anlamak, cevabı olup olmadığına karar vermek ya da elindeki iki baskıdan hangisinin güncel olduğunu bilmek işinin parçası değil.
Benzetme şurada bozuluyor: gerçek bir kütüphaneci “bu konuda bir şeyimiz yok” diyebilir ve “bu baskı eski, yenisi şurada” diye ekleyebilir. Buradaki kütüphanecinin iki cümlesi de yok. Elinde yalnızca mesafe var; ne yokluk kavramı var ne de güncellik.
Üç kat, üç sahip: hatanın yerini bulan test
Alakasız bir sonuç gördüğünüzde ilk soru “neden oldu” değil, “hangi katmanda oldu” olmalı. Çünkü boru hattı üç kat ve üçünün çaresi ayrı. Sırayla sorulan üç test, sorumluyu birkaç dakikada bulur ve hiçbiri kod yazmayı gerektirmez.
Birinci test — parça testi. Doğru cevabı kaynak belgede elle bulun. Sonra o metnin hangi parçaya ya da parçalara düştüğüne bakın. Cevap iki parçaya bölünmüşse, ya da konusu bambaşka bir parçanın içinde kalmışsa test burada biter: arama zaten var olmayan bir şeyi getiremez. Sorumlu parçalamadır ve arama tarafında yapılacak hiçbir iyileştirme bunu düzeltmez. → Belge Parçalama (Chunking) Stratejileri
İkinci test — temsil testi. Doğru parçanın kendi metnini sorgu olarak kullanın. Bir parça, kendi metniyle arandığında birinci sırada dönmelidir; kendine olan uzaklığı sıfırdır. Dönmüyorsa sorun aramada değil, o parçanın sayıya çevrilmesinde ya da dizine yazılmasındadır. En sık sebepler: parça girdi sınırını aşıp kırpılmış, dizin eksik kurulmuş, ya da sorgu ile belge farklı ayarlarla gömülmüş. Sorumlu temsil katmanıdır. → Gömme Modeli Seçimi ve Vektör Veritabanları
Üçüncü kat — geriye kalan. Doğru parça bütün hâlde duruyorsa ve kendi metniyle bulunabiliyorsa, ama kullanıcının sorusu onu bulamıyorsa, sorumlu aramanın kendisidir. Soru ile cevap birbirine benziyor, ama sistemin ölçtüğü türden benzemiyorlar.
Bu testin değeri şu: ilk ikisini geçmeden üçüncü katta çözüm aramak, yanlış katta harcanan zamandır. Yazının geri kalanı yalnızca üçüncü katı anlatıyor.
Benzerlik neyi ölçer, ilgililik neyi ister
Benzerlik simetriktir: A metni B’ye ne kadar yakınsa B de A’ya o kadar yakındır. İlgililik simetrik değildir. Bir cevap sorunun ilgilisidir; soru cevabın ilgilisi sayılmaz.
Bu fark tek başına hataların yarısını açıklıyor. Bir soru, kendi cevabından çok başka bir soruya benzer. “İade süresi kaç gün” ile “iade nasıl yapılır” aynı kelimelerden kurulmuş iki sorudur; oysa gerçek cevap “Ürünü teslim aldığınız tarihten itibaren on dört gün içinde…” diye başlar ve soruyla neredeyse hiç kelime paylaşmaz.
İkinci yapısal kısıt sıkıştırmadır. Bir parça, uzunluğu ne olursa olsun tek bir noktaya indirgenir. O noktada yüzlerce kelimenin ortak etkisi var. Sizin için kararı belirleyen tek kelime — bir tarih, bir olumsuzluk eki, bir sıfat — yüzlerce kelimeden biridir ve noktayı çok az oynatır.
Yani sistem neredeyse aynı iki metni gerçekten neredeyse aynı görür. Sizin gözünüzde zıt olmaları bir şeyi değiştirmez.
Bu katmanın kendi hata kalıpları
Yüzeyde benzeyen, konusu farklı parça. En sık ve en zararlı olanı. İki metin aynı konu sözlüğünü paylaşıyor, yalnızca kararı belirleyen ayrıntıda ayrılıyor: 2024 ile 2025, uygulanır ile uygulanmaz, izinli ile izinsiz. Getirilen parça konuya oturuyor, model de ona sadık kalarak tutarlı ve akıcı bir cevap yazıyor. Yanlışlık cevabın hiçbir yerinde görünmüyor, çünkü cevap gerçekten getirilen metne uygun.
Olumsuzluk ve tarih körlüğü. Yukarıdakinin en keskin hâli. “Bu madde uygulanmaz” ile “Bu madde uygulanır” birbirine çok yakın iki noktadır; aradaki fark bir ektir. Aynı şekilde bir belgenin iki yıllık iki sürümü de birbirine çok yakındır ve hangisinin geçerli olduğunu geometri bilmez.
Hangisi güncel sorusunun cevabı yok. Sistem, bir parçanın yürürlükte mi yoksa yürürlükten kalkmış mı olduğunu göremez. Aynı politikanın üç sürümü depoda duruyorsa üçü de aynı yakınlıkta bekler ve hangisinin geldiği tesadüfe kalır.
Kuruma özgü kodlar ve kısaltmalar kaçar. Yaygın eşanlamlılar genellikle çalışır; “telefon” ile “cep” birbirini bulur. Kaçan şey, modelin eğitiminde hiç görmediği içeridekilerdir: form numaraları, ürün kodları, iç birim kısaltmaları. Bunların anlamı yok, karşılığı var — ve anlam ölçen bir sistem karşılığı bilmez.
Getirilen parça sayısı sabit, cevabın boyu değişken. Beş parça getiren bir kurulumda cevap tek parçadaysa dört yer gürültüye gider; cevap yedi parçaya yayılmışsa model eksik bir cevabı tam sanır. Aynı ayar iki hatayı birden üretir ve hangisinin olduğunu çıktıya bakarak anlayamazsınız.
Sessizliği duyulur yapmak
Bu kalıpların hiçbiri tamamen ortadan kaldırılamaz. Ama görünmez kalmaları zorunlu değil.
Getirileni kaydedin. Her cevabın yanında hangi parçaların getirildiği saklanmalı. Bu tek alışkanlık, yukarıdaki üç testi sonradan yapılabilir kılar; kaydı olmayan bir başarısızlık incelenemez.
Kendi mesafe tabanınızı ölçün. Mesafe sayıları külliyatlar arasında karşılaştırılabilir değildir, bu yüzden hazır bir eşik yoktur. Kendinizinkini şöyle çıkarırsınız: külliyatınızın kesinlikle cevaplayamayacağı yirmi soru yazın ve her birinde en yakın sonucun mesafesini kaydedin. O yirmi sayının oluşturduğu bant, sizin “burada muhtemelen bir şey yok” işaretinizdir. Gerçek sorulardaki mesafeler o bandın içine düşmeye başladığında sistem size uyarı verebilir.
Kaynağı yazdırın ve yazdırdığını denetleyin. Cevabın altında hangi parçaya dayandığı görünüyorsa kullanıcı yanlış getirimi kendi gözüyle yakalayabilir. Bir adım fazlası daha ucuz: modelin gösterdiği kaynağın gerçekten getirilenlerden biri olduğunu makineyle kontrol edin.
Modele “bilmiyorsan söyle” demek yardımcı olur, yetmez. Bu talimat gerçekten işe yarıyor, ama yalnızca gelen metin apaçık ilgisizken. Yukarıdaki kalıplarda gelen metin ilgisiz görünmüyor; konuya tam oturuyor. Model, kendisine verilen şeyin en yakın olan mı yoksa doğru olan mı olduğunu ayırt edemez.
Sınırlar ve yanlış anlamalar
Daha iyi bir gömme modeli bu kalıpları bitirmez. Model kalitesi mesafeleri iyileştirir; simetriyi, sıkıştırmayı ve sonuç yok hâlinin yokluğunu değiştirmez. Bunlar yöntemin yapısında.
Getirilen parça sayısını artırmak çözüm değil. Daha çok parça, doğru olanı yakalama şansını biraz artırır ve gürültüyü kesinlikle artırır. Maliyet büyür, uzun bağlamın kalite kaybı devreye girer, ve yanlış parça hâlâ oradadır — yanına birkaç tane daha eklenmiştir.
Bu yazı çözümleri anlatmıyor. Kelime aramasıyla anlam aramasını birleştirmek, getirilenleri ikinci bir modelle yeniden sıralamak, kullanıcının sorusunu arama öncesinde yeniden yazmak — üçü de bu kalıpları hedefleyen bilinen yaklaşımlar ve her biri kendi ayrıntısını hak ediyor. Burada yalnızca neyi hedefledikleri söylendi.
Ölçmeden iyileştirilemez. “Şimdi daha iyi oldu” izlenimi bir ölçüm değil. Getirim kalitesinin kendi metrikleri var ve bir değişikliğin işe yarayıp yaramadığı ancak onlarla bilinir; bu yazı sorunun nereden geldiğini gösterir, ne kadar iyileştiğini değil.
Alakasız sonuç her zaman bu katmandan gelmez. Üç testi atlayıp doğrudan arama ayarlarıyla oynamak, en sık yapılan hata. Cevap zaten iki parçaya bölünmüşse hiçbir arama ayarı onu birleştirmez. → Belge Parçalama (Chunking) Stratejileri
Bu konuda anlaşmazlık: Benzerlik araması anahtar kelime aramasının yerine geçti mi?
Görüş A → Anlam üzerinden arama, kelime örtüşmesine dayanan aramanın kaçırdığı her şeyi buluyor; farklı sözcüklerle sorulan aynı soru artık aynı yere gidiyor. (Savunanlar: anlamsal arama tarafı) Görüş B → Tam eşleşme gerektiren sorgularda kelime araması hâlâ üstün. Ürün kodu, form numarası ve özel ad, anlamı olan değil karşılığı olan şeylerdir; anlam ölçen bir sistem onları kaçırır. (Savunanlar: kelime araması tarafı) Durum → 2026 ortası itibarıyla uzlaşma yok. Karar, sorgularınızın kaçında tam eşleşme gerektiğine bağlı ve bu ölçülebilir bir şey.
Özet
Benzerlik araması her sorguda istediğiniz sayıda parça döndürür ve sonuç yok diye bir hâli yoktur. Külliyatta cevap olmasa bile en az uzak parçalar gelir, ve çıktı iki durumda da aynı görünür. Sessizliğin kaynağı budur.
Alakasız bir sonuç gördüğünüzde önce katmanı bulun. Cevap tek bir parçada bütün duruyor mu; o parça kendi metniyle arandığında birinci sırada dönüyor mu. İkisi de evetse sorumlu aramadır, değilse parçalama ya da temsil katmanıdır.
Aramanın kendi kalıpları yapısaldır: benzerlik simetriktir ama ilgililik değildir, bu yüzden soru kendi cevabından çok başka bir soruya benzer. Parça tek noktaya sıkıştığı için tarih ve olumsuzluk gibi kararı belirleyen ayrıntılar neredeyse kaybolur. Sistem hangi sürümün güncel olduğunu bilmez ve kuruma özgü kodları kaçırır.
Bunlar bitirilemez ama görünür kılınabilir: getirileni kaydetmek, kendi mesafe tabanınızı yirmi cevapsız soruyla ölçmek, ve gösterilen kaynağın gerçekten getirilenlerden biri olduğunu denetlemek.
Sık sorulanlar
Benzerlik araması nedir?
Metinleri sayı dizilerine çevirip aralarındaki mesafeyi ölçen bir arama biçimidir. Kelime örtüşmesi yerine anlam yakınlığına bakar ve sorguya en yakın parçaları döndürür.
Neden hiç sonuç yok demiyor?
Çünkü yalnızca mesafe ölçüyor ve mesafenin doğal bir sınırı yok. İstenen sayıda parça her koşulda döner; külliyatta ilgili hiçbir şey olmasa bile en az uzak olanlar gelir.
Alakasız sonucun sebebini nasıl bulurum?
Üç adım: doğru cevabı belgede elle bulup hangi parçaya düştüğüne bakın, o parçanın metnini sorgu olarak deneyip birinci sırada dönüp dönmediğine bakın, ikisi de sorunsuzsa sorumlu aramanın kendisidir.
Getirilen parça sayısını artırmak işe yarar mı?
Sınırlı biçimde. Doğru parçayı yakalama şansı biraz artar, gürültü ve maliyet kesinlikle artar, ve yanlış parça hâlâ promptun içindedir.
Ürün kodu veya form numarası neden bulunamıyor?
Bunların anlamı değil karşılığı vardır. Anlam ölçen bir sistem, eğitiminde hiç görmediği bir kodu yakın bir başkasından ayırt edemez; bu tür sorgularda kelime eşleşmesi hâlâ üstündür.
Modele “bilmiyorsan söyle” demek yeterli mi?
Yalnızca gelen metin apaçık ilgisizse. En zararlı hatalarda gelen metin konuya tam oturur; model onun doğru mu yoksa sadece en yakın mı olduğunu ayırt edemez.