Yan yana
RAGvsFine-tuning
RAG ile fine-tuning arasındaki fark nedir?
Güncellendi 2 dk okuma7 fark
Kısaca
RAG, modele soru anında ilgili belgeleri vererek güncel kaynaklardan yanıtlamasını sağlar; fine-tuning ise davranışını değiştirmek için modeli daha da eğitir.
RAG
Retrieval-Augmented Generation (Getirmeyle Zenginleştirilmiş Üretim)
RAG, bir LLM'in soru anında getirilen ilgili belgelere dayanarak yanıt vermesini sağlayan ve yanıtları güncel, özel verilere dayandıran bir tekniktir.
RAG sayfasını okuFine-tuning
İnce Ayar
Fine-tuning, önceden eğitilmiş bir makine öğrenmesi modelini tek bir göreve uyarlamak için daha küçük ve özel bir veri kümesiyle ek olarak eğitme sürecidir.
Fine-tuning sayfasını okuRAG ve Fine-tuning karşılaştırması
| Özellik | RAG | Fine-tuning |
|---|---|---|
| Ne değişir | Prompt: ilgili belgeler sorgu anında eklenir | Modelin ağırlıkları, ek eğitim yoluyla |
| Bilgiyi güncelleme | Anında: belgeleri ya da dizini güncelleyin | Modeli yeniden eğitmeyi gerektirir |
| En iyi olduğu iş | Belirli, güncel ya da özel olgulardan yanıt vermek | Tutarlı üslup, biçim ya da özel görevler |
| Ana maliyetler | Getirme altyapısı ve daha uzun prompt'lar | Baştan eğitim hesaplaması ve veri hazırlığı |
| Şeffaflık | Kullandığı kaynakları gösterebilir | Kaynak yok; bilgi ağırlıkların içinde karışmıştır |
| Gereken veri | Aranabilir bir belge koleksiyonu | Yüzlerce ile binlerce yüksek kaliteli örnek |
| Ana risk | Kötü getirme, yanlış ya da eksik yanıtlara yol açar | Aşırı öğrenme, kaybolan genel yetenekler ya da güncelliğini yitirmiş bilgi |
Fark, açıklamalı
Retrieval-augmented generation (RAG), uygulamanızın önce bir bilgi kaynağında, çoğunlukla belge gömmelerinden (embedding) oluşan bir vektör veritabanında arama yaptığı ve en iyi eşleşmeleri modelin bunlardan yanıt vermesi için prompt'a eklediği bir kalıptır. Fine-tuning ise önceden eğitilmiş bir modeli alır ve kendi örneklerinizle eğitmeye devam eder; ağırlıklarını ayarlayarak yeni davranışı modelin içine yerleştirir.
Fark, bilginin nerede yaşadığıdır. RAG'de bilgi modelin dışında kalır; bu yüzden onu anında güncelleyebilir, kimin neyi göreceğini denetleyebilir ve kaynakları gösterebilirsiniz, ama her yanıt getirme (retrieval) kalitesine bağlıdır ve bağlam penceresinin daha fazlasını kullanır. Fine-tuning'de örüntüler modelin parçası olur; bu tutarlı bir biçim, ton ya da dar bir görev için iyidir, ama güncellemek yeniden eğitmek demektir ve değişen olguları saklamanın kötü bir yoludur.
Birlikte iyi çalışırlar. Yaygın bir yol, iyi prompt yazmayla başlamak, modelin özel ya da güncel verilerinize ihtiyaç duyduğunda RAG eklemek ve fine-tuning'i yalnızca prompt'ların güvenilir biçimde sağlayamadığı davranışlara, örneğin katı bir çıktı biçimine ya da özel bir kelime dağarcığına ihtiyaç duyduğunuzda uygulamaktır. Fine-tune edilmiş bir model güncel olgular için yine de RAG kullanabilir.
Sık yapılan bir yanlış, fine-tuning'in modele belgelerinizi öğretmenin yolu olduğu düşüncesidir. Fine-tuning modelin nasıl yanıt vereceğini şekillendirir, ama olguları güvenilmez biçimde ezberler ve onları yine de halüsinasyonla üretebilir; RAG ise modelin gerçek kaynaktan alıntı yapmasına izin verir. Bir diğeri, RAG'in halüsinasyonları tamamen ortadan kaldırdığı düşüncesidir: onları azaltır, ama yalnızca doğru belgeler getirildiğinde.
Hangisini kullanmalısınız?
RAG şu durumlarda doğru seçim:
- Yanıtlar belgelerinizden gelmeli ve bu belgeler sık değişiyor.
- Kullanıcıların kaynaklara alıntı ya da bağlantı görmesi gerekiyor.
- Bilgiye erişim, soran kişiye bağlı.
- Bir model eğitmeden hızlıca sonuç istiyorsunuz.
Fine-tuning şu durumlarda doğru seçim:
- Tutarlı bir tona, biçime ya da çıktı yapısına ihtiyacınız var.
- Görev, destek taleplerini sınıflandırmak gibi dar ve tekrarlayıcı.
- Daha küçük, daha ucuz bir modelin tek bir görevde daha büyük bir modele yetişmesini istiyorsunuz.
- Yalnızca prompt yazmak modelin güvenilir davranmasını sağlamıyor.
Bilgiyi sorgu anında eklemek ile modele eğitmek
# RAG: fetch relevant text at question time
question = "What is our refund policy?"
docs = vector_db.search(embed(question), top_k=3)
prompt = f"Answer using only these sources:\n{docs}\n\nQ: {question}"
answer = llm.generate(prompt)# Fine-tuning: change the model once, ahead of time
examples = [
{"prompt": "Ticket: app crashes on login", "completion": "bug"},
{"prompt": "Ticket: please add dark mode", "completion": "feature"},
# ...hundreds more labeled examples
]
tuned = fine_tune(base_model, examples)
answer = tuned.generate("Ticket: payment page is slow")Sık sorulan sorular
RAG, fine-tuning'den daha mı ucuz?
Başlangıçta genellikle evet; çünkü eğitim gerektirmez, yalnızca bir arama dizini gerekir. Çok yüksek hacimlerde, kısa prompt'lu küçük bir fine-tune edilmiş model istek başına daha ucuz olabilir.
RAG ve fine-tuning birleştirilebilir mi?
Evet. Bir model biçim, ton ya da alan dili için fine-tune edilebilir ve soru anında güncel olguları çekmek için yine RAG kullanabilir.
Fine-tuning halüsinasyonları durdurur mu?
Hayır. Fine-tuning yanıtları daha tutarlı hâle getirebilir, ama bir model yine de olgular uydurabilir; yanıtları getirilen kaynaklara dayandırmak halüsinasyonları azaltmanın daha doğrudan bir yoludur.