Dayende/rag-administration-bf
1
Assistant IA pour l'Administration du Burkina Faso
Ce projet est un assistant basé sur une architecture RAG (Retrieval-Augmented Generation) pour répondre aux questions des usagers sur les démarches administratives au Burkina Faso.
🚀 Technologies utilisées
- Python
- Gradio : Pour l'interface web.
- Hugging Face Transformers : Pour le modèle de génération de texte (Qwen/Qwen2-1.5B-Instruct).
- Sentence-Transformers : Pour la création des embeddings (intfloat/multilingual-e5-base).
- Qdrant : Comme base de données vectorielle.
- Docker : Pour la conteneurisation de l'application.
⚙️ Installation
- Clonez le dépôt :
git clone https://huggingface.co/spaces/datasciencetoolkit/rag-administration-bf
cd rag-administration-bf- Installez les dépendances :
pip install -r requirements.txt▶️ Utilisation
- Indexez les données : Avant de lancer l'application, vous devez créer la base de données vectorielle en exécutant le script suivant :
python index_db.py Ce script va lire les documents dans data/corpus.json, générer les embeddings et les stocker dans Qdrant. Le tout sera sauvegardé dans le dossier qdrant_data.
- Lancez l'application :
python app.py- Accédez à l'interface : Ouvrez votre navigateur et allez à l'adresse
http://localhost:7860.
🐳 Utilisation avec Docker
Vous pouvez également construire et lancer l'application avec Docker :
docker build -t rag-admin-bf .
docker run -p 7860:7860 rag-admin-bf📁 Structure du projet
app.py: Point d'entrée de l'application Gradio.index_db.py: Script pour l'indexation des données dans Qdrant.requirements.txt: Liste des dépendances Python.Dockerfile: Pour construire l'image Docker de l'application.data/: Contient les données brutes.corpus.json: Le corpus de documents sur les démarches administratives.src/rag/: Contient le coeur de l'architecture RAG.embedder.py: Gère la création des embeddings pour les documents et les requêtes.generator.py: Gère la génération de la réponse à partir du contexte et de la question.retriever.py: Gère la recherche des documents pertinents dans la base de données vectorielle.vector_store.py: Gère les interactions avec la base de données vectorielle Qdrant.
🤔 Comment ça marche ?
L'application suit une architecture RAG (Retrieval-Augmented Generation) :
- Indexation (`index_db.py`):
- Les documents du
corpus.jsonsont chargés. - Pour chaque document, un embedding est créé en utilisant le modèle
intfloat/multilingual-e5-base. - Les embeddings et les métadonnées des documents sont stockés dans une base de données vectorielle Qdrant.
- Requête de l'utilisateur (`app.py`):
- L'utilisateur pose une question via l'interface Gradio.
- La question est transformée en embedding avec le même modèle
intfloat/multilingual-e5-base. - Cet embedding est utilisé pour rechercher les documents les plus similaires dans Qdrant (
retriever.py). - Les documents pertinents sont récupérés et servent de contexte.
- Le modèle
Qwen/Qwen2-1.5B-Instructgénère une réponse en se basant sur la question de l'utilisateur et le contexte fourni (generator.py). - La réponse est affichée à l'utilisateur.
