در بهبود عملکرد LLM دو تکنیک بسیار معروف وجود دارد:
- RAG (Retrieval Augmented Generation)
- Fine-Tuning
هر دو باعث بهتر شدن خروجی مدل میشوند، اما مشکلهای متفاوتی را حل میکنند.
ایده اصلی RAG
RAG بدون تغییر دادن خود مدل، اطلاعات جدید را هنگام پاسخگویی به آن میدهد.
یعنی:
User Question
↓
Retriever
↓
Relevant Documents
↓
Prompt + Documents
↓
LLM
↓
Answer
مدل همان مدل قبلی است، فقط اطلاعات بیشتری در Prompt دریافت میکند.
مثال:
LLM عمومی:
آخرین قوانین شرکت شما چیست؟
مدل:
نمیدانم.
با RAG:
Question
+
Company Policy PDF
↓
LLM
↓
طبق قوانین شرکت، مرخصی سالانه ۲۵ روز است.
ایده اصلی Fine-Tuning
Fine-Tuning یعنی:
خود مدل را دوباره آموزش دهیم تا رفتار یا تخصص خاصی پیدا کند.
یعنی:
Base LLM
↓
Training on Domain Data
↓
Specialized LLM
در Fine-Tuning پارامترهای داخلی مدل تغییر میکنند.
چگونه Fine-Tuning انجام میشود؟
معمولاً با:
Supervised Fine-Tuning (SFT)
انجام میشود.
داده آموزشی شامل:
Instruction
+
Expected Answer
است.
مثال:
Dataset:
Question:
علائم دیابت چیست؟
Answer:
دیابت معمولاً با افزایش قند خون، تشنگی زیاد و ...
مدل یاد میگیرد:
- چگونه جواب دهد
- چه سبکی داشته باشد
- چه ساختاری استفاده کند
مثال پزشکی
مدل عمومی:
سؤال:
درد مفصل + حساسیت به نور + جوش پوستی؟
جواب:
ممکن است دلایل مختلفی داشته باشد...
جواب عمومی.
بعد از Fine-Tuning پزشکی:
بر اساس علائم ذکر شده، بیماریهای خودایمنی مانند Lupus باید بررسی شوند...
مدل:
- تخصصیتر
- دقیقتر
- با لحن پزشکی
تفاوت اصلی RAG و Fine-Tuning
مهمترین جمله:
RAG برای اضافه کردن دانش جدید است.
Fine-Tuning برای تغییر رفتار و تخصص مدل است.
RAG = Knowledge Injection
یعنی:
"مدل چه چیزی بداند؟"
Fine-Tuning = Domain Adaptation
یعنی:
"مدل چگونه رفتار کند؟"
مقایسه مستقیم
| ویژگی | RAG | Fine-Tuning |
|---|---|---|
| تغییر وزنهای مدل | ❌ | ✅ |
| اضافه کردن اطلاعات جدید | عالی | ضعیفتر |
| تغییر سبک پاسخ | محدود | عالی |
| هزینه آموزش | کم | زیاد |
| نیاز به Dataset | کمتر | زیاد |
| حذف/آپدیت اطلاعات | آسان | سخت |
| مناسب اطلاعات متغیر | عالی | ضعیف |
| تخصصی کردن رفتار | متوسط | عالی |
چرا Fine-Tuning برای یاد دادن اطلاعات جدید خوب نیست؟
یک تصور اشتباه:
"میخواهم مدل PDFهای شرکت را بداند، پس Fine-Tune کنم."
معمولاً انتخاب خوبی نیست.
چرا؟
چون Fine-Tuning بیشتر یاد میدهد:
- چگونه پاسخ دهد
- چه الگویی داشته باشد
نه اینکه:
- دقیقاً چه اطلاعاتی را حفظ کند
مثلاً:
اگر امروز:
قانون مرخصی = 20 روز
و فردا:
قانون مرخصی = 25 روز
در RAG:
فقط PDF را عوض میکنیم.
در Fine-Tuning:
باید دوباره آموزش دهیم.
مثال واقعی
سیستم حقوقی شرکت
اطلاعات:
- قراردادها
- قوانین جدید
- آییننامهها
راه درست:
✅ RAG
چرا؟
چون اطلاعات دائم تغییر میکند.
سیستم تولید قرارداد حقوقی
میخواهیم مدل:
- لحن حقوقی داشته باشد
- قالب خاص تولید کند
راه مناسب:
✅ Fine-Tuning
ترکیب RAG + Fine-Tuning
بهترین سیستمها معمولاً هر دو را استفاده میکنند.
معماری:
User
↓
Retriever
↓
Documents
↓
Fine-Tuned LLM
↓
Answer
مثلاً:
Fine-Tuned Model:
یاد گرفته:
چطور گزارش پزشکی بنویسد
RAG:
میدهد:
اطلاعات بیمار و مقالات پزشکی
نتیجه:
مدل:
- سبک درست دارد
- اطلاعات درست دارد
کاربرد Fine-Tuning در Agentic RAG
یک مثال مهم:
در Agentic RAG چند مدل داریم:
Router Agent
Evaluator Agent
Generator Agent
Router فقط یک کار دارد:
تشخیص:
Need Retrieval?
YES / NO
برای این کار:
یک مدل کوچک Fine-Tune شده عالی است.
مثلاً:
Llama 3 8B
↓
Fine-Tune
↓
Router Model
چون فقط یک وظیفه دارد.
چه زمانی RAG انتخاب کنیم؟
اگر مشکل شما:
"مدل اطلاعات کافی ندارد"
است:
✅ RAG
مثال:
- اسناد شرکت
- قوانین
- محصولات
- مقالات جدید
- دیتابیس داخلی
چه زمانی Fine-Tuning انتخاب کنیم؟
اگر مشکل:
"مدل نمیداند چگونه پاسخ دهد"
است:
✅ Fine-Tuning
مثال:
- سبک نوشتاری خاص
- فرمت خروجی ثابت
- وظیفه تخصصی
- Classification
- Agent تخصصی
چه زمانی هر دو؟
در سیستمهای Enterprise:
معمولاً:
RAG
+
Fine-Tuned Model
+
Agent Workflow
است.
تصمیمگیری سریع
آیا مشکل کمبود اطلاعات است؟
|
بله
|
RAG
آیا مشکل رفتار و سبک مدل است؟
|
بله
|
Fine-Tuning
هر دو؟
|
بله
|
RAG + Fine-Tuning
جمعبندی نهایی
RAG و Fine-Tuning رقیب نیستند؛ مکمل هستند.
- RAG → حافظه خارجی مدل
- Fine-Tuning → تغییر شخصیت و مهارت مدل
یک سیستم حرفهای GenAI معمولاً:
Knowledge
↓
RAG
Behavior
↓
Fine-Tuning
Workflow
↓
Agents
را ترکیب میکند تا به یک سیستم دقیق، تخصصی و قابل اعتماد برسد.