File size: 6,483 Bytes
c7df5be
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
# FitTürkAI RAG Sistemi - CPU Optimize Linux Versiyonu

🏋️ **FitTürkAI**, Türkçe fitness ve sağlık danışmanlığı için geliştirilmiş Retrieval-Augmented Generation (RAG) sistemidir. Bu versiyon **CPU kullanımı için optimize edilmiştir** ve **Google Colab** gibi Linux ortamlarında sorunsuz çalışır.

## 🚀 Özellikler

- **CPU Optimize Edilmiş**: GPU gerektirmez, CPU'da verimli çalışır
- **Türkçe Dil Desteği**: Türkçe dokümanları işler ve yanıtlar
- **RAG Sistemi**: PDF ve JSON belgelerinden bilgi çıkarır ve kullanır
- **Interactive Chat**: Gerçek zamanlı soru-cevap sistemi
- **LoRA Adapter Desteği**: Fine-tune edilmiş modelleri destekler
- **Linux Uyumlu**: Google Colab, Ubuntu, ve diğer Linux dağıtımlarında çalışır

## 📋 Sistem Gereksinimleri

### Minimum Gereksinimler
- **RAM**: En az 4 GB (8 GB önerilir)
- **Disk**: 5 GB boş alan
- **İşletim Sistemi**: Linux (Ubuntu, Google Colab vb.)
- **Python**: 3.8 veya üzeri

### Google Colab İçin
- Ücretsiz Google Colab hesabı yeterlidir
- GPU gerekmez (CPU modunda çalışır)

## 🛠️ Kurulum

### 1. Google Colab'da Hızlı Kurulum

```python
# Google Colab'da yeni bir notebook oluşturun ve şunu çalıştırın:

# 1. Repository'yi klonlayın
!git clone https://github.com/YOUR_USERNAME/FitTurkAI-RAG.git
%cd FitTurkAI-RAG

# 2. Otomatik kurulum scriptini çalıştırın
!python colab_setup_and_run.py
```

### 2. Manuel Kurulum

```bash
# 1. Repository'yi klonlayın
git clone https://github.com/YOUR_USERNAME/FitTurkAI-RAG.git
cd FitTurkAI-RAG

# 2. Python sanal ortamı oluşturun (opsiyonel)
python -m venv venv
source venv/bin/activate  # Linux/Mac

# 3. Gerekli paketleri yükleyin
pip install -r requirements.txt

# 4. NLTK verilerini indirin
python -c "import nltk; nltk.download('punkt'); nltk.download('stopwords')"
```

## 📁 Klasör Yapısı

```
FitTurkAI-RAG/
├── test.py                    # Ana RAG sistemi (CPU optimize)
├── colab_setup_and_run.py     # Google Colab kurulum scripti
├── requirements.txt           # CPU için paket listesi
├── README.md                  # Bu dosya
├── indirilen_pdfler/          # PDF dosyalarınız (oluşturulacak)
├── DATA/                      # JSON veri dosyalarınız (oluşturulacak)
├── fitness_rag_store_merged/  # Vector store (oluşturulacak)
└── fine_tuned_FitTurkAI_QLoRA/ # LoRA adapter (opsiyonel)
```

## 🚴‍♀️ Kullanım

### 1. Temel Kullanım

```python
# Ana scripti çalıştırın
python test.py
```

### 2. Google Colab'da Programmatik Kullanım

```python
from test import FitnessRAG, RAGConfig

# Konfigürasyon oluşturun
config = RAGConfig(
    peft_model_path=None  # Base model kullanmak için None yapın
)

# RAG sistemini başlatın
rag_system = FitnessRAG(config)

# Bilgi tabanını oluşturun (ilk çalıştırmada)
rag_system.build_knowledge_base(
    pdf_dir="./indirilen_pdfler",
    json_dir="./DATA"
)

# Soru sorun
answer = rag_system.ask("Sağlıklı kahvaltı için ne önerirsiniz?")
print(answer)

# Interactive mode başlatın
rag_system.interactive_chat()
```

### 3. Veri Ekleme

#### PDF Dosyaları
```bash
# PDF'lerinizi bu klasöre koyun
cp your_fitness_pdfs/*.pdf ./indirilen_pdfler/
```

#### JSON Verileri
```python
# Örnek JSON formatı
{
  "soru": "Egzersiz öncesi ne yemeli?",
  "cevap": "Egzersiz öncesi hafif, karbonhidrat ağırlıklı besinler tercih edin..."
}
```

## ⚙️ Konfigürasyon

`RAGConfig` sınıfında özelleştirilebilir parametreler:

```python
config = RAGConfig(
    # Veri parametreleri
    chunk_size=300,                    # Kelime başına chunk boyutu
    chunk_overlap_sentences=2,         # Overlap cümle sayısı
    retrieval_k=5,                     # Kaç belge getirilecek
    
    # Model parametreleri
    generator_model_name="ytu-ce-cosmos/Turkish-Llama-8b-v0.1",
    peft_model_path=None,              # LoRA adapter yolu
    
    # Performans parametreleri
    max_context_length=3000            # Maksimum context uzunluğu
)
```

## 🔧 Sorun Giderme

### Yaygın Sorunlar

#### 1. Bellek Hatası (OOM)
```python
# Chunk boyutunu küçültün
config = RAGConfig(chunk_size=200, max_context_length=2000)
```

#### 2. Model Yükleme Hatası
```python
# Base model kullanın (LoRA olmadan)
config = RAGConfig(peft_model_path=None)
```

#### 3. NLTK Veri Hatası
```python
import nltk
nltk.download('punkt_tab')  # Yeni NLTK sürümü için
nltk.download('punkt')      # Eski NLTK sürümü için
nltk.download('stopwords')
```

### Google Colab Özel Çözümler

#### GPU'yu Kapatın
```python
import os
os.environ['CUDA_VISIBLE_DEVICES'] = ''  # GPU'yu devre dışı bırak
```

#### Bellek Optimizasyonu
```python
# Büyük modeller için
import torch
torch.set_num_threads(2)  # CPU thread sayısını sınırla
```

## 📊 Performans Optimizasyonları

### CPU İçin İpuçları

1. **Model Boyutu**: Daha küçük embedding modelleri kullanın
2. **Chunk Size**: Daha küçük chunk'lar daha hızlıdır
3. **Thread Sayısı**: CPU çekirdek sayınıza göre ayarlayın
4. **Batch Size**: Tek seferde işlenecek belge sayısını sınırlayın

```python
# Hızlı konfigürasyon
fast_config = RAGConfig(
    embedding_model_name="paraphrase-multilingual-MiniLM-L6-v2",  # Daha küçük
    chunk_size=200,
    retrieval_k=3,
    max_context_length=2000
)
```

## 🤝 Katkıda Bulunma

1. Fork edin
2. Feature branch oluşturun (`git checkout -b feature/AmazingFeature`)
3. Commit yapın (`git commit -m 'Add some AmazingFeature'`)
4. Push edin (`git push origin feature/AmazingFeature`)
5. Pull Request açın

## 📝 Değişiklik Notları

### v2.0 - CPU Optimized
- ✅ GPU bağımlılığı kaldırıldı
- ✅ CPU için optimize edildi
- ✅ Google Colab desteği eklendi
- ✅ Otomatik kurulum scripti eklendi
- ✅ Bellek optimizasyonları

### v1.0 - GPU Version
- ⚠️ Bu versiyon GPU gerektiriyordu (deprecated)

## 📞 Destek

- **Issues**: GitHub Issues bölümünü kullanın
- **Discussions**: Genel sorular için GitHub Discussions
- **Email**: [your-email@domain.com]

## 📄 Lisans

Bu proje MIT lisansı altında lisanslanmıştır - detaylar için [LICENSE](LICENSE) dosyasına bakın.

## 🙏 Teşekkürler

- Hugging Face Transformers ekibine
- Turkish LLaMA projesine
- Sentence Transformers ekibine
- FAISS ekibine

---

⭐ **Bu projeyi beğendiyseniz, lütfen yıldızlamayı unutmayın!**