RAG Uygulamaları Nasıl İyileştirilir?

Cahit Barkin Ozer
7 min readApr 22, 2024

RAG (Retrieval Augmented Generation) projenizin cevap kalitesini nasıl arttırabileceğinizi konuşacağız.

English:

Almayla Artırılmış Üretimin (RAG) arkasındaki konsept LLM’leri gerçek bilgilerle temellendirmedir. RAG’de en uygun metin bölümleri bulunur, bu metin bölümleri LLM’e beslenen orijinal sorguya entegre edilir. Bu, LLM’in bağlamsal bilgilere erişimini sağlayarak doğru yanıtlar oluşturulmasına yardımcı olur. [1]

RAG Uygulamalarının Hata Noktaları

RAG Uygulamalarında Hata Alınan Noktalar [2]

Yukarıdaki görsel RAG yapınızda gerçekleşebilecek hata noktalarını gösterir. Bunları bilmek sisteminizin nerede çalışmadığını anlamanızı sağlar.

Sisteminizin hatasının ne olduğunu bilmiyorsanız kullanıcı sorgusunu, getirilen parçaları ve alınan cevabı loglayın böylece sorunun hangi kısımda olduğunu daha iyi bulabilirsiniz. RAG uygulamanızı test ederken, sorgu ve dokümanın uzunluğunun ve dilinin farklı kombinasyonlarını kullanım alanızla alakalı olacak şekilde test edebilirsiniz.

Aşağıda bu hataları detaylıca inceleyelim:

Kayıp İçerik (Missing Content)

Mevcut belgeler kullanılarak çözülemeyen bir sorunun sorulması sırasında başarısızlık meydana gelebilir. Olumlu senaryoda, RAG sistemi “Üzgünüm, bilmiyorum” gibi bir mesajla yanıt verecektir. Ancak soruların içerikle ilgili olduğu ancak belirli yanıtların bulunmadığı durumlarda sistem, yanıt verme konusunda yanılgıya düşebilir.[2]

Hatalı En Alakalı Sıralama (Missed Top Ranked)

Belge sorunun cevabını içeriyor ancak kullanıcıya sunulabilecek kadar yüksek bir sıralamaya sahip değil. Teorik olarak, tüm belgeler sıralanır ve daha sonraki işlemler için dikkate alınır. Ancak pratikte yalnızca en üstteki K belgeleri döndürülür; burada K değeri performans ölçümlerine göre seçilir.[2]

Bağlamda Bulunmama (Not In Context)

Yanıtı içeren belgeler veritabanından başarıyla alındığında ancak yanıt oluşturmak için kullanılan bağlama dahil edilmediğinde bu durum gerçekleşir. Veri tabanından birden fazla belge alındığında ve cevabın çıkarılması için bir birleştirme işlemi uygulandığında bu durum ortaya çıkmaktadır.[2]

Hatalı Format (Wrong Format)

Bu durumda soru, bilgilerin tablo veya liste gibi belirli bir formatta çıkarılmasını gerektiriyordiğini ancak LLM bu talimatı göz ardı ettiğini gösterir.[2]

Yanlış Özgüllük (Incorrect Specificity)

Cevap bir yanıt içeriyor ancak gerekli spesifiklikten yoksun veya aşırı spesifik olduğundan kullanıcının ihtiyaçlarını karşılayamıyor. Bu durum, Almayla Artırılmış Üretim (RAG) sisteminin tasarımcılarının, öğrencilere eğitim içeriği sağlamak gibi belirli bir soru için önceden belirlenmiş bir sonuca sahip olduklarında ortaya çıkar. Bu gibi durumlarda cevap yalnızca yanıtı değil aynı zamanda belirli eğitim materyallerini de içermelidir. Kullanıcılar bir soruyu nasıl ifade edecekleri konusunda emin olmadıklarında ve aşırı genel sorgular sağladıklarında da hatalı özgüllük ortaya çıkabilir.[2]

Çıkarılmamış (Not Extracted)

Bu senaryoda yanıt sağlanan bağlam dahilindedir ancak büyük dil modeli onu doğru bir şekilde çıkarmakta başarısız olur. Bu genellikle bağlamda aşırı gürültü veya çelişkili bilgiler olduğunda meydana gelir.[2]

Eksik (Incomplete)

Eksik yanıtlar mutlaka yanlış değildir ancak bağlamda mevcut olmasına ve çıkarılmış olmasına rağmen bazı bilgilerden yoksundur. Örneğin, “A, B ve C belgelerinde ele alınan kilit noktalar nelerdir?” gibi bir soruyu düşünün. Kapsamlı bir yaklaşım sağlamak amacıyla bu soruları her belge için ayrı ayrı sormak daha etkili olacaktır. Bu senaryonun LlamaIndex’in Agentic RAG adlı yaklaşımıyla çözüldüğünü söyleyebiliriz. Agentic RAG, daha yüksek seviyeli ajanın orkestre ettiği doküman başına daha düşük seviyeli ajan araçlarını kullanarak bu sorunu çözebilmiştir.[2]

RAG Uygulamalarını Geliştirme Yöntemleri

  1. Dizin Oluşturma Adımında Veri Kalitesinin Artırılması

Metinlerinizdeki metinle alakasız kısımları kaldırın. Metininizde temel doğal dil işlemede veri hazırlama yöntemlerini uygulayın örneğin metininizdeki özel karakterlerin doğru gösterildiğinden emin olun. Metindeki bilgileri gelecek sorulara uygun olacak şekilde değiştirin, örneğin başlıkları sorular ile değiştirebilirsiniz. Verimli ve hedefe yönelik erişimi geliştirmek için meta veriler ekleyin, örneğin matematik problemlerini o problemde kullanılan kavramlar ve ve problemin seviyeleri gibi meta verilerle etiketleyebilirsiniz. Veya dokümanın ismi ve parça numarasını ekleyebilirsiniz böylece son aşamada LLM parçalardan daha iyi anlam çıkarabilir. [1][3]

2. Parça (Chunk) Optimizasyonu

Gereksinimlerinize göre parça (chunk) ve örtüşen kısım (overlap) büyüklüğünü değiştirip denemeler yapın (parça için 1000 ve örtüşen kısım için 200 vermek iyi bir orandır ve bu değerlerle başlayabilirsiniz).Örneğin özetleme işlemlerinde daha büyük parçalar kullanılırken kod referansları için daha küçük parçalar tercih edilir. Çeşitli yöntemler için farklı parça optimizasyon yaklaşımlarını deneyebilirsiniz. Örneğin kod parçaları metinler gibi parçalara ayrılmaz onun yerine o programlama diline özgü parçalayıcılar tercih edilir (Langchain’in text splitter’ları bulunmakta).[1][3]

3. Gelişmiş RAG Yöntemlerinin Kullanılması

RAG’ler çeşitli gelişmiş yöntemler uygulanarak geliştirilmektedirler. Bunlardan bazıları kullanıcı sorgularının dokümanlardaki formata dönüştürmektir. Daha iyi erişim için varsayımsal belgeler (hypothetical documents) oluşturmak amacıyla Query2Doc veya HyDE gibi tekniklerden de yararlanılabilir. Örneğin bir kullanıcının sorgusuyla ilgili varsayımsal kod belgeleri oluşturulabilir.[1]

Aşağıda bu gelişmiş yöntemlerden bazıları bulunmaktadır[4]:

3.1 Sorgu Dönüşümleri (Query Transformations)

Sorgu dönüşümleri, alma işleminin kalitesini artırmak için kullanıcı sorgularının değiştirilmesi anlamına gelir. Bu tekniklerden bazıları, karmaşık sorguların alt sorgulara ayrıştırılmasını ve alımı iyileştirmek için sorguların yeniden yazılması, karmaşık sorguların daha basit sorgulara bölünmesi ve daha genel bir sorgu oluşturmak için geri adımlı istemleme (step-back prompting’in) yapmaktır. [4]

3.2 Sohbet Motorları (Chat Engines)

Sürdürülebilir etkileşimler için sohbet mantığının entegrasyonu esastır. Sorgu sıkıştırma gibi teknikler, hem kullanıcı sorgularını hem de sohbet bağlamını dikkate alarak görüşmelerde süreklilik sağlar. Bağlam Sohbet Motoru ve Yoğunlaşma Artı Bağlam Modu, bağlamı sıkıştırma yöntemleri olarak tartışılmaktadır.[4]

3.3 Sorgu Yönlendirme (Query Routing)

Sorgu dönüşümlerinden sonraki adım, kullanıcı sorgularını yönlendirmek için uygun veri depolarının veya dizinlerin seçilmesini içeren sorgu yönlendirmedir. Sorgu yönlendirmede karar verme, birden fazla veri kaynağı arasında seçim yapmayı veya dizin hiyerarşilerinde gezinmeyi içerebilir.[4]

3.4 RAG Ajanları

Bunlar, tanımlanmış görevleri gerçekleştirmek için muhakeme yetenekleri ve araç kitleriyle donatılmıştır. Örneğin OpenAI Asistanları, sohbet geçmişi yönetimi ve belge özetleme dahil olmak üzere Dil Modeli (LLM) işlemleri için gerekli olan çeşitli araçları entegre ederler.[4]

3.5 Yanıt Sentezleyiciler (Response Synthesizer)

Son adım, alınan bağlama ve ilk kullanıcı sorgusuna dayalı olarak bir yanıt oluşturulmasını içerir. Teknikler arasında LLM’e bağlamın parçalar halinde gönderilmesi, alınan bağlamın özetlenmesi ve birden fazla yineleme yoluyla yanıtların iyileştirilmesi yer alır.[4]

4. Arama Yöntemlerinin Çeşitlendirilmesi

Tam metin araması (full-text-search), yapılandırılmış sorgular (structured queries) ve bilgi grafiği (knowledge graphs) tabanlı aramalar gibi alternatif arama yöntemlerini keşfedin. Vektör benzerlik aramasını tamamlamak için hibrit arama yaklaşımlarını göz önünde bulundurun. Örneğin belirli ilaç adları ve telefon numaraları gibi değerler için tam metin aramasının veya çeşitli veriler için yapılandırılmış sorgular kullanılabilir.[1]

5. Farklı Yerleştirme Modelleri Kullanmak

Çeşitli anlamsal bilgileri yakalamak için farklı yerleştirme (embedding) modelleriyle denemeler yapın. Belirli görevlere göre özelleştirilmiş yerleştirme modellerini deneyebilirsiniz. Örneğin yalnızca finans alanı ile ilgili çalışacak bir RAG yapıyorsanız finans verileri ile instruct edilmiş modeller tercih edebilirsiniz. Farklı dildeki doküman ve soruları o dilde en yüksek başarıyı gösteren yerleştirme modelleri aracılığıyla şifreleyebilirsiniz (encoding) veya çok dilli bir model kullanabilirsiniz.[1]

En popüler yerleştirme modeli lidertablosu aşağıdadır (çok dillilerin gösterilmediğini ve lidertablolarının mutlak gerçeği göstermediğini unutmayın) [3]:

6. Uyarlanabilir Alma Stratejileri (Adaptive Retrieval Strategies)

Bağlamsal olarak alakalı bilgiler sağlamak için küçükten büyüğe veya yinelemeli alma işlemi uygulanabilir. İlgisiz belgelerin etkili bir şekilde filtrelenmesi için hiyerarşik alma kullanılabilir. Örneğin önce özetler alınır ve ardından bu özetler içindeki belirli parçalar aranabilir.[1]

7. Yeniden Sıralama veya Puanlama (Reranking and scoring)

İlgili metin parçalarına öncelik vermek için yeniden bir yeniden sıralama veya puanlama adımı uygulayabilirsiniz. Daha detaylı bir seçim aşaması için LLM’i veya anahtar kelime sıklığı algoritması gibi diğer yöntemleri kullanabilirsiniz. Örneğin LLM’den cevap oluşturmadan önce aldığı parçaları alaka düzeyini sıralamasını istenebilir.[1]

8. Çoklu Parçalar için Bilgi Sıkıştırma (Information Compression for Multiple Chunks)

Birden çok parçayı içeren görevlerde, bilgileri özetleme veya anafikir çıkarma yoluyla parçaları sıkıştırabilirsiniz. Daha verimli bir üretim için yoğunlaştırılmış bilgileri LLM’e iletebilirsiniz. Örneğin bir karşılaştırma yanıtı oluşturmadan önce önemli noktaları özetleyebilir veya anafikiri çıkarabilirsiniz.[1]

9. İstem Mühendisliği (Prompt Engineering)

LLM’den gelen parçalara göre yorum yapmasını istediğiniz isteğinizdeki promptunuzun başarısınızı istem mühendisliği ile bir noktaya kadar arttırabilirsiniz. Örneğin birkaç tane örnek girdi ve çıktı verebilirsiniz. Ayrıca “Lütfen cevabınızı yalnızca arama sonuçlarına dayandırın, başka hiçbir şeye dayanmayın!” demek yerine “Çok önemli! Cevabınız sağlanan arama sonuçlarına dayandırılmalıdır. Lütfen yanıtınızın neden arama sonuçlarına dayandığını açıklayın!” demek bile sonucun kalitesini gösterecektir.[3]

Daha fazlası için istem mühendisliği yazıma bakabilirsiniz:

10. Daha Küçük ve Daha Hızlı Modeller Kullanmak

Gecikmeyi azaltmak için RAG sürecindeki belirli adımlar için daha küçük, daha hızlı modeller kullanabilirsiniz .Model boyutu ile üretim kalitesi arasında bir denge olduğunu da unutmamalısınız. Örneğin sorgunun kolayca yeniden yazılması veya özetlenmesi gibi daha basit görevlerde daha küçük bir yerel model kullanılabilir.[1]

11. Ara Adımları Paralelleştirme

Genel işlem süresini azaltma amacıyla belirli ara adımları paralelleştiren işlemler çalıştırabilirsiniz. Paralelleştirme için RAG çerçevelerini özelleştirebilir veya kendi işlem yapılarınızı oluşturabilirsiniz.
Örneğin daha hızlı sonuçlar için hibrit arama veya özetleme işlemlerini paralelleştirebilirsiniz.[1]

12. Uzun Metin Yerine Çoktan Seçmeliler Kullanmak

LLM’in uzun metinler oluşturmak yerine çoktan seçmeliler oluşturmasını deneyebilirsiniz. Bilgiyi sıralamaya veya puanlamaya odaklanarak yanıt süresini hızlandırabilirsiniz. Örneğin ayrıntılı açıklamalar oluşturmak yerine yalnızca metin parçalarının puanlarını/sıralamalarını listeleyebilirsiniz.[1]

13. Sıkça Sorulan Soruları Önbelleğe Alma (Caching)

Yanıt süresini iyileştirmek için sık sorulan soruların yanıtlarını önbelleğe alabilirsiniz. Benzer sorgular için önceki yanıtları referans olarak kullanabilirsiniz.[1]

Bu tekniklerden bir veya daha fazlasını RAG hattınızda uygulayarak doğruluğu arttırabilir veya gecikmeyi azaltabilirsiniz.

Kaynaklar

[1] Ramakrishna Reddy, (10 Şubat 2024), Maximizing RAG: Strategies for Enhanced Performance and Relevance:

[https://www.linkedin.com/pulse/maximizing-rag-strategies-enhanced-performance-relevance-reddy-0oukc]

[2] Cobus Greyling, (6 Şubat 2024) Seven RAG Engineering Failure Points:

[https://cobusgreyling.medium.com/seven-rag-engineering-failure-points-02ead9cc2532]

[3] Leonie Monigatti, (6 Aralık 2023), A Guide on 12 Tuning Strategies for Production-Ready RAG Applications

[https://towardsdatascience.com/a-guide-on-12-tuning-strategies-for-production-ready-rag-applications-7ca646833439]

[4] pS Content Team, (15 February 2024), The Ultimate Guide to Understanding Advanced Retrieval Augmented Generation Methodologies:

[https://www.purpleslate.com/the-ultimate-guide-to-understanding-advanced-retrieval-augmented-generation-methodologies/]

--

--

Cahit Barkin Ozer

Daha fazla şey öğrenmek ve daha iyi olmak isteyen bir yazılım mühendisi.