Bu proje, Akbank GenAI Bootcamp kapsamında geliştirilmiş, RAG (Retrieval-Augmented Generation) tabanlı çok sayfalı bir Streamlit web uygulamasıdır. Uygulama, kurumsal sürdürülebilirlik ve ESG (Çevresel, Sosyal, Yönetişim) konularında bilgi sağlayan bir Sohbet Asistanı ve ilgili riskleri görselleştiren bir Veri Görselleştirme panelinden oluşmaktadır.
Projenin temel amacı, sürdürülebilirlik alanındaki karmaşık konuları, sağlanan güvenilir PDF kaynaklarına dayanarak açıklığa kavuşturmaktır. Bu amaçla iki ana bileşen sunulmaktadır:
- Sohbet Asistanı: Kullanıcıların doğal dilde sorduğu sorulara, yalnızca yüklenen dokümanların içeriğini kullanarak, harici bilgi kaynaklarına başvurmadan, doğru ve bağlamsal yanıtlar üretir.
- Veri Görselleştirme: Borsa İstanbul Sürdürülebilirlik Rehberi'ndeki ESG risk sınıflandırmasını interaktif bir treemap grafiği ile sunar.
- Güvenilir Bilgi: Yanıtlar yalnızca sağlanan PDF dokümanlarına dayanır (RAG).
- Kaynak Gösterimi: Sohbet Asistanı, yanıtlarını oluştururken kullandığı kaynak doküman ve sayfa numarasını belirtir.
- Etkileşimli Görselleştirme: ESG risk kategorileri, tanımları ve hiyerarşisi Plotly treemap ile keşfedilebilir.
- Çok Sayfalı Arayüz: Streamlit'in çok sayfalı uygulama yapısı kullanılarak farklı işlevler (sohbet, görselleştirme) ayrı sayfalarda sunulur.
- Gelişmiş Anlamsal Arama:
MultiQueryRetrieverkullanarak kullanıcı soruları alt sorgulara bölünür ve daha isabetli sonuçlar elde edilir.
- Veri Kaynakları:
Erdem & Erdem - ÇSY Terimler Sözlüğü.pdfBorsa İstanbul - Sürdürülebilirlik Rehberi.pdf
- İçerik: ÇSY alanındaki temel terimler sözlüğü ve kurumsal sürdürülebilirlik stratejileri, raporlama standartları ve uygulama yöntemlerini içeren rehber.
- Hazırlık Süreci:
- PDF dosyaları proje içindeki
data/klasörüne yerleştirilir. - Uygulama ilk çalıştığında (veya vektör veritabanı bulunamadığında), bu PDF'ler
PyPDFLoaderile yüklenir. - Metinler
RecursiveCharacterTextSplitterile anlamlı parçalara ayrılır. - Parçalar,
sentence-transformers/paraphrase-multilingual-mpnet-base-v2modeli kullanılarakHuggingFaceEmbeddingsile vektör temsillerine (embeddings) dönüştürülür. - Oluşturulan vektörler,
FAISSkullanılarak lokal bir vektör veritabanına kaydedilir (faiss_indexdosyası). Sonraki çalıştırmalarda bu hazır veritabanı kullanılır.
- PDF dosyaları proje içindeki
Proje, gelişmiş bir RAG (Retrieval-Augmented Generation) mimarisi üzerine kuruludur:
- Veri Yükleme & İşleme:
PyPDFLoaderPDF'leri yükler,RecursiveCharacterTextSplittermetinleri böler. - Vektörleştirme & Depolama:
HuggingFaceEmbeddingsmetinleri vektöre çevirir,FAISSbu vektörleri verimli arama için indeksler ve lokalde saklar. - Sorgu Anlama & Arama (Retrieval): Kullanıcının sorusu alınır.
MultiQueryRetriever, LLM (Gemini Pro) kullanarak orijinal sorudan birden fazla alt sorgu türetir. Bu alt sorgular FAISS veritabanında çalıştırılarak ilgili doküman parçaları bulunur. - Yanıt Üretme (Generation): Bulunan ilgili doküman parçaları ve orijinal kullanıcı sorusu, bir prompt şablonu ile birleştirilerek
Google Gemini Promodeline gönderilir. Model, sağlanan bağlama dayanarak nihai yanıtı üretir.
- Programlama Dili: Python
- Web Framework: Streamlit
- LLM Orkestrasyon: LangChain
- Dil Modeli (LLM): Google Gemini Pro (
langchain-google-genai) - Embedding Modeli: Hugging Face Sentence Transformers (
sentence-transformers/paraphrase-multilingual-mpnet-base-v2) - Vektör Veritabanı: FAISS (Facebook AI Similarity Search)
- PDF İşleme: PyPDF (
PyPDFLoader) - Veri Görselleştirme: Plotly
-
Depoyu Klonlayın:
git clone [https://github.com/cambulak/akbank-genai-chatbot.git](https://github.com/cambulak/akbank-genai-chatbot.git) cd akbank-genai-chatbot -
Sanal Ortam Oluşturun ve Aktifleştirin:
# Sanal ortamı oluştur (Windows/Linux/macOS) python -m venv .venv # Sanal ortamı aktifleştir # Windows PowerShell: .\.venv\Scripts\Activate.ps1 # Windows CMD: # .\.venv\Scripts\activate.bat # Linux/macOS (bash/zsh): # source .venv/bin/activate
(Not: PowerShell'de
Activate.ps1betiğini çalıştırmak için önceSet-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Processkomutunu çalıştırmanız gerekebilir.) -
Gerekli Paketleri Yükleyin:
pip install -r requirements.txt
-
API Anahtarını Güvenli Bir Şekilde Tanımlayın:
- Proje ana dizininde
.streamlitadında bir klasör oluşturun:mkdir .streamlit - Bu klasörün içine
secrets.tomladında bir dosya oluşturun. - Dosyanın içeriğini aşağıdaki gibi düzenleyin ve kendi Google API anahtarınızı (Gemini API erişimi olan) ekleyin:
# .streamlit/secrets.toml GOOGLE_API_KEY = "SIZIN_GOOGLE_API_ANAHTARINIZ"
- ÖNEMLİ:
.streamlit/klasörünün.gitignoredosyanızda olduğundan emin olun! Bu, gizli anahtarınızın yanlışlıkla Git geçmişine ve GitHub'a gönderilmesini engeller.
- Proje ana dizininde
-
PDF Dosyalarının Konumunu Kontrol Edin:
- Kullanılacak PDF dosyalarının (
Erdem & Erdem - ÇSY Terimler Sözlüğü.pdf,Borsa İstanbul - Sürdürülebilirlik Rehberi.pdf) proje ana dizinindekidata/klasöründe bulunduğundan emin olun.
- Kullanılacak PDF dosyalarının (
-
Uygulamayı Başlatın:
streamlit run app.py
- Uygulama varsayılan tarayıcınızda
http://localhost:8501adresinde açılacaktır. - Not: İlk çalıştırmada,
dataklasöründeki PDF'lerden vektör veritabanı (faiss_index) oluşturulacağı için bu işlem birkaç dakika sürebilir. Sonraki çalıştırmalar daha hızlı olacaktır.
- Uygulama varsayılan tarayıcınızda
Uygulama detayları aşağıdadır;
- Kullanım: "Sorunuzu buraya yazın..." alanına ESG veya sürdürülebilirlik ile ilgili sorunuzu yazın ve Enter'a basın.
- Yanıt: Asistan,
data/klasöründeki PDF'lere dayanarak bir yanıt üretecektir. - Kaynak Gösterimi: Üretilen yanıtın altında, bilginin hangi dokümandan ve hangi sayfa numarasından alındığına dair referanslar gösterilir (eğer LangChain tarafından bulunabildiyse).
- Örnek Sorular:
Sürdürülebilir uygulamaların artırılması şirkete hangi katkıları sağlar?Sınırda karbon düzenlemesi nedir?Paris Anlaşması nedir?Kurumsal Yönetim nedir?Karbon tutma nedir?
Uygulamanın Streamlit Cloud üzerinde yayınlanmış versiyonuna aşağıdaki linkten erişebilirsiniz:
https://akbank-genai-chatbot-h8apfoq5vnx3xrc9yavmnk.streamlit.app/
Bu proje, RAG mimarisinin belirli bir bilgi alanında (kurumsal sürdürülebilirlik) uzmanlaşmış, güvenilir ve kaynak gösterebilen yapay zekâ asistanları geliştirmede etkinliğini göstermektedir. MultiQueryRetriever kullanımı sorgu çeşitliliğini artırarak daha kapsamlı sonuçlar bulunmasına yardımcı olurken, Streamlit tabanlı çok sayfalı yapı hem sohbet arayüzünü hem de veri görselleştirmesini kullanıcı dostu bir şekilde sunmaktadır.
- Bu proje Akbank GenAI Bootcamp kapsamında hazırlanmıştır.
- Veri Kaynakları:
- Erdem & Erdem Hukuk Bürosu – ÇSY Terimler Sözlüğü
- Borsa İstanbul – Sürdürülebilirlik Rehberi
- Kullanılan Teknolojilerin Belgeleri: