Sahaf.AI / README.md
HayriTalha's picture
link eklendi
a06f3b9 verified
metadata
title: Sahaf.AI
emoji: 📚
colorFrom: red
colorTo: red
sdk: docker
app_port: 8501
tags:
  - streamlit
pinned: false
short_description: Chatbot
license: apache-2.0

Sahaf.AI

Projenin Amacı

Bu projenin amacı, RAG (Retrieval Augmented Generation) mimarisi kullanarak belirli bir bilgi kaynağı (kitap özetleri ve detayları) hakkında uzmanlaşmış bir chatbot geliştirmektir. Chatbot, kullanıcıların sorularını, sağlanan metin verilerini referans alarak yanıtlayacak ve geliştirilen bu sistem, bir web arayüzü üzerinden sunulacaktır.

Veri Seti Hakkında Bilgi

Bu projede, chatbot'un bilgi kaynağı olarak Kaggle üzerinde Muhammed İbrahim Top tarafından paylaşılan "Turkish Book Data Set" kullanılmıştır. Veri setindeki kitap açıklamaları, güçlü bir embedding modeli (BAAI/bge-m3) kullanılarak önceden işlenmiş ve bir ChromaDB vektör veritabanına dönüştürülmüştür. Bu hazır veritabanı, projenin hızlı bir şekilde çalıştırılabilmesi için depo içerisinde sunulmaktadır.

Veri Seti Künyesi

  • Veri Seti Adı: Turkish Book Data Set
  • Oluşturan: Muhammed İbrahim Top
  • Kaynak: Kaggle
  • Lisans: Apache 2.0

Kullanılan Yöntemler ve Teknolojiler

Projenin çözüm mimarisini oluşturan temel teknolojiler şunlardır:

  • Hibrit RAG Mimarisi: Proje, hibrit bir model üzerine kurulmuştur. Arama (Retrieval) işlemi yerel olarak çalışırken, cevap üretme (Generation) işlemi bulut tabanlı bir API üzerinden gerçekleştirilir.
  • LLM (Generation Model): Cevap üretimi için Google Gemini API (gemma-3-27b-it) kullanılmıştır.
  • Embedding Model: Anlamsal arama ve vektörleştirme işlemi için, yerel olarak çalışan ve yüksek performanslı BAAI/bge-m3 Hugging Face modeli tercih edilmiştir.
  • Vektör Veritabanı: ChromaDB, metin parçalarının vektör temsillerini depolamak ve verimli bir şekilde aramak için kullanılmıştır.
  • Pipeline Framework: LangChain, RAG mimarisinin tüm bileşenlerini (retriever, prompt, LLM) birbirine bağlayan ana çatı olarak görev yapmıştır.
  • Web Arayüzü: Uygulama, Streamlit kütüphanesi kullanılarak interaktif bir web arayüzüne dönüştürülmüştür.
  • Paket Yöneticisi: Projenin bağımlılıkları, modern ve hızlı bir paket yöneticisi olan uv ile yönetilmiştir.

Elde Edilen Sonuçlar

Proje sonucunda, belirlenen veri setindeki kitaplar hakkında sorulan sorulara akıcı ve doğru cevaplar üretebilen, kullanıcı dostu bir web uygulaması başarıyla geliştirilmiştir. Geliştirme sürecinde karşılaşılan API yapılandırma ve kütüphane bağımlılık sorunları, hibrit bir mimari ve belirli kütüphane versiyonlarının requirements.txt ile sabitlenmesi sayesinde aşılmıştır.

Web Uygulaması Linki

https://huggingface.co/spaces/HayriTalha/Sahaf.AI

Çalışma Kılavuzu

Bu proje, önceden oluşturulmuş veritabanı sayesinde hızlı bir şekilde çalıştırılabilir.

1. Kurulum Öncesi

  • Depoyu Klonlayın:
    git clone [https://github.com/KULLANICI_ADINIZ/Sahaf.AI.git](https://github.com/hayritalhaozkan/Sahaf.AI.git)
    cd Sahaf.AI
    
  • API Anahtarı: Projenin ana dizininde .env adında bir dosya oluşturun ve içine Google AI Studio'dan aldığınız API anahtarınızı aşağıdaki formatta ekleyin:
    GOOGLE_API_KEY="AIzaSy..."
    

2. Ortam Kurulumu

  • Sanal Ortamı Kurun (uv ile):
    # Bu komut Windows, Linux ve macOS'ta aynıdır.
    uv venv
    
  • Oluşturulan Sanal Ortamı Aktive Edin:
    • Windows (PowerShell veya CMD):
    .\.venv\Scripts\activate
    
    • Linux / macOS (Bash/Zsh):
    source .venv/bin/activate
    
  • Gerekli Kütüphaneleri Yükleyin:
    uv pip install -r requirements.txt
    

3. Uygulamayı Çalıştırma

  • Uygulamayı Başlatın: Artık hazırsınız! Veritabanı oluşturma adımlarına gerek kalmadan direkt uygulamayı çalıştırabilirsiniz.
    streamlit run app.py