وقتی یک RAG را از حالت Prototype به Production میبریم، یک مسئله مهم ظاهر میشود:
هزینه کمتر
↕
کیفیت پاسخ بهتر
هدف مهندس RAG این نیست که همیشه قویترین مدل را استفاده کند؛ هدف این است که بهترین کیفیت با کمترین هزینه منطقی را پیدا کند.
بزرگترین هزینهها در RAG
معمولاً دو بخش بیشترین هزینه را دارند:
1. LLM Inference
2. Vector Database
بخش اول: کاهش هزینه LLM
1. استفاده از مدل کوچکتر
یکی از سادهترین راهها:
استفاده از مدلهای کوچکتر.
مثلاً:
به جای:
70B Model
استفاده از:
8B Model
اما آیا کیفیت خراب میشود؟
همیشه نه.
بعضی کارها نیاز به مدل بزرگ ندارند.
مثلاً:
Router LLM
وظیفه:
آیا نیاز به Retrieval داریم؟
Yes / No
نیازی به GPT بزرگ ندارد.
یک مدل کوچک کافی است.
مثال Agentic RAG
به جای:
GPT-5
|
|-- Router
|-- Query Rewriter
|-- Evaluator
|-- Generator
|-- Citation Generator
میتوان:
Small LLM
|
|-- Router
Small LLM
|
|-- Query Rewrite
Large LLM
|
|-- Final Answer
استفاده کرد.
2. Quantization مدل
قبلاً دیدیم:
FP16
↓
INT8
↓
INT4
باعث:
- کاهش VRAM
- سرعت بیشتر
- هزینه کمتر
میشود.
مثال:
مدل:
Llama 70B FP16
ممکن است:
140GB VRAM
بخواهد.
نسخه:
Llama 70B INT4
ممکن است:
40GB VRAM
کافی باشد.
3. کاهش تعداد Token ورودی
در RAG معمولاً Prompt بزرگترین بخش هزینه است.
مثلاً:
System Prompt
+
Conversation History
+
Retrieved Chunks
+
User Question
همه Token مصرف میکنند.
مثال:
قبل:
Retrieved chunks = 10
هر chunk = 1000 token
Total:
10000 tokens
بعد:
Retrieved chunks = 3
Total:
3000 tokens
هزینه تقریباً یک سوم میشود.
4. کاهش Top-K Retrieval
در Vector Search:
مثلاً:
Top K = 20
یعنی:
20 Chunk به LLM بده.
اما شاید:
Top K = 5
همان کیفیت را بدهد.
پس باید تست کنیم:
K=20
↓
K=10
↓
K=5
و با Evaluation ببینیم.
5. کوتاه کردن پاسخ خروجی
بعضی LLMها خیلی توضیح میدهند.
ولی:
هر Token خروجی = هزینه.
راهکار:
System Prompt:
Answer concisely.
Avoid unnecessary explanations.
یا:
تنظیم:
max_tokens
مثلاً:
قبل:
1000 output tokens
بعد:
300 output tokens
6. Fine-tuning مدل کوچک
گاهی:
یک مدل کوچک Fine-tune شده بهتر از مدل بزرگ عمومی عمل میکند.
مثلاً:
کار:
Customer Support Classification
نیاز به GPT بزرگ ندارد.
یک:
7B Fine-tuned model
میتواند کافی باشد.
بخش دوم: کاهش هزینه Vector Database
Vector Database سه نوع حافظه دارد:
RAM
Disk
Object Storage
مقایسه هزینه
RAM
سریعترین:
Latency ↓
Cost ↑↑↑
Disk
وسط:
Latency متوسط
Cost متوسط
Object Storage
مثل:
S3
ارزان:
Cost ↓↓↓
Speed ↓
چه چیزی کجا ذخیره شود؟
همه چیز را نباید RAM کنیم.
مثلاً:
HNSW Index
باید RAM باشد.
چون:
ANN Search
به سرعت نیاز دارد.
اما:
Document Content
لازم نیست همیشه RAM باشد.
میتواند:
Disk
یا
Object Storage
باشد.
معماری بهتر:
RAM
HNSW Index
|
Disk
Frequently Used Docs
|
Object Storage
Rare Documents
Multi-Tenancy برای کاهش هزینه
Multi-tenancy یعنی:
تقسیم دادهها بر اساس کاربر یا سازمان.
مثال:
یک SaaS داریم:
1000 customers
هر customer:
1000 documents
به جای:
یک Index بزرگ:
1,000,000 vectors
داریم:
Tenant A
|
HNSW
Tenant B
|
HNSW
Tenant C
|
HNSW
مزیت:
وقتی کاربر Login کرد:
فقط Vectorهای همان کاربر را Load کنیم.
مثلاً:
صبح:
کاربران اروپا:
RAM
شب:
منتقل شوند:
Disk
Dedicated Hardware برای LLM
در ابتدا:
استفاده از API:
مثلاً:
OpenAI API
AWS Bedrock
Together AI
خوب است.
اما در Scale بالا:
هزینه Token زیاد میشود.
راهکار:
اجاره GPU:
مثلاً:
A100
H100
L40S
و اجرای مدل خودمان.
مدل هزینه:
API:
Pay per token
Dedicated GPU:
Pay per hour
در حجم بالا:
GPU اختصاصی ارزانتر میشود.
یک معماری بهینه Production
مثلاً:
User
|
Query Router
Small LLM
|
Query Rewrite
Small LLM
|
Vector Search
|
Reranker
|
Top 5 Chunks
|
Large LLM
Answer Generation
|
Response
Trade-off واقعی
مثلاً:
گزینه A
مدل بزرگ:
GPT-5 class
TopK=20
No optimization
Quality: 95%
Cost: $$$$
گزینه B
بهینه:
Small Router
TopK=5
Reranker
Quantized LLM
Quality: 92%
Cost: $
در Production معمولاً گزینه B بهتر است.
فرآیند درست بهینهسازی
نباید حدس بزنیم.
روش درست:
مرحله 1
اندازهگیری:
Latency
Cost
Quality
مرحله 2
یک تغییر بده:
مثلاً:
TopK 20 → 5
مرحله 3
Evaluation:
بررسی:
Faithfulness
Answer relevance
User feedback
مرحله 4
تصمیم:
آیا کاهش هزینه ارزش افت کیفیت را دارد؟
خلاصه نهایی
برای کاهش هزینه RAG:
| بخش | تکنیک |
|---|---|
| LLM | مدل کوچکتر |
| LLM | Quantization |
| LLM | کاهش Token |
| RAG | کاهش Top-K |
| LLM | Fine-tune مدل کوچک |
| Vector DB | Quantized vectors |
| Vector DB | RAM فقط برای داده مهم |
| Vector DB | Disk/Object Storage |
| Scale بالا | Dedicated GPU |
| Multi User | Multi-tenancy |
اصل مهم:
بهترین RAG، قویترین RAG نیست؛ RAGای است که با کمترین هزینه، کیفیت کافی برای نیاز واقعی کاربر را ارائه دهد.