Canlı Uygulama: https://mentalchat.streamlit.app/
Kısa, anlaşılır ve kaynak parça referanslı cevaplar veren; CSV/TXT verinizle çalışan RAG tabanlı bir sohbet uygulaması.
Görselin görünmesi için proje kökünde
docs/mentalchat-ui.pngdosyası bulunmalıdır.
- Özellikler
- Mimari
- Veri Seti
- Kurulum (Yerel)
- Çalıştırma
- Streamlit Cloud (Deploy)
- Yapı
- İpuçları
- Sorun Giderme
- Yol Haritası
- RAG Pipeline: Soru → Chroma ile en ilgili parçalar → Gemini ile yanıt
- Gemini modelleri: Varsayılan
gemini-2.5-flash, embeddingtext-embedding-004 - Ayarlanabilir: Sol panelden model ve k (kaynak sayısı)
- Tek tık indeks: “Veriyi Yeniden İndeksle” butonuyla veri güncelleme sonrası hızlı re-indeks
flowchart LR U[👤 Kullanıcı] -->|Soru| UI[🖥️ Streamlit UI] UI -->|Arama| RET[🔎 Chroma Retriever (k)] RET -->|Bağlam| LLM[🤖 Gemini (gemini-2.5-flash)] LLM -->|Yanıt + Kaynak| UI Metin parçalama: RecursiveCharacterTextSplitter (chunk_size=800, overlap=120) Vektör veritabanı: Chroma (kalıcı klasör: chroma_db/) LangChain 0.2+ uyumlu retriever.invoke(query) çağrısı kullanılır.
##Veri Seti
Varsayılan: data/Mental_Health_FAQ (1).csv (ruh sağlığı SSS)
##Kurulum (Yerel)
python -m venv .venv
.\.venv\Scripts\activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
##RAG Chatbot Çalışma Kılavuzu (Gemini + LangChain + Chroma + Streamlit) Bu kılavuz, projeyi yerelde çalıştırma, veri ekleme/indeksleme, Streamlit Cloud’a deploy, ayarlar ve sorun giderme adımlarını tek sayfada özetler.
- Gereksinimler Python 3.10–3.12 pip (Python paket yöneticisi)
##Çalıştırma python src\ingest.py # data/ içeriğini indeksler (Chroma) streamlit run app.py # arayüzü başlatır
##Kullandığım Teknolojiler LLM: Google Gemini (gemini-2.5-flash) Embedding: Google text-embedding-004 Vektör DB: Chroma (lokal, chroma_db/) Çerçeve: LangChain ≥ 0.2 (LCEL; retriever.invoke) UI: Streamlit (web arayüz + yeniden indeksleme butonu) Kod: Python 3.10–3.12 Deploy: Streamlit Community Cloud Yapılandırma: .env veya Streamlit Secrets (TOML)
##Web Arayüzü & Product Kılavuzu
-
Ürün Özeti MentalChat, kurum içi CSV/TXT içeriklerinden RAG (Retrieval-Augmented Generation) yöntemiyle kısa, anlaşılır ve kaynak parçalarla destekli yanıt üreten bir web sohbet uygulamasıdır. Kullanıcı bir soru yazar; uygulama önce vektör veritabanından en ilgili metin parçalarını bulur, ardından Gemini modeli bu bağlamla güvenilir yanıt üretir. Canlı: https://mentalchat.streamlit.app/
-
Hedef Kullanıcılar & Değer Önermesi Danışan/öğrenci/çalışan: Ruh sağlığı SSS içeriklerini hızlı ve sade öğrenir. Eğitmen/KO: Kurum içi içeriklerin aynı dille, uydurmadan anlatılmasını sağlar. Operasyon: Veri güncellemesini (CSV ekleyip yeniden indeksleme) kendileri yapabilir. Değer: Yanıtlar veriye dayalıdır; “bağlamımda yok” politikasıyla uydurma azaltılır; kaynak parça görünürlüğüyle şeffaflık sağlanır.
-
Arayüz ve Ana Akış 3.1 Giriş Ekranı Başlık: “RAG Chatbot (Gemini + Chroma)” Soru Alanı: “Soru” metin girişi (ör. Depresyon belirtileri nelerdir?) Butonlar: Sor: Sorguyu çalıştırır. Veriyi Yeniden İndeksle: data/ klasöründeki CSV/TXT içeriğini yeniden indeksler (veri güncellendiğinde bir kez tıklayın).
3.2 Yan Panel (Ayarlar) Model: Varsayılan gemini-2.5-flash (metin üretimi). İsteğe göre değiştirilebilir. Kaynak sayısı (k): Retriever’ın kaç parça döndüreceği (öneri: 3–6).
3.3 Sonuç Ekranı Yanıt: Kısa, maddeli ve net bir çıktı. Kaynak parçaları (expander): Getirilen metin parçalarının özet/snippet’ları ve (varsa) temel metaverileri. Kullanıcı cevapların hangi bağlama dayandığını görür.
-
Kullanım Adımları (Son Kullanıcı) Tarayıcıda mentalchat.streamlit.app adresine gidin. Sol yandaki Ayarlar bölümünden gerekirse Model ve k değerini ayarlayın. “Soru” alanına sorunuzu yazın → Sor. “Yanıt” bölümünü okuyun; gerekirse “Kaynak parçaları”nı açarak dayanak metni görün. Veri değiştiyse (CSV eklediniz/yenilediniz), Veriyi Yeniden İndeksle butonuna bir kez tıklayın ve ardından sorularınızı tekrar sorun. Örnek sorular “Depresyon nedir? 4 maddeyle özetle.” “Anksiyete ile normal kaygı arasındaki fark nedir?” “Panik atağın tipik belirtileri neler?” “Bağlamında yoksa ‘bağlamımda yok’ de: Bipolar DSM-5 ölçütleri?”
-
İçerik Yönetimi (Operasyon) Yeni veri ekleme: CSV/TXT dosyalarını repo’daki data/ klasörüne ekleyin ve push edin (ya da yerelde bu klasöre kopyalayın). İndeksleme: Yerel: python src/ingest.py (veya app’te Veriyi Yeniden İndeksle). Cloud: Uygulama açıldıktan sonra Veriyi Yeniden İndeksle butonunu bir kez tıklayın. CSV ayarları (gerekirse): CSV_DELIMITER=";" → noktalı virgül ayracı kullanan dosyalar için CSV_ENCODING="cp1254" → Türkçe içeriklerde encoding sorunu varsa
-
Etkileşim Kuralları & UX İlkeleri Uydurmama: Bağlamda bilgi yoksa model “bağlamımda yok” der. Kısalık: Yanıtlar kısa, maddeli ve ana fikri özetleyen yapıda tutulur. Şeffaflık: “Kaynak parçaları” paneli her yanıttan sonra erişilebilir. Hata Mesajları: API Key yok/yanlış → “GOOGLE_API_KEY bulunamadı…” uyarısı (Secrets veya .env’e ekleyin). Redacted hata (embedding) → genellikle key env’e set edilmemiştir; ensure_api_key() bunu otomatik yapar (mevcut sürümde etkin).
-
Rol ve Yetkiler (Basit Model) Kullanıcı: Soru sorma, kaynak parçalarını görme. İçerik Operatörü: data/ klasörünü güncelleme, yeniden indeksleme. Yönetici (opsiyonel): Streamlit Secrets yönetimi (API key, opsiyonel APP_PASSWORD). Basit parola koruması istenirse Secrets’a APP_PASSWORD konur; uygulama yan panelde şifre isteyebilir.
-
SSS (Kullanıcı Gözüyle) “Veri ekledim ama görünmüyor?” → Veriyi Yeniden İndeksle butonuna basın.
“Çok uzun cevap veriyor” → Soruya “kısa, 4 madde” gibi kısıt ekleyin.
“Cevapta kaynak görmüyorum” → “Kaynak parçaları” panelini açın.
“Yanıt yanlış” → Soruyu daraltın; gerekirse k değerini 4–6 yapın; verinin data/da mevcut olduğundan emin olun.
-
Yol Haritası (Ürün Geliştirme) Dosya çeşitleri: PDF/DOCX yükleyici Arama: Hibrid (BM25 + dense), MMR ve yeniden sıralama Kaynak vurgusu: Yanıt içinde pasaj/ID vurguları Basit kimlik doğrulama: Kurumsal erişim kontrolü Analitik: Sorgu/yanıt telemetrisi, kalite panosu Özet: MentalChat, veriye dayalı, kısa ve kaynaklı yanıtları sade bir arayüzle sunar. Son kullanıcı sadece soru sorar; operasyon ekibi data/ya dosya ekleyip tek tıkla indeksler. Böylece içeriğin güncelliği ve yanıtların doğruluğu kolayca korunur. ##Streamlit Cloud (Deploy)
Canlı: https://mentalchat.streamlit.app/ ##Yapı . ├─ app.py # Streamlit arayüz + RAG akışı ├─ src/ │ └─ ingest.py # CSV/TXT loader, splitter, embedding, Chroma persist ├─ data/ # Veri dosyaları (CSV/TXT) ├─ requirements.txt ├─ README.md └─ .env.example

