Un assistant intelligent basé sur RAG (Retrieval-Augmented Generation) pour le support IT, déployé en production avec MLOps
L'Assistant RAG IT Support est une solution d'intelligence artificielle conçue pour améliorer l'efficacité des équipes support IT. Il permet de :
- Répondre rapidement aux questions récurrentes
- Guider les techniciens lors d'incidents
- Standardiser les procédures IT
- Réduire le temps de résolution des tickets
- Capitaliser sur la connaissance interne
Le système exploite un PDF de procédures IT comme source de connaissance et utilise le RAG pour générer des réponses contextuelles précises.
IT-Support-RAG-Assistant/
├── app/
│ ├── models/
│ │ ├── queries_model.py
│ │ └── users_model.py
│ ├── schemas/
│ │ ├── queries_schema.py
│ │ └── users_schema.py
│ ├── services/
│ │ ├── kmeans_service.py
│ │ ├── auth.py
│ │ ├── database.py
│ │ └── main.py
│ ├── cluster/
│ └── data/
├── mlflow/
│ └── mlflow.py
├── tests/
│ ├── integration/
│ │ ├── test_api_endpoints.py
│ │ └── test_full_pipeline.py
│ ├── test_loading.py
│ ├── test_query.py
│ ├── test_rag_pipeline.py
│ └── conftest.py
├── utils/
│ ├── embedding.py
│ ├── pdf_loading.py
│ └── text_splitter.py
├── k8s/
│ ├── namespace.yaml
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── configmap.yaml
│ └── secrets.yaml
├── .github/
│ └── workflows/
│ └── ci-cd.yml
├── docs/
│ ├── architecture.md
│ ├── api.md
│ └── deployment.md
├── Dockerfile
├── Dockerfile.dev
├── docker-compose.yml
├── requirements.txt
├── .env
├── .gitignore
└── README.md
┌─────────────────────────────────────────────────────────┐
│ Utilisateurs IT │
└───────────────────────┬─────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Backend FastAPI (Auth JWT) │
│ Endpoints: /auth/login, /query, /history, /health │
└───────────────────────┬─────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ PostgreSQL │ │ RAG Engine │ │ MLflow │
│ Database │ │ (LangChain) │ │ Tracking │
│ │ │ │ │ │
│ - Users │ │ - Retriever │ │ - Metrics │
│ - Queries │ │ - LLM │ │ - Artifacts │
│ - Clusters │ │ - ChromaDB │ │ - Registry │
└──────────────┘ └──────────────┘ └──────────────┘
│
▼
┌──────────────┐
│ Vector DB │
│ (ChromaDB) │
│ │
│ - Embeddings │
│ - Metadata │
└──────────────┘
User Question → Embedding → Vector Search → Context Retrieval
↓
Response ← LLM Generation ← Prompt + Context ← Top-K Chunks
- Système JWT pour l'authentification
- Gestion des utilisateurs avec comptes activables/désactivables
- Mots de passe hashés (bcrypt)
- Ingestion de PDF : Extraction et chunking intelligent du contenu
- Embeddings : Génération via HuggingFace (modèle open-source)
- Recherche sémantique : ChromaDB pour la similarité vectorielle
- Génération : LLM (Gemini/HuggingFace) avec prompts contrôlés
- Contextualisation : Réponses basées uniquement sur le contenu du PDF
- Clustering des questions : KMeans sur les embeddings
- Analyse des tendances : Identification des sujets fréquents
- Métriques de qualité : Score de similarité, latence
- MLflow Tracking : Traçage des expérimentations
- MLflow Registry : Versionnement des modèles
- Historique complet : Questions, réponses, latences, clusters
- Audit trail : Traçabilité de tous les usages
- API RESTful : Documentation Swagger automatique
- Containerisation : Docker & Docker Compose
- Orchestration : Kubernetes avec Lens Desktop
- CI/CD : GitHub Actions (tests, lint, build, deploy)
- Health checks : Endpoint de monitoring
- FastAPI : Framework web moderne et performant
- PostgreSQL : Base de données relationnelle
- SQLAlchemy : ORM Python
- JWT : Authentification stateless
- Pydantic : Validation des données
- LangChain : Framework RAG
- HuggingFace Transformers : Modèles d'embeddings
- ChromaDB : Base de données vectorielle
- Gemini / HuggingFace : LLM pour la génération
- scikit-learn : Clustering (KMeans)
- MLflow : Tracking & Registry
- PyPDFLoader : Extraction de PDF
- Docker : Containerisation
- Kubernetes : Orchestration
- Lens Desktop : Interface K8s
- GitHub Actions : CI/CD
- Docker Compose : Orchestration locale
- kubectl : CLI Kubernetes
- Minikube : Cluster local
git clonehttps://github.com/elhidarinouhayla/IT-Support-RAG-Assistant.git
cd IT-Support-RAG-Assistant# Créer l'environnement
python -m venv venv
# Activer l'environnement
# Linux/Mac
source venv/bin/activate
# Windows
venv\Scripts\activate# Installation complète
pip install -r requirements.txtPlacer votre PDF de support IT dans le dossier data/ :
mkdir -p data/pdf
cp votre-manuel-it.pdf data/pdf/support_it.pdf# Démarrer tous les services
docker-compose up -d
# Vérifier les logs
docker-compose logs -f
# Services disponibles :
# - API FastAPI : http://localhost:8000
# - MLflow UI : http://localhost:5000
# - PostgreSQL : localhost:5432# Terminal 1 : PostgreSQL (via Docker)
docker run -d \
--name postgres-rag \
-e POSTGRES_PASSWORD=password \
-e POSTGRES_DB=rag_it_assistant \
-p 5432:5432 \
postgres:15
# Terminal 2 : MLflow
mlflow server --host 0.0.0.0 --port 5000
# Terminal 3 : FastAPI
uvicorn app.main:app --reloadChaque requête est trackée automatiquement avec :
-
Paramètres :
- Modèle LLM utilisé
- Température
- Nombre de chunks récupérés (top_k)
- Configuration du retriever
-
Métriques :
- Latence de la requête (ms)
-
Artifacts :
- Question posée
- Réponse générée
- Chunks contextuels utilisés
- Prompt complet
Le workflow .github/workflows/ci-cd.yml automatise :
jobs:
test:
- Lint (flake8, black)
- Tests unitaires (pytest)
- Coverage report build:
- Build Docker image
- Tag avec version
- Push vers registry# Démarrer Minikube
minikube start --cpus=4 --memory=8192
# Vérifier le cluster
kubectl cluster-info# Namespace
kubectl create namespace rag-it-assistant
# ConfigMap pour les variables
kubectl create configmap rag-config \
--from-env-file=.env \
-n rag-it-assistant
# Secret pour les credentials
kubectl create secret generic rag-secrets \
--from-literal=database-url=$DATABASE_URL \
--from-literal=secret-key=$SECRET_KEY \
-n rag-it-assistant# Exécuter tous les tests
pytest