Retrieval-Augmented Generation (RAG)

Pencerenin Ötesinde: Uzun Bağlam RAG Sistemlerinin Mühendisliği

32k'dan 1M token'ın üzerine kadar uzanan devasa bağlam pencerelerine sahip Büyük Dil Modelleri'nin (LLM) piyasaya sürülmesi, Geri Getirme Destekli Üretim'in (RAG) paradigmasını temelden değiştirdi. Daha önce ana darboğaz, sınırlı token limitlerine sığacak şekilde bağlamı küçük ve hassas tutmaktı. Bugün ise tüm belgeleri, kod tabanlarını veya konuşma geçmişlerini modele verebiliriz. Ancak, bağlama daha fazla veri dökmek otomatik olarak daha iyi yanıtlar üretmez. Aslında, bu genellikle gürültüye neden olur, gecikmeyi artırır ve maliyetleri şişirir. Bu rehber, geri getirme hassasiyetini korurken genişletilmiş pencereleri etkili bir şekilde kullanan Uzun Bağlam RAG sistemlerinin nasıl mühendislik yapılacağını inceliyor.

Geri Getirme Stratejisindeki Değişim

Geleneksel RAG, yalnızca en ilgili parçaların LLM'ye ulaşmasını sağlamak için agresif parçalama ve katı üst-K geri getirmeye dayanıyordu. Uzun bağlam yetenekleriyle birlikte, Geçimli Geri Getirme, Hassas Muhakeme yaklaşımını benimseyebiliriz.

5 küçük parça yerine, 50 ilgili paragrafı veya hatta tüm belgeleri geri getirebiliriz. LLM, ardından dikkat mekanizmasını kullanarak sorgu için gereken belirli ayrıntıları belirlemek üzere sofistike bir filtre olarak hareket eder. Bu, 100 sayfalık bir hukuki sözleşmeyi özetleme veya dağıtık bir sistemin günlük dosyalarını hata ayıklama gibi küresel anlama gerektiren görevler için özellikle etkilidir.

Mimari Düşünceler

Uzun bağlam RAG oluşturmak, üç faktörü dengelemeyi gerektirir:

  • Gecikme: Binlerce token işlenmesi zaman alır. Daha yüksek doğruluk için yapılan ödüşünmenin kullanım senaryonuz için kabul edilebilir olup olmadığını belirlemelisiniz.
  • Maliyet: Girdi token'ları çıktı token'larından daha ucuzdur, ancak devasa bağlam pencereleri yine de birikir. Uzun bağlam modeline göndermeden önce ön filtreleme yapmak için hiyerarşik geri getirme kullanın.
  • Dikkat Seyrelmesi: Modeller uzun girdileri işleyebilir, ancak ilgili bilgi çok uzun bir dizinin ortasında gömülü ise performans düşebilir ("ortada kaybolma" fenomeni).

Uygulama Örneği: Hibrit Geri Getirme

Dayanıklı bir yaklaşım, daha geniş bir aday kümesini geri getirmek için daha küçük ve hızlı bir model kullanmak, ardından bunları sentez için uzun bağlam modeline geçirmektir. Aşağıda, bu akışı gösteren LangChain kullanan bir Python parçası bulunmaktadır:


from langchain.chains import RetrievalQA
from langchain.llms import Ollama
from langchain.vectorstores import Chroma
from langchain.embeddings import OllamaEmbeddings

# Uzun bağlam yeteneğine sahip bir model başlatın
llm = Ollama(model="llama3:13b")
embeddings = OllamaEmbeddings(model="nomic-embed-text")

# Belge deposunu yükleyin
db = Chroma(embedding_function=embeddings)

# RAG'ı daha fazla parça geri getirecek şekilde yapılandırın (k=20)
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",  # Tüm geri getirilen belgeleri bağlama doldurma
    retriever=db.as_retriever(search_kwargs={"k": 20}),
    return_source_documents=True
)

# Karmaşık bir soruyla sorgulayın
result = qa_chain({"query": "Son üç sprint incelemesindeki mimari kararları özetleyin."})
print(result["result"])

"Ortada Kaybolma" İçin Optimizasyon

Yakın tarihli araştırmalar, LLM'lerin bağlamın başına ve sonuna en iyi şekilde odaklandığını göstermektedir. Uzun bağlam RAG kullanırken, geri getirilen belgeleri rastgele eklememelisiniz. Aşağıdaki stratejileri göz önünde bulundurun:

  1. Yeniden Sıralama: Geri getirilen belgeleri ilgiliyete göre yeniden sıralamak için bir çapraz kodlayıcı kullanın. En ilgili belgeleri istemin başına veya sonuna yerleştirin.
  2. Yapısal İstem: İsteminizdeki bölümleri açıkça sınırlayın. Modelin girdiyi ayrıştırmasına yardımcı olmak için ### Bağlam Belgesi 1 gibi başlıklar kullanın.
  3. Yinelemeli RAG: Son derece uzun bağlamlar için görevi parçalara ayırın. Önce LLM'nin geri getirilen belgeleri özetlemesini sağlayın, ardından özetleri bağlam olarak kullanarak son soruyu sorun.

Sonuç

Uzun Bağlam RAG, geleneksel RAG'ı değiştirmek değil, yeteneklerini genişletmekle ilgilidir. Küçük bağlam modellerinin basitçe kavrayamayacağı karmaşık, birbirine bağlı bilgiler üzerinde daha derin muhakeme yapmayı mümkün kılar. Sağlam geri getirme stratejilerini dikkatli istem mühendisliğiyle birleştirerek, geliştiriciler yalnızca doğru olan değil, aynı zamanda gerçek dünya kurumsal verilerinin karmaşıklığını ele alabilecek yapay zeka sistemleri inşa edebilir. Bağlam pencereleri büyümeye devam ettikçe, odak noktası doğru veriyi bulmaktan onu etkili bir şekilde muhakeme etmeye kayacaktır.

Share: