Application pour générer automatiquement des questionnaires à choix multiples (QCM) à partir de textes en arabe en utilisant la technologie RAG (Retrieval Augmented Generation).
- FastAPI: Framework web rapide pour créer des API avec Python
- OpenAI API: Génération de questions intelligentes avec GPT-4o Mini
- RAG (Retrieval Augmented Generation): Technique qui améliore la génération de texte en récupérant des informations pertinentes
- FAISS: Bibliothèque pour la recherche efficace de similarité vectorielle
- Sentence Transformers: Modèles pour créer des embeddings de texte multilingues
- PyPDF2: Extraction de texte à partir de fichiers PDF
- MongoDB: Stockage persistant des QCMs générés
L'application utilise une architecture RAG (Retrieval Augmented Generation):
- Indexation: Les documents PDF sont traités et indexés avec FAISS
- Récupération: Pour une requête donnée, les passages les plus pertinents sont récupérés
- Génération: OpenAI génère des QCMs basés sur les passages récupérés
- diagram de notre architecture :

pip install -r requirements-all.txt
- Créez un fichier
.envbasé sur.env.example - Ajoutez votre clé API OpenAI:
OPENAI_API_KEY=votre-clé-api
Pour lancer l'application web:
python -m uvicorn simple_app:app --host 127.0.0.1 --port 8001
Ou utilisez le fichier batch:
run_simple_app.bat
- Téléchargement de PDF: Téléchargez un document PDF en arabe
- Indexation: Le système indexe automatiquement le contenu du PDF
- Requête: Entrez une requête ou un sujet pour générer des questions
- Génération de QCM: Le système utilise RAG pour générer des QCMs pertinents
- Sauvegarde: Les QCMs peuvent être sauvegardés dans MongoDB et exportés en JSON
simple_app.py: Application principale FastAPIarabic_diacritized_qcm_v3.py: Générateur de QCM avec support RAGembedding.py: Module pour créer et gérer les embeddings de texteretriever.py: Module pour récupérer les passages pertinentsmodels.py: Modèles de donnéesdb.py: Opérations de base de données
- Support des textes arabes avec diacritiques
- Amélioration automatique des questions générées
- Interface web réactive
- Stockage persistant des résultats
- Sélection de paragraphes spécifiques pour la génération