Interface graphique Streamlit pour interroger un LLM local via Ollama et alimenter un système RAG (Retrieval-Augmented Generation) avec différents types de documents.
- 📤 Upload de documents multiples formats : PDF, DOCX, XLSX, TXT
- 🤖 Interrogation LLM via Ollama (modèle qwen2.5:14b)
- 🔍 4 modes de recherche :
- Naive : RAG classique, recherche simple
- Local : Entités et relations proches (1 hop)
- Global : Patterns globaux du knowledge graph
- Hybrid : Combinaison local + global (recommandé pour multi-hop)
- 📜 Historique des requêtes avec horodatage
- 🎨 Interface moderne et intuitive
# Installer Ollama (si pas déjà fait)
curl -fsSL https://ollama.com/install.sh | sh
# Lancer Ollama
ollama serve# Modèle LLM (32K context)
ollama pull qwen2.5:14b
# Modèle d'embeddings
ollama pull nomic-embed-textVérifiez votre version de Python :
python3 --versionsource venv/bin/activatepip install -r requirements.txtstreamlit run app.pyL'application s'ouvrira automatiquement dans votre navigateur par défaut à l'adresse : http://localhost:8501
-
Uploader des documents (onglet "📤 Upload Documents")
- Glissez-déposez vos fichiers PDF, DOCX, XLSX ou TXT
- Cliquez sur "🚀 Indexer les documents"
- Attendez la confirmation d'indexation
-
Interroger le RAG (onglet "💬 Interroger le RAG")
- Saisissez votre question
- Choisissez le mode de recherche (hybrid recommandé)
- Cliquez sur "🔍 Rechercher"
-
Consulter l'historique (onglet "📜 Historique")
- Visualisez toutes vos requêtes précédentes
- Consultez les réponses obtenues
CaféIA/
├── app.py # Interface Streamlit principale
├── main.py # Configuration LightRAG + Ollama
├── document_processor.py # Extraction de texte (PDF, DOCX, XLSX, TXT)
├── insert_docs.py # Script d'insertion de documents (CLI)
├── query_demo.py # Script de démonstration des requêtes (CLI)
├── requirements.txt # Dépendances Python
├── storage/ # Dossier du knowledge graph (créé automatiquement)
└── venv/ # Environnement virtuel Python
Vous pouvez modifier les paramètres dans main.py :
- Modèle LLM :
llm_model_name="qwen2.5:14b" - Context window :
llm_model_max_token_size=32768 - Parallélisme :
llm_model_max_async=2 - Dimensions embeddings :
embedding_dim=768
- Vérifiez qu'Ollama est bien lancé :
ollama serve - Vérifiez que les modèles sont téléchargés :
ollama list
- Assurez-vous que toutes les dépendances sont installées :
pip install PyPDF2 python-docx openpyxl
Si vous voulez repartir de zéro :
rm -rf storage/python insert_docs.pypython query_demo.pyLes contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.
Ce projet est fourni à titre éducatif et de démonstration.
☕ Développé avec passion pour CaféIA