Bu depo, Dungeons and Dragons (DnD) ile ilgili soruları yanıtlamak için Retrieval-Augmented Generation (RAG) ve Mistral dil modelini kullanan bir Streamlit tabanlı sohbet uygulamasının implementasyonunu içerir.
- Python 3.9 veya daha üstü
- Streamlit
-
Depoyu klonlayın:
git clone https://github.com/kullanici-adi/dnd-rag.git cd dnd-rag
-
Sanal bir ortam oluşturun ve etkinleştirin:
python -m venv venv source venv/bin/activate # Windows için `venv\Scripts\activate` kullanın
-
Gerekli paketleri yükleyin
-
PDF belgelerinizi kodda belirtilen dizine indirin, örneğin
C:\Users\ataka\OneDrive\Desktop\HomeREG\Dnd-RAG
.
Streamlit uygulamasını başlatmak için:
streamlit run dnd-rag.py
- Uygulama belirtilen dizinden PDF belgelerini yükler ve yönetilebilir parçalara böler.
- Bu parçalar Chroma vektör deposu ve Ollama gömmeleri kullanılarak gömülür ve saklanır.
- Bir kullanıcı sorgu gönderdiğinde, uygulama sorgunun birden çok varyasyonunu oluşturmak için Mistral dil modelini kullanır.
- Bu sorgu varyasyonları, vektör deposundan en ilgili belge parçalarını geri getirmeye yardımcı olur.
- Geri getirilen parçalar kullanıcının sorgusuna yanıt oluşturmak için kullanılır.
Bu fonksiyon:
- Belirtilen dizinden PDF belgelerini yükler.
- Yüklenen belgeleri
RecursiveCharacterTextSplitter
kullanarak parçalara böler. - Belge parçalarını gömer ve bunları bir Chroma vektör veritabanında saklar.
Bu fonksiyon:
- Mistral dil modelini başlatır.
- Sorgunun birden çok varyasyonunu oluşturmak için bir şablon tanımlar.
- Sorgu varyasyonlarına dayalı en ilgili belge parçalarını geri getirmek için bir
MultiQueryRetriever
kullanır. - Bağlam ve sorguyu biçimlendirmek için bir zincir kullanır ve Mistral dil modelini kullanarak bir yanıt oluşturur.
- Bir başlık ve kullanıcı sorgusu için bir giriş alanı görüntüler.
- Gönderim üzerine,
get_llm_response()
fonksiyonunu çağırır ve yanıtı görüntüler.