- Bir yapay zeka modelinin belirli bir bağlamda faydalı olabilmesi için arka plan bilgisine erişmesi gerekir
- Geliştiriciler genellikle yapay zeka modelinin bilgisini geliştirmek için Retrieval-Augmented Generation (RAG) kullanır
- Geleneksel RAG çözümleri, bilgiyi kodlarken bağlamı kaldırdığı için ilgili bilgiyi çoğu zaman geri getiremez
- Contextual Retrieval, RAG'in arama aşamasını büyük ölçüde iyileştiren bir yöntemdir ve Contextual Embeddings ile Contextual BM25 adlı iki alt teknik kullanır
- Bu yöntem arama başarısızlık oranını %49 azaltabilir; yeniden sıralama ile birleştirildiğinde bu oran %67'ye kadar çıkabilir
- Geliştiriciler Claude ile kendi Contextual Retrieval çözümlerini kolayca dağıtabilir
Uzun prompt kullanımı hakkında notlar
- Bilgi tabanı 200.000 token'dan küçükse, tüm bilgi tabanı modele verilen prompt'un içine eklenebilir
- Anthropic kısa süre önce Claude için prompt caching'i kullanıma sundu; bu da bu yaklaşımı çok daha hızlı ve maliyet açısından verimli hale getiriyor
- Knowledge Base büyüdükçe daha ölçeklenebilir bir çözüme ihtiyaç duyulur; bu noktada Contextual Retrieval gerekir
RAG temelleri: büyük bilgi tabanlarına ölçeklenme
- Bağlam penceresine sığmayan daha büyük bilgi tabanları için yaygın çözüm RAG'dir
- RAG, bilgi tabanını daha küçük parçalara ayırır, bunları vektör embedding'lerine dönüştürür ve ardından anlamsal benzerlik üzerinden aranabilen bir vektör veritabanında saklar
- Embedding modelleri anlamsal ilişkileri yakalamada çok başarılıdır, ancak önemli birebir eşleşmeleri kaçırabilir
- BM25, tam kelime veya ifade eşleşmelerini bulmak için sözcüksel eşleştirme kullanan bir sıralama fonksiyonudur; özellikle benzersiz tanımlayıcılar veya teknik terimler içeren sorgularda etkilidir
- RAG çözümleri, embedding ve BM25 tekniklerini aşağıdaki adımlarla birleştirerek en uygun parçaları daha doğru biçimde geri getirebilir:
- Bilgi tabanını (belgelerin "corpus"unu) genellikle birkaç yüz token'dan kısa daha küçük metin parçalarına ayırma
- Bu parçalar için TF-IDF kodlamaları ve anlamsal embedding'ler üretme
- BM25 kullanarak tam eşleşmeye dayalı en iyi parçaları bulma
- Embedding kullanarak anlamsal benzerliğe dayalı en iyi parçaları bulma
- Sıralama birleştirme teknikleriyle (3) ve (4)'ün sonuçlarını birleştirip yinelenenleri kaldırma
- Yanıt üretmek için en iyi K parçayı prompt'a ekleme
Contextual Retrieval'e giriş
- Geleneksel RAG'de belgeler daha küçük parçalara bölündüğü için tek tek parçalar yeterli bağlamdan yoksun kalabilir
- Contextual Retrieval bu sorunu, her parçanın önüne parçaya özel açıklayıcı bir bağlam ekleyerek çözer
- Claude, tüm belgenin bağlamını kullanarak parçayı açıklayan kısa bir parçaya özel bağlam üretmesini isteyen bir prompt ile Contextual Retrieval uygulamasını destekler
- Contextual Retrieval, prompt caching sayesinde Claude ile düşük maliyetle kullanılabilir
Performans iyileştirmeleri
- Contextual Embeddings, ilk 20 parçada arama başarısızlık oranını %35 azaltır (%5,7 → %3,7)
- Contextual Embeddings ile Contextual BM25 birlikte kullanıldığında başarısızlık oranı %49 azalır (%5,7 → %2,9)
Uygulama sırasında dikkat edilmesi gerekenler
- Belgelerin parçalara nasıl bölüneceğini değerlendirin
- Contextual Retrieval tüm embedding modellerinde performansı artırır, ancak bazı modeller bundan daha fazla fayda sağlayabilir
- Genel amaçlı prompt'lar iyi çalışsa da belirli alanlara veya kullanım senaryolarına göre uyarlanmış prompt'larla daha iyi sonuçlar alınabilir
- Bağlam penceresine daha fazla parça eklemek, ilgili bilgiyi içerme olasılığını artırır
- Her zaman değerlendirme çalıştırın; bağlamsallaştırılmış parçaları iletmek ve bağlam ile parçaları birbirinden ayırmak yanıt üretimini iyileştirebilir
Yeniden sıralama (Reranking) ile ek performans artışı
- Yeniden sıralama, yalnızca en ilgili parçaların modele iletilmesini sağlayan yaygın bir filtreleme tekniğidir
- İlk arama yapılarak potansiyel olarak ilgili en iyi parçalar alınır
- İlk N parça ile kullanıcı sorgusu yeniden sıralama modeline gönderilir
- Yeniden sıralama modeli, her parçayı prompt ile ilgisi ve önemine göre puanlar; ardından en iyi K parça seçilir
- En iyi K parça bağlam olarak modele verilerek nihai sonuç üretilir
- Yeniden sıralanmış Contextual Embedding ve Contextual BM25, ilk 20 parçada arama başarısızlık oranını %67 azaltır (%5,7 → %1,9)
- Maliyet ve gecikme süresi değerlendirmeleri
- Yeniden sıralama, özellikle çok sayıda parça yeniden sıralandığında gecikme süresi ve maliyet üzerinde etkili olabilir
- Daha iyi performans için daha fazla parçayı yeniden sıralamak ile daha düşük gecikme ve maliyet için daha az parça yeniden sıralamak arasında bir ödünleşim vardır
Sonuç
- Yukarıda açıklanan tüm tekniklerin çeşitli kombinasyonlarını (embedding modeli, BM25 kullanımı, bağlamsal arama kullanımı, yeniden sıralama kullanımı, getirilen en iyi K sonucun toplam sayısı) farklı veri kümesi türlerinde karşılaştıran çok sayıda test yapıldı
- Sonuçlar şöyle:
- Embedding + BM25, tek başına embedding'den daha iyidir
- Test edilen embedding'ler arasında en iyi sonuçları Voyage ve Gemini verdi
- Modele ilk 20 parçayı vermek, yalnızca ilk 10 veya 5 parçayı vermekten daha etkilidir
- Parçalara bağlam eklemek, arama doğruluğunu önemli ölçüde artırır
- Yeniden sıralama, yeniden sıralama yapılmamasından daha iyidir
- Tüm bu kazanımlar birikimlidir: performans artışını en üst düzeye çıkarmak için bağlamsal BM25 ile yeniden sıralama adımından geçmiş bağlamsal embedding'leri (Voyage veya Gemini'ninkileri) birleştirip prompt'a 20 parça ekleyebilirsiniz
- Knowledge Base ile çalışan tüm geliştiricilerin, sunulan cookbook'u kullanarak bu yaklaşımı denemesi ve yeni performans seviyelerine ulaşması öneriliyor
Henüz yorum yok.