5 milyondan fazla belge işlerken edinilen Production RAG deneyimi
(blog.abdellatif.io)- 8 ay boyunca bir RAG (arama destekli üretim) projesi yürütülürken, gerçekten etkili olan yöntemlerle zaman kaybı olan yöntemler ayırt edildi
- Başlangıçta Langchain ve Llamaindex kullanılarak prototip hızla tamamlandı, ancak gerçek kullanıcı geri bildirimlerinde performans sınırlarıyla karşılaşıldı
- Belge arama performansını iyileştiren en büyük etkenlerin sorgu üretimi, yeniden sıralama, chunking stratejisi, metadata kullanımı, sorgu yönlendirme olduğu görüldü
- Pratikte vektör veritabanı, embedding, reranking, LLM gibi bileşenler esnek biçimde seçilerek özel bir pipeline kuruldu
- Tüm deneyim ve birikim açık kaynak proje agentset-ai/agentset içinde bir araya getirilerek paylaşıldı
8 aylık Production RAG kurulum deneyiminin özeti
- Toplam 9 milyon sayfa (Usul AI), 4 milyon sayfa (isimsiz bir hukuk yapay zeka şirketi) gibi büyük veri setlerinde RAG sistemleri kurma ve işletme deneyimi paylaşılıyor
- Başlangıçta YouTube eğitimlerini takip ederek Langchain'den Llamaindex'e geçilip birkaç gün içinde prototip tamamlandı, ancak gerçek dağıtımda yalnızca kullanıcıların fark edebileceği düşük performans sorunu ortaya çıktı
- Birkaç ay boyunca sistem bileşenleri parça parça düzeltilerek en iyi performansa ulaşıldı
Performans iyileştirmesine gerçekten katkı sağlayan unsurlar (ROI sırasına göre)
-
Sorgu Üretimi (Query Generation)
- Kullanıcının son sorgusu tüm bağlamı taşıyamadığı için, LLM ile konuşma içeriği incelenip anlamsal sorgular ve birden fazla anahtar kelime sorgusu üretiliyor
- Bu sorgular paralel işlenip yeniden sıralayıcıya verilerek arama kapsamını genişletme ve hibrit aramadaki önyargıyı telafi etme etkisi elde ediliyor
-
Yeniden Sıralama (Reranking)
- Yaklaşık 5 satır kodla uygulanabilen yeniden sıralamanın performansa etkisi hayal edilenden çok daha büyük
- Çok sayıda chunk girdisi (ör. 50 adet) içinden üst sıralardaki bazı chunk'ların (ör. 15 adet) yeniden sıralanıp seçilmesi en yüksek ROI'yi sağlıyor
- Yalnızca yeniden sıralama bile, tasarımı zayıf bir pipeline'ın eksiklerini önemli ölçüde telafi edebiliyor
-
Chunking Stratejisi (Chunking Strategy)
- Tüm geliştirme sürecinde en çok zaman alan bölüm
- Veri yapısı ve kalıpların doğru anlaşılması, mantıksal birimler halinde chunking yapılması ve metin ya da cümlelerin ortadan bölünmediğinin elle denetlenmesi gerekiyor
- Her chunk'ın kendi başına anlamını koruması gerekiyor
-
LLM girdisinde metadata kullanımı
- LLM'e yalnızca basit chunk metni gönderilmiyor, metadata (title, author vb.) da eklenerek bağlam ve yanıt kalitesi büyük ölçüde iyileştiriliyor
-
Sorgu Yönlendirme (Query Routing)
- RAG ile yanıtlanamayacak türler için (ör. makale özeti, yazar bilgisi talebi vb.) hafif bir yönlendirici eklenip ilgili sorgular API+LLM işleme yoluna ayrılıyor
Kullanılan stack
- Vektör veritabanı: Azure → Pinecone → Turbopuffer (ucuz ve varsayılan olarak anahtar kelime aramayı destekliyor)
- Belge çıkarma: özel yöntem kullanıldı
- Chunking aracı: temel olarak Unstructured.io, kurumsal pipeline için özel çözüm kullanıldı (Chonkie hakkında da olumlu görüş var)
- Embedding modeli:
text-embedding-large-3kullanıldı (başka modeller test edilmedi) - Yeniden sıralayıcı: None → Cohere 3.5 → Zerank (çok yaygın değil ama pratikte oldukça iyi)
- LLM: GPT 4.1 → GPT 5 → GPT 4.1 (çoğunlukla Azure kredileri kullanıldı)
Açık kaynak olarak yayınlanması ve sonuç
- Tüm öğrenimler ve sahadaki deneyim açık kaynak proje agentset-ai/agentset ile somutlaştırıldı
- MIT lisansı ile yayınlandı; serbestçe kullanılabilir ve iletişime geçilebilir
1 yorum
Hacker News yorumu