CoolFace
Apppublic

Dayende/rag-administration-bf

sourceHugging Faceupdated 11mo agoView on Hugging Face
1likes
App README

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

  1. 1.Clonez le dépôt :
bash
    git clone https://huggingface.co/spaces/datasciencetoolkit/rag-administration-bf
    cd rag-administration-bf
  1. 1.Installez les dépendances :
bash
    pip install -r requirements.txt

▶️ Utilisation

  1. 1.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 :
bash
    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.

  1. 1.Lancez l'application :
bash
    python app.py
  1. 1.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 :

bash
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) :

  1. 1.Indexation (`index_db.py`):
  2. 2.Les documents du corpus.json sont chargés.
  3. 3.Pour chaque document, un embedding est créé en utilisant le modèle intfloat/multilingual-e5-base.
  4. 4.Les embeddings et les métadonnées des documents sont stockés dans une base de données vectorielle Qdrant.
  1. 1.Requête de l'utilisateur (`app.py`):
  2. 2.L'utilisateur pose une question via l'interface Gradio.
  3. 3.La question est transformée en embedding avec le même modèle intfloat/multilingual-e5-base.
  4. 4.Cet embedding est utilisé pour rechercher les documents les plus similaires dans Qdrant (retriever.py).
  5. 5.Les documents pertinents sont récupérés et servent de contexte.
  6. 6.Le modèle Qwen/Qwen2-1.5B-Instruct génère une réponse en se basant sur la question de l'utilisateur et le contexte fourni (generator.py).
  7. 7.La réponse est affichée à l'utilisateur.