File size: 5,364 Bytes
00b28c1
 
 
 
 
 
 
 
 
 
65792b6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
title: RAG Tabanlı Türkçe Tıbbi Chatbot
emoji: 🏢
colorFrom: indigo
colorTo: blue
sdk: streamlit
sdk_version: 1.37.0
app_file: app.py
pinned: false
---
# RAG Tabanlı Türkçe Tıbbi Chatbot

Bu proje, Türkçe tıbbi makaleler üzerinde **Retrieval-Augmented Generation (RAG)** teknolojisi kullanarak çalışan akıllı bir chatbot sistemidir. HuggingFace'ten yüklenen Türk hastanelerinin tıbbi makalelerini analiz ederek, kullanıcıların tıbbi sorularına profesyonel cevaplar verir.

## Özellikler

- **4000+ Tıbbi Makale**: Türk hastanelerinden toplanmış güncel tıbbi içerik
- **Türkçe Embedding Modeli**: `trmteb/turkish-embedding-model` ile optimize edilmiş arama
- **Google Gemini 2.0 Flash**: Gelişmiş dil modeli ile doğal cevaplar
- **ChromaDB Vector Store**: Hızlı ve etkili vektör arama
- **Streamlit Web Arayüzü**: Kullanıcı dostu web arayüzü

## Proje Yapısı

```
rag-based-chatbot/
├── rag_env/                 # Python sanal ortamı
├── app.py                   # Ana uygulama
├── data_processing.py       # Veri yükleme ve işleme
├── embedding_model.py       # Türkçe embedding modeli
├── vector_store.py          # ChromaDB vector store yönetimi
├── rag_pipeline.py          # RAG pipeline mantığı
├── gemini_integration.py    # Google Gemini API entegrasyonu
├── requirements.txt         # Python bağımlılıkları
├── README.md              
└── chroma_db/              # Vector store veritabanı (otomatik oluşur)
```

## Teknik Detaylar

### Veri İşleme Pipeline

1. **Veri Yükleme**: HuggingFace'ten [`umutertugrul/turkish-hospital-medical-articles`](https://huggingface.co/datasets/umutertugrul/turkish-hospital-medical-articles) veri seti
2. **Document Oluşturma**: Makaleler LangChain Document formatına dönüştürülür
3. **Veri Temizleme**: Boş ve kısa içerikler filtrelenir
4. **Kalite Kontrolü**: %98.6 başarı oranı ile işleme

### Kullanılan Teknolojiler

| Kategori | Teknoloji | Versiyon | Açıklama |
|----------|-----------|----------|----------|
| LLM | Google Gemini 2.0 Flash | Latest | Ana dil modeli |
| Embedding | trmteb/turkish-embedding-model | Latest | Türkçe vektörleştirme |
| Vector DB | ChromaDB | 0.4.0+ | Vektör veritabanı |
| Framework | LangChain | 0.1.0+ | RAG framework |
| Web UI | Streamlit | 1.28.0+ | Web arayüzü |
| Data | HuggingFace Datasets | 2.14.0+ | Veri yönetimi |

## Kurulum

### 1. Projeyi Klonlayın

```bash
git clone <repository-url>
cd rag-based-chatbot
```

### 2. Sanal Ortam Oluşturun

```bash
# Sanal ortam oluştur
python -m venv rag_env

# Sanal ortamı aktifleştir
# Windows:
rag_env\Scripts\activate
# macOS/Linux:
source rag_env/bin/activate
```

### 3. Bağımlılıkları Yükleyin

```bash
pip install -r requirements.txt
```

### 4. API Anahtarlarını Ayarlayın

`.env` dosyası oluşturun:

```bash
# .env dosyası oluştur
touch .env
```

`.env` dosyasına aşağıdaki anahtarları ekleyin:

```env
# Google Gemini API Anahtarı
GOOGLE_API_KEY=your_gemini_api_key_here

# HuggingFace Token (opsiyonel)
HUGGINGFACE_TOKEN=your_hf_token_here
```

#### API Anahtarlarını Nasıl Alırsınız?

**Google Gemini API:**
1. [Google AI Studio](https://makersuite.google.com/app/apikey) adresine gidin
2. Google hesabınızla giriş yapın
3. "Create API Key" butonuna tıklayın
4. Oluşturulan anahtarı kopyalayın

**HuggingFace Token:**
1. [HuggingFace](https://huggingface.co/settings/tokens) adresine gidin
2. "New token" butonuna tıklayın
3. "Read" yetkisi ile token oluşturun

## Kullanım

### 1. Konsol Uygulaması

```bash
python app.py
```

Bu komut:
- Veri setini yükler
- Document'ları oluşturur
- Embedding modelini yükler
- Vector store oluşturur/yükler
- RAG pipeline'ı test eder
- Etkileşimli chat modunu başlatır

### 2. Streamlit Web Arayüzü

```bash
streamlit run app.py
```

Web arayüzü `http://localhost:8501` adresinde açılır.

### 3. Google Colab ile Deneme

**Hızlı Başlangıç için Colab:**

1. **Colab Notebook'u Açın:**
   ```python
   # Colab'da çalıştırın
   !git clone https://github.com/your-username/rag-based-chatbot.git
   %cd rag-based-chatbot
   !pip install -r requirements.txt
   ```

2. **API Anahtarlarını Ayarlayın:**
   ```python
   # Colab'da çalıştırın
   import os
   from google.colab import userdata
   
   # Gemini API anahtarınızı girin
   os.environ['GOOGLE_API_KEY'] = userdata.get('GOOGLE_API_KEY')
   
   # HuggingFace token (opsiyonel)
   os.environ['HUGGINGFACE_TOKEN'] = userdata.get('HUGGINGFACE_TOKEN')
   ```

3. **Veri Setini Analiz Edin:**
   ```python
   # Colab'da çalıştırın
   from data_processing import hf_load_dataset, explore_dataset
   
   # Veri setini yükle ve analiz et
   dataset = hf_load_dataset()
   explore_dataset(dataset)
   ```

4. **RAG Pipeline'ı Test Edin:**
   ```python
   # Colab'da çalıştırın
   from app import main
   
   # Ana uygulamayı çalıştır
   main()
   ```


## Örnek Kullanım

**Tıbbi Tarayıcı** ile test edebileceğiniz örnek sorular:

• **"Migren ağrısı nasıl geçer?"****"Kalp krizi belirtileri nelerdir?"****"Grip aşısı ne zaman yaptırmalıyım?"****"Yüksek tansiyon nasıl kontrol edilir?"****"Baş ağrısı çeşitleri nelerdir?"**