# 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!**