Retrieval-Augmented Generation (RAG)

RAG Doğruluğunu Artırma: Sorgu Genişletme Tekniklerine Derin Bir Bakış

Retrieval-Augmented Generation (RAG), üretim düzeyinde Büyük Dil Modelleri (LLM) uygulamaları oluşturmak için standart mimari haline gelmiştir. Jeneratif modelleri harici bilgi tabanlarına dayayarak, kuruluşlar halüsinasyonları azaltabilir ve alıntı sunabilir. Ancak kritik bir darboğaz hala devam etmektedir: geri çağırma adımının kalitesi. İlk sorgu, depolanan belgelerin anlamsal anlamıyla eşleşmezse, en güçlü LLM bile kötü sonuçlar üretecektir.

Sorgu Genişletme devreye girer. Bu teknik, kullanıcının seyrek ve genellikle belirsiz girdisini vektör veritabanına göndermeden önce daha zengin ve kapsamlı bir temsile dönüştürmeyi içerir. Sorguyu genişleterek, ilgili bağlam bulma olasılığını artırırız ve böylece jenerasyon aşamasının genel kalitesini iyileştiririz.

Neden Basit Vektör Araması Başarısız Olur?

Kullanıcının şu soruyu sorduğunu düşünün: "Dizüstü bilgisayarım açılmıyor." Naif bir anlamsal arama, bu kelimeleri veya yakın vektör komşularını içeren belgeleri arayabilir. Ancak, bilgi tabanınızdaki ilgili sorun giderme kılavuzunun başlığı şunlar olabilir: "Cihaz Açılış Hatasında Güç Sorunlarının Sorun Giderilmesi".

Bu senaryoda, kullanıcının gayri resmi sorgusu ile resmi belge başlığı arasındaki leksikal ve anlamsal boşluk, geri çağırma başarısızlığına neden olur. Sorgu genişletme, her biri farklı yönleri veya eş anlamlıları vurgulayan sorgunun birden fazla versiyonunu oluşturarak bu boşluğu kapatır.

Yaygın Sorgu Genişletme Stratejileri

Bir RAG hattında sorgu genişletme uygulamak için üç temel yöntem vardır:

1. Çoklu-Vektör Genişletme (RQ-RAG)

Bu yaklaşım, tek bir sorguyu birden fazla anlamsal vektöre ayırmak için özel bir model kullanır. Her vektör, kullanıcının niyetinin farklı bir perspektifini yakalar. Arama yapılırken sistem, genişletilen tüm vektörler için benzerlik araması yapar ve sonuçları birleştirir.

2. LLM Tabanlı Sentetik Genişletme

Burada, bir LLM, orijinal sorguyu yeniden yazmak üzere istem edilir. Eş anlamlılar, ilgili sorular veya daha geniş bir ifade üretebilir. Bu son derece esnektir ancak gecikme ve maliyet getirir.

3. Anahtar Kelime ve Tireli Genişletme

Dense vektör aramasını, sparse leksikal arama (BM25 gibi) ile birleştirir. Sorgudan anahtar kelimeler çıkararak ve bunları vektör temsiliyle birlikte arayarak, anlamsal aramanın kaçırabileceği tam eşleşmeleri yakalarsınız.

LLM Tabanlı Sorgu Genişletme Uygulama

Aşağıda, birden fazla sorgu varyasyonu oluşturmak için LangChain ve bir LLM kullanan pratik bir Python örneği bulunmaktadır. Bu teknik genellikle "HyDE" (Hipotetik Belge Gömmeleri) veya basitçe çoklu sorgu geri çağırma olarak adlandırılır.

from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

# İlgili sorgular oluşturmak için istem şablonunu tanımlayın
prompt_template = """Arama sonuçlarını iyileştirmekle görevli bir AI asistanısınız. 
Aşağıdaki kullanıcı sorgusunu vererek, daha ilgili belgeleri alabilecek 3 farklı varyasyon oluşturun. 
Eş anlamlılara, ilgili teknik terimlere ve farklı ifade biçimlerine odaklanın.

Kullanıcı Sorgusu: "{query}"

Oluşturulan Varyasyonlar:
1.
2.
3.
"""

llm_chain = LLMChain(
    llm=OpenAI(temperature=0), 
    prompt=PromptTemplate(
        input_variables=["query"], 
        template=prompt_template
    )
)

# Örnek kullanım
original_query = "Python'da veritabanı bağlantısı zaman aşımını nasıl düzeltirim?"
response = llm_chain.run(original_query)

# Gerçek bir hatta, yanıtı bir dize listesine ayrıştırmalı
# ve bu dizeleri vektör mağazası geri çağırıcınıza geçirmelisiniz.
print(response)

En İyi Uygulamalar ve Ödünler

Sorgu genişletme, geri çağırma oranını önemli ölçüde iyileştirirken, bazı ödünler gerektirir. Gecikme, LLM'ye ek API çağrıları yapmanız ve birden fazla veritabanı araması gerçekleştirmeniz nedeniyle artar. Maliyet, daha yüksek token tüketimi nedeniyle de yükselir.

Bu sorunları azaltmak için aşağıdaki en iyi uygulamaları göz önünde bulundurun:

  • Önbellekleme: Yaygın arama terimleri için gereksiz hesaplamalardan kaçınmak üzere genişletilmiş sorguları önbelleğe alın.
  • Sonuç Yeniden Sıralama: Nihai bağlamın son derece ilgili olduğundan emin olmak için tüm genişletilmiş sorgulardan gelen en iyi K sonuç üzerinde bir çapraz-encoder yeniden sıralayıcı kullanın.
  • Melez Arama: Hem anlamsal niyeti hem de tam terminolojiyi yakalamak için sorgu genişletmeyi BM25 anahtar kelime eşleşmesi ile birleştirin.

Sonuç

Sorgu genişletme sadece isteğe bağlı bir özellik değil; sağlam RAG sistemlerinin temel bir bileşenidir. Kullanıcı sorgularının genellikle seyrek ve belirsiz olduğunu kabul ederek, geliştiriciler insan niyeti ile makine geri çağırması arasındaki boşluğu kapatmak için genişletme stratejileri uygulayabilir. İster çoklu-vektör ayrıştırma ister LLM destekli sentetik sorgular seçin, amaç aynı kalır: LLM'ye doğru, yardımcı ve dayanaklı yanıtlar üretmesi için gereken hassas bağlamı sağlamak.

RAG mimarileri gelişirken, dinamik sorgu genişletme entegrasyonu, üretim düzeyindeki uygulamaları deneysel prototiplerden ayıracaktır. Basit başlayın, geri çağırma metriklerinizi ölçün ve iterasyon yapın.

Share: