Yapay zeka destekli bilgi erişiminde anahtar kelime araması neden hâlâ önemli?
Vektör araması anlamı bulur; anahtar kelime araması ise parça ve fatura numaraları, hukuki terimler ve isimler gibi kesin ifadeleri. İş soruları ikisine de, üstüne yeniden sıralamaya ihtiyaç duyar. Türkçedeki kelime biçimleri anahtar kelime tarafını hem zorlaştırır hem önemli kılar.
veridive6 dk okuma
Bir bakım mühendisi yeni doküman asistanına “HX-4471 tork değeri” yazıyor. Bilgi erişimi adımı, benzer parçaların tork değerlerini anlatan üç pasaj getiriyor; hiçbiri HX-4471’den söz etmiyor. Ardından gelen yanıt akıcı, kaynaklı ve yanlış parça hakkında.
Modelde bir sorun yok. Sorun, RAG (erişimle zenginleştirilmiş üretim) sisteminin arama adımında: bilgi erişimi (retrieval) yalnızca vektör aramasına dayanıyor. Vektör araması anlamda iyidir, kesin ifadelerde zayıftır; iş soruları ise kesin ifadelerle doludur: parça numaraları, fatura numaraları, madde numaraları, isimler. Gerçek iş için bilgi erişimi üç şey ister: iki arama türünü birlikte kullanan hibrit arama (hybrid search), kısa listeyi sıralayacak bir model ve tarih ya da yetki gibi alaka düzeyinden bağımsız ölçütler için filtreler. Türkçede anahtar kelime tarafı ayrıca özen ister.
Vektör araması neyi iyi yapar, neyi kaçırır?
Vektör araması her pasajı ve her soruyu bir embedding’e dönüştürür: anlamca benzer metinleri birbirine yakın konumlandıran bir sayı listesi. Ardından soruya en yakın pasajları getirir. Aynı anlamı farklı kelimelerle yakalamakta iyidir: “eşim iş seyahatine benimle gelebilir mi?” sorusu, “refakat eden aile üyeleri” başlıklı bölümü bulur. Embedding modeline bağlı olarak Türkçe bir soruyu İngilizce bir pasajla da eşleştirebilir.
Kendi başına az anlam taşıyan ifadelerde ise zorlanır. Genellikle başarısız olduğu temsili sorgular:
| Sorgu | Vektör aramasının genellikle getirdiği | Neden |
|---|---|---|
| “HX-4471 tork değeri” | Benzer parçaların tork değerleri | Tek karakterle ayrışan kodlar vektör olarak neredeyse aynı görünür |
| “madde 9 fesih” | Herhangi bir sözleşmenin fesih maddeleri | Sayılar bir embedding’de çok az anlam taşır |
| “Selin Aksoy onay limiti” | Genel olarak yöneticilerin onay limitleri | Konu kelimelerinin yanında bir isim zayıf bir kanıttır |
İfadedeki küçük farkları da bulanıklaştırır: “onay alınarak” ile “onay alınmadan” birbirine çok yakın durur.
Anahtar kelime araması hâlâ neyi daha iyi yapar?
Sözcüksel arama (lexical search) da denen anahtar kelime araması, pasajları sorguyla paylaştıkları kelimelere göre puanlar. Yaygın puanlama yöntemi BM25, koleksiyonun genelinde nadir, pasajda ise sık geçen terimleri öne çıkarır. Tanımlayıcılar için tam olarak doğru davranış budur: “HX-4471” yalnızca birkaç pasajda geçer, bu yüzden o pasajlar yüksek puan alır. Anahtar kelime araması kesin ifadelerde ve alan terimlerinde (“mücbir sebep”, “force majeure”), kısaltmalarda, fatura ve sipariş numaralarında ve isimlerde de öne geçer.
Zayıf yanları vektör aramasının tam tersidir: eş anlamlıları ve farklı kelimelerle söylenmiş aynı anlamı kaçırır, metnin kullanıcıların yazdığı gibi kelimelere bölünmesine bağlıdır. “HX-4471” kodunun tek bir token olarak mı kalacağına yoksa ikiye mi bölüneceğine tokenizer (metni token’lara bölen bileşen) karar verir. Bu yüzden kodların bütün kaldığını ve “HX4471” ile “hx 4471” yazımlarıyla da eşleştiğini test edin.
Vektörler bir metnin ne anlattığını bulur. Anahtar kelimeler ne yazdığını, harfi harfine.
Hibrit arama ikisini nasıl birleştirir?
Aynı soru için iki aramayı da çalıştırın, sonra sonuç listelerini birleştirin. Yaygın iki birleştirme yöntemi var:
- Skor birleştirme: her listenin skorlarını aynı aralığa normalize edip ağırlıklı toplamını alın. Basittir ama ağırlıkların ayarlanması gerekir ve koleksiyon değiştikçe skor ölçekleri kayar.
- Sıra birleştirme (rank fusion): her pasajı her listedeki sırasına göre puanlayın. Örneğin karşılıklı sıra birleştirme (reciprocal rank fusion), her liste için bir bölü (sabit artı sıra) değerlerini toplar. Ham skorları yok saydığı için bozulması daha zordur.
Uygulamada iki iyileştirme önemlidir. Sorgu yönlendirme: parça ya da fatura numarası kalıbına uyan, yani bir tanımlayıcıya benzeyen bir sorgu önce birebir aramaya gidebilir ya da anahtar kelime tarafında daha fazla ağırlık alabilir. Meta veri filtreleri: belge türü, sahip, yürürlük tarihi, dil ve her şeyden önce yetkiler, herhangi bir sıralamadan önce iki aramanın içinde de filtre olarak uygulanır. Yetkiler asla bir sıralama sinyali değildir: kullanıcının açamayacağı bir pasaj iki listede de yer almamalıdır.
Yeniden sıralama nereye oturur?
Birleştirmeden sonra birkaç düzine pasajdan oluşan kısa bir liste alın ve her birini yeniden puanlayın; bu adıma yeniden sıralama (reranking) denir. İşi bir yeniden sıralama modeli (reranker) yapar: soruyu ve pasajı birlikte okur, birinin diğerini ne kadar iyi yanıtladığına karar verir. İki aramadan da yavaştır, bu yüzden yalnızca kısa listeyi görür. Genellikle daha isabetlidir, çünkü önceden hesaplanmış vektörleri değil, gerçek kelimeleri karşılaştırır. En üstteki birkaç pasaj dil modeline gider.
Yeniden sıralama modellerinin de kör noktaları vardır. Kullandığınız modelin birebir eşleşmeleri geri plana atmadığını (HX-4471 ile ilgili pasajı benzer bir parçayı anlatan akıcı bir metnin altına itmemeli) ve Türkçeyi de İngilizce kadar iyi işlediğini kontrol edin.
Türkçe gibi eklemeli dillerde ne değişir?
Türkçe anlamı eklerle kurar; bu yüzden tek bir kelime birçok biçimde karşımıza çıkar: “sözleşme”, metinlerde “sözleşmenin”, “sözleşmedeki” ve “sözleşmelerimizde” olarak da geçer. Ham token’lardan oluşan bir dizin bunların çoğunu kaçırır. Dilin kendisini Türkçeyi yapay zeka için zorlaştıran etkenleri anlatan not ele alıyor; bilgi erişimi için dört nokta önemli.
- Belgeleri ve sorguları aynı şekilde işleyin. Kök bulma (stemming), yani ekleri kurala göre kesmek, ya da sözlük biçimine indirgeme (lemmatization), yani kelimeyi sözlükteki biçimine döndürmek, iki tarafta da çalışmalıdır; yoksa sorgu ile dizin hiç buluşmaz.
- Ekleri gereğinden fazla kesmeyin. Agresif kurallar ilgisiz kelimeleri birleştirir ve sonuçları gürültüyle doldurur; bu yüzden metin çözümleyicileri (analyzer) gerçek sorgularla karşılaştırın.
- Kesme işaretinden sonraki ekleri ayırın. Türkçe, isimlere ve kodlara gelen ekleri kesme işaretiyle ayırır: “HX-4471’in tork değeri” ya da “Aksoy’un onay limiti” gibi. Tokenizer bu ekleri koda ya da isme yapışık bırakırsa birebir eşleşme kaybolur.
- Türkçe karakterleri sadeleştirilmiş bir alan tutun. Kullanıcılar “sözleşme” yerine “sozlesme” yazar. Duyarlılığı (recall) artırmak için metnin bu biçimde sadeleştirilmiş (ASCII folding) bir kopyasını da dizinleyin, birebir eşleşmeleri ise daha üste sıralayın.
Embedding modellerinin ve yeniden sıralama modellerinin Türkçe kalitesi de değişkendir; vektör tarafını da aynı gerçek sorgularla test edin.
Bilgi erişiminin kalitesi nasıl ölçülür?
Yanıt kalitesinden ayrı olarak. Doğru pasaj modele hiç ulaşmıyorsa hiçbir prompt yanıtı düzeltemez.
- Doğru pasajları işaretleyin: değerlendirme setindeki her soru için yanıtı içeren pasaj ya da pasajlar.
- İlk k sonuçtaki duyarlılığı ölçün (recall@k): doğru pasajlardan biri ilk k sonuç arasında mıydı? Burada k, modele gönderdiğiniz pasaj sayısıdır.
- Sırayı ölçün: ilk doğru pasaj kaçıncı sırada çıkıyor? Ortalama karşılıklı sıra (mean reciprocal rank, MRR) bunu tüm sorular için özetler.
- Sonuçları sorgu türüne göre ayırın: tanımlayıcılar, isimler, farklı kelimelerle sorulan sorular, Türkçe, İngilizce ve karışık sorgular.
- Yapılandırmaları aynı sette karşılaştırın: yalnızca vektör, yalnızca anahtar kelime, hibrit ve yeniden sıralamalı hibrit.
Çözümleyici, embedding modeli, metni parçalara bölme (chunking) yöntemi ya da yeniden sıralama modeli her değiştiğinde karşılaştırmayı yeniden çalıştırın.
Aramanın kendisi nasıl test edilir?
Arama kayıtlarınızdan elli gerçek sorgu çekin; kod, madde numarası ya da isim içerenleri işaretleyin ve her yapılandırmada doğru pasajın ilk beşe girip girmediğine bakın. Bilgi erişimini ve onu ölçen değerlendirmeyi veri ve yapay zeka altyapısı projelerinde kurarız; nerede kullanıldığını bilgi ve doküman zekası sayfası gösteriyor. Yanıtların yanlış gittiği diğer noktalar için doküman asistanlarının neden yanlış yanıt verdiğini anlatan nota bakın.
Kaynaklar
- Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (Lewis et al.) arXiv arxiv.org/abs/2005.11401
Bu notu bir yapay zeka asistanına sorun