Retrieval-Augmented Generation (RAG)

Hibrit Arama Uygulama: Kurumsal RAG Doğruluğu İçin Anahtar Kelime ve Vektör Ağırlıklarının Dengelenmesi

Hızla gelişen Geriye Döngülü Üretim (RAG) ortamında, geliştiricilerin en sık yaptığı hatalardan biri yalnızca yoğun vektör gömme yöntemlerine güvenmektir. Vektör araması anlamsal anlamada mükemmel olsa da, tam anahtar kelime eşleşmesi, özel kısaltmalar ve hassas sayısal sorgular konusunda zorlanabilir. Hassasiyetin hayati önem taşıdığı kurumsal uygulamalarda, saf anlamsal arama sıklıkla yetersiz kalır. Çözüm, vektör aramasının anlamsal gücünü anahtar kelime aramasının söleksel hassasiyetiyle birleştiren sofistike bir yaklaşım olan hibrit aramada yatmaktadır.

Saf Vektör Aramasının Sınırlamaları

Hibrit aramanın neden kritik olduğunu anlamak için, öncelikle yalnızca vektöre dayalı yaklaşımların sınırlamalarını kabul etmeliyiz. Vektör gömmeleri, metni benzer anlamların bir araya geldiği yüksek boyutlu bir alana haritalar. Ancak bu yöntemin kör noktaları vardır. Örneğin, bir kullanıcı "2023 yılının 3. çeyrek geliri"ni arattığında, vektör veritabanı, belirli çeyrekten bahsedilmeseven bile "2023 yılının son çeyreğinde finansal performans" hakkında sonuçlar döndürebilir. Tersine, bir kullanıcı "SKU-8842-X" gibi spesifik bir iç kod arattığında, vektör araması tamamen başarısız olabilir çünkü bu dizinin anlamsal önemi, bir tanımlayıcı olarak kullanım değerine kıyasla ihmal edilebilir düzeydedir.

Kurumsal veriler genellikle yapılandırılmamış anlatı metinleri ile yapılandırılmış, hassas meta verilerin bir karışımından oluşur. Güçlü bir RAG sistemi her ikisini de ele alabilmelidir. Seyrek anahtar kelime aramasını (BM25) yoğun vektör aramasıyla entegre ederek, hem "niyeti" hem de "tam eşleşmeyi" yakalayan bir alma hattı oluştururuz.

Ağırlık Dengesi Stratejileri

Hibrit aramadaki temel zorluk, vektör puanı ile anahtar kelime puanı arasındaki optimal ağırlığı belirlemektir. Her şeye uyan tek bir oran yoktur; bu, veri alanınıza büyük ölçüde bağlıdır. Hukuki bir veritabanı, tam terminolojiye (daha yüksek anahtar kelime ağırlığı) öncelik verebilirken, yaratıcı yazım asistanı tematik uygunluğa (daha yüksek vektör ağırlığı) öncelik verebilir.

Yaygın stratejiler şunları içerir:

  1. Yankılı Sıra Birleştirme (RRF): Bu birleştirme yöntemi, açık normalizasyona gerek duymadan farklı arama motorlarından gelen sıralamaları birleştirir. Dayanıklıdır ve yaygın olarak kullanılır.
  2. Doğrusal Kombinasyon: Her iki puanı da 0-1 aralığına normalleştirmek ve ağırlıklı bir toplam uygulamak: S_final = α * S_vector + (1-α) * S_keyword.
  3. Bursty Gradient Descent: Sorgu karmaşıklığına göre ağırlıkları dinamik olarak ayarlayan gelişmiş bir teknik.

Python ile Pratik Uygulama

Kurumsal ortamlarda hibrit arama için standart olan Elasticsearch kullanarak pratik bir örneğe bakalım. Aşağıdaki Python kod parçacığı, BM25 ve vektör aramasını dengeleyen hibrit bir sorgunun nasıl çalıştırılacağını göstermektedir.

from elasticsearch import Elasticsearch

es = Elasticsearch(["http://localhost:9200"])

def hybrid_search(es_client, index_name, query_text, k=10):
    """
    Seyrek (BM25) ve yoğun (vektör) sorguları birleştiren hibrit bir arama gerçekleştirir.
    """
    # Hibrit sorgu yapısını tanımlayın
    hybrid_query = {
        "query": {
            "hybrid": {
                "queries": [
                    {
                        "sparse": {
                            "query_string": query_text,  # Anahtar kelime eşleşmesini işler
                            "field": "content_vector"    # Eşlemenize göre ayarlayın
                        }
                    },
                    {
                        "dense_vector": {
                            "query_vector": generate_embedding(query_text), # Gömme fonksiyonunuz
                            "k": 100,
                            "num_candidates": 100,
                            "field": "embedding"
                        }
                    }
                ],
                # Alpha değeri iki sinyali dengeler.
                # 0.5 yaygın bir başlangıç noktasıdır.
                "alpha": 0.5 
            }
        },
        "size": k
    }

    response = es_client.search(index=index_name, body=hybrid_query)
    return response["hits"]["hits"]

# Kullanım
results = hybrid_search(es, "enterprise_docs", "Q3 finansal rapor tutarsızlıkları")

Bu örnekte, alpha parametresi hayati öneme sahiptir. Kullanıcılarınız sıklıkla spesifik ürün kimliklerini arıyorsa, seyrek sorgunun ağırlığını artırın. Kavramsal açıklamalar arıyorlarsa, yoğun vektör sorgusuna doğru eğilin.

Optimizasyon ve İnce Ayar

Hibrit arama uygulamak, ayarla-unut işi değildir. Sürekli değerlendirme gerektirir. İlgili belgelerle etiketlenmiş, ayrılmış bir test sorgu kümesi kullanın. Sıralama kalitesini değerlendirmek için MRR (Ortalama Ters Sıra) ve NDCG (Normalleştirilmiş İndirimli Birikimli Kazanç) gibi metrikleri ölçün. Hassasiyet düşerse, alpha ağırlığını ayarlayın veya spesifik meta veri alanlarına (örneğin, gövdedeki eşleşmelerden daha yüksek bir şekilde belge başlığındaki eşleşmelere) güçlendirme uygulayın.

Sonuç

Kurumsal düzeyde RAG uygulamaları için hibrit arama artık isteğe bağlı değil, zorunludur. Anahtar kelime hassasiyetini anlamsal anlayışla dengeleyerek geliştiriciler hem doğru hem de sağlam sistemler oluşturabilirler. Dengeli bir yaklaşımla başlayın, alma hattınızı titizlikle test edin ve spesifik veri özelliklerinize uyacak şekilde ağırlıkları iteratif olarak ince ayarlayın. Sonuç, kullanıcıların neyi kastettiğini ve tam olarak neyi sorduğunu gerçekten anlayan bir AI sistemi olacaktır.

Share: