TestModel / README.md
bilalabic's picture
Upload folder using huggingface_hub
c7df5be verified
# 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!**