3 puan yazan GN⁺ 2024-09-22 | 1 yorum | WhatsApp'ta paylaş

Contextual Retrieval'e Giriş

  • Bir yapay zeka modelinin belirli bir bağlamda faydalı olabilmesi için arka plan bilgisine ihtiyacı vardır
  • Müşteri destek chatbot'larının belirli bir işletmeye dair bilgiye, hukuki analiz botlarının ise geçmiş vakalara dair kapsamlı bilgiye ihtiyacı vardır
  • 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ı ortadan kaldırdığı için ilgili bilgileri bulup getirmekte çoğu zaman başarısız olur

Contextual Retrieval Yöntemi

  • Contextual Retrieval, RAG'in getirme aşamasını büyük ölçüde iyileştiren bir yöntemdir
  • Contextual Embeddings ve Contextual BM25 adlı iki alt teknoloji kullanır
  • Başarısız arama sayısını %49 azaltır ve yeniden sıralama ile birleştirildiğinde bu oran %67'ye kadar çıkabilir
  • Claude kullanılarak Contextual Retrieval çözümü kolayca devreye alınabilir

Sadece Daha Uzun Prompt Kullanmak

  • Bilgi tabanı 200.000 token'ın altındaysa, tüm bilgi tabanını modele vermek daha iyi bir yöntem olabilir
  • Claude'un prompt caching özelliği kullanılırsa bu yaklaşım daha hızlı ve daha maliyet etkindir
  • Bilgi tabanı büyüdükçe daha ölçeklenebilir bir çözüme ihtiyaç duyulur

RAG'in Temel Kavramı

  • RAG, büyük bilgi tabanlarını işlemek için kullanılır
  • Bilgi tabanı küçük metin parçalarına bölünür ve anlamı kodlamak için embedding modeli kullanılır
  • Veriler, anlamsal benzerliğe göre aranmak üzere bir vektör veritabanında saklanır
  • BM25, tam kelime veya ifade eşleşmelerini bulmada etkilidir

Geleneksel RAG'in Sınırları

  • Belgeleri küçük parçalara ayırma sürecinde bağlam bozulabilir
  • Örneğin, belirli bir şirketin finansal bilgilerini arayan bir soru için yeterli bağlam içermeyen parçalar döndürülebilir

Contextual Retrieval Uygulaması

  • Her parçaya açıklayıcı bağlam eklenerek embedding ve BM25 indeksleri oluşturulur
  • Her parça için kısa ve öz bağlam üretmek üzere Claude kullanılır
  • Maliyeti azaltmak için prompt caching kullanılabilir

Performans İyileştirmesi

  • Contextual Embeddings, arama başarısızlık oranını %35 azaltır
  • Contextual Embeddings ile Contextual BM25 birlikte kullanıldığında arama başarısızlık oranı %49 azalır

Uygulama Sırasında Dikkat Edilecekler

  • Belgelerin nasıl parçalara ayrılacağı, embedding modelinin seçimi ve özel bağlamlandırma prompt'ları gibi noktalar dikkate alınmalıdır
  • Daha fazla parça eklemek, ilgili bilgilerin dahil edilme olasılığını artırır

Yeniden Sıralama ile Performans Artışı

  • Yeniden sıralama, yalnızca en ilgili parçaları modele ileterek yanıt kalitesini artırır
  • Yeniden sıralanmış Contextual Embedding ve Contextual BM25, arama başarısızlık oranını %67 azaltır

Sonuç

  • Embeddings ile BM25'i birleştirmek daha iyi sonuçlar sağlayabilir
  • Voyage ve Gemini embedding'leri en etkili seçeneklerdir
  • Modele en iyi sonucu vermek için ilk 20 parçanın iletilmesi en etkilidir
  • Bağlam eklemek arama doğruluğunu önemli ölçüde artırır
  • Yeniden sıralama performansı daha da iyileştirir

GN⁺ Özeti

  • Contextual Retrieval, yapay zeka modellerinin arama doğruluğunu büyük ölçüde artırabilecek bir yöntemdir
  • Özellikle büyük bilgi tabanlarıyla çalışırken faydalıdır
  • Claude'un prompt caching özelliği kullanılarak maliyet etkin biçimde uygulanabilir
  • Benzer işlevlere sahip diğer projeler arasında OpenAI'nin GPT-3'ü ve Google'ın BERT'i bulunur

1 yorum

 
GN⁺ 2024-09-22
Hacker News görüşleri
  • Birinci görüş

    • Devlet kurumları için kurumsal RAG kurma deneyimi paylaşılıyor
    • RAGAS metrikleriyle yapılan A/B test sonuçları:
      • Hibrit arama (semantik + vektör) ve LLM tabanlı yeniden sıralama, sentetik değerlendirme sorularında büyük bir değişiklik yaratmadı
      • HyDE, sentetik değerlendirme sorularında yanıt ve arama kalitesini ciddi biçimde düşürdü
    • Hibrit arama her zaman faydalı, ancak tek bir yöntem her zaman kazanmıyor
    • Azure AI Search'ün semantik araması, vektör benzerliğiyle birlikte yeterince etkili
    • Farklı yöntemleri test etmek gerekiyor
    • Sonraki denenecekler:
      • RAPTOR
      • SelfRAG
      • Agentic RAG
      • Sorgu iyileştirme (genişletme ve alt sorgular)
      • GraphRAG
    • Öğrenilenler:
      • Her zaman bir temel çizgi ve deneyler kullanarak sıfır hipotezini çürütmeye çalışmak gerekir
      • Üç tür değerlendirme soru/yanıtı kullanın: uzmanların yazdıkları, gerçek kullanıcı soruları, sentetik sorular
  • İkinci görüş

    • Prompt caching kullanan yaklaşım beğeniliyor
    • Caching sayesinde prompt maliyeti 1/10'a düşüyor
    • Caching ile sağlanan maliyet tasarrufu, çeşitli hileleri mümkün kılıyor
    • Bağlamsal arama ve prompt caching hakkında notlar paylaşılıyor
  • Üçüncü görüş

    • RAG sonuçlarını iyileştirmek için LLM kullanarak temel chunk'ları genişletme yaklaşımı yaygın
    • HyDE ile sorgu genişletme her zaman iyileştirme sağlamıyor
    • Anthropic'in asıl yeniliği, prompt caching eklemesi
    • Prompt caching, uzun belgeleri bağlam olarak verip maliyeti azaltıyor
    • Cohere API'den oldukça memnun kalındığı belirtiliyor
  • Dördüncü görüş

    • Belgeleri h1, h2, h3 başlıklarına göre chunk'lara bölüp, chunk başına başlıkları ekleme yöntemi kullanılıyor
    • Örnek:
      • Eski chunk: "Yetişkinler için genel doz, günde 3 kez 200 mg tablet veya 1~2 kapsüldür"
      • Yeni chunk: "# Ateş ## Tedavi --- Yetişkinler için genel doz, günde 3 kez 200 mg tablet veya 1~2 kapsüldür"
    • Bu yöntem, LLM olmadan da iyi çalışıyor
  • Beşinci görüş

    • Bu tekniğe karşı bir duruş sergileniyor
    • Vektör embedding'leri, ilk satır sonu metin bloğuna aşırı odaklanabiliyor
    • IDF araması bunu bir ölçüde aşıyor ama yeterli değil
    • "semantic boost" kullanılarak embedding'ler belgenin başlığına, özetine vb. kaydırılabiliyor
    • Trieve API'nin "semantic boost" açıklaması paylaşılıyor
  • Altıncı görüş

    • "linked list" stratejisi kullanılarak chunk'ların referans verilen öğelere birden çok işaretçi taşıması sağlanıyor
    • Her yorumun özgün gönderiye bir işaretçi olduğu bir yöntemle açıklanıyor
    • Bu tekniğe dair bir örnek paylaşılıyor
  • Yedinci görüş

    • 200k token kullanarak küçük veri kümelerinde en iyi yanıtların alındığı iddiası, kişisel deneyimle uyuşmuyor
    • Prompt büyüdükçe çıktılar tutarsızlaşıyor ve talimatları izlemek zorlaşıyor
    • Başkalarının da benzer deneyimler yaşayıp yaşamadığı ve bunun nasıl önlenebileceği merak ediliyor
  • Sekizinci görüş

    • RAG ile bilgi aramak yerine kural arama sorunuyla karşılaşılıyor
    • Belirli bir kuralın uygulanabilir olup olmadığını belirlemek için küçük bir sınıflandırıcı eğitme yaklaşımı öneriliyor
    • Örnek: çok kullanıcılı bir dungeon oyununda belirli bir kuralın geçerli olup olmadığını belirleme yöntemi
    • Bir kuralın uygulanıp uygulanmadığını belirlemek daha soyut ve daha zor bir problem
    • Bu sorunu çözmenin bir yolu aranıyor
  • Dokuzuncu görüş

    • Bilgi tabanı 200.000 token'dan (yaklaşık 500 sayfa) küçükse
    • Anthropic'in tokenizer'ını yayımlaması umuluyor
  • Onuncu görüş

    • Yapay zeka sektörünün yeniden TF-IDF'e döneceği günü bekliyor