Construire un POC RAG de bout en bout pour recommander des évènements culturels fiables en Occitanie, via une API, avec robustesse (tests, logs) et reproductibilité.
Construire un POC RAG de bout en bout pour recommander des évènements culturels fiables en Occitanie, via une API, avec robustesse (tests, logs) et reproductibilité.
Au départ, le besoin exprimé par Jérémy (responsable technique) était très concret : "Pouvons-nous prouver rapidement qu'un assistant intelligent peut recommander des évènements culturels fiables, exploitables via API, sans lancer un grand chantier d'industrialisation ?"
La réponse du projet a été volontairement pragmatique :
Ce rapport raconte cette démarche, depuis le besoin métier jusqu'aux décisions de pilotage et aux prochaines étapes.
Organisation cible : Puls-Events, entreprise technologique orientée recommandations culturelles.
Structure projet :
Enjeux stratégiques liés à la donnée :
Maturité data & ML (forces / faiblesses) :
Forces :
accès à une source d'évènements (OpenAgenda),
Faiblesses :
qualité hétérogène des métadonnées source (notamment URLs),
Parties prenantes identifiées :
Recueil du besoin (sources utilisées) :
ressources/mission.md),ressources/livrables.md),tests/tests.py),app.py run-api, app.py api-test).Hiérarchisation des besoins (priorisation MoSCoW) :
| Niveau | Besoin | Statut projet |
|---|---|---|
| Must | Réponse RAG basée sur des sources réelles | Livre |
| Must | API REST /ask, /rebuild, /health, /metadata
|
Livre |
| Must | Reproductibilité et secrets hors code | Livre |
| Must | Tests unitaires relançables sans réseau | Livre |
| Should | Interface web simple pour profils non techniques | Livre |
| Should | Rebuild index contrôlé (token + lock) | Livre |
| Could | Évaluation avancée (RAGAS complet) | À planifier |
| Could | Personnalisation utilisateur multi-tours | Hors scope POC |
Contraintes métier, réglementaires et opérationnelles :
.env uniquement,Il n'existait pas de solution RAG industrialisée préexistante. Le projet a donc construit une solution cible progressive :
Outils et technologies :
app.py, tests pytest, conteneurisation Docker.Processus d'exploitation des données (pipeline) :
app.py build-dataset -> collecte multi-agendas + nettoyage,app.py build-index -> chunking + embeddings + index FAISS,app.py ask-local ou POST /ask -> retrieval + génération,POST /rebuild -> reload/rebuild contrôlé,app.py bootstrap -> préparation bout-en-bout.| Critère | Observation | Niveau |
|---|---|---|
| Pertinence métier | Réponses ancrées sur des évènements réels + sources | Bon |
| Fiabilité | Gestion d'erreurs API, fallback anti-hallucination, validation schema | Bon |
| Scalabilité POC | Rebuild local rapide, index persistant, cache mémoire | Correct |
| Coût | Stack open-source majoritaire, coût LLM pilotable | Bon |
| Exploitabilité | API claire + script de démo + logs + Docker | Bon |
| Évaluation qualité | Smoke eval disponible, mais coverage sémantique à approfondir | À renforcer |
Écarts et limites identifiés :
Visualisation simplifiée du flux existant/proposé :
| Approche | Avantages | Inconvénients | Décision |
|---|---|---|---|
| Recherche par mots-clés + règles | Simple, peu coûteux | Peu robuste au langage naturel | Non retenue |
| LLM seul (sans retrieval) | Réponses fluides | Risque d'invention, faible traçabilité | Non retenue |
| Fine-tuning complet | Potentiel qualitatif élevé | Coût/temps de données et entraînement | Non retenue (POC) |
| RAG (FAISS + LLM) | Équilibre fiabilité / vitesse / coût, sources explicables | Dépend de la qualité des données | Retenue |
Architecture cible retenue :
Facteurs clés de succès :
Points de vigilance :
Approche retenue : priorisation Impact métier x Effort technique.
| Cas d'usage | Impact métier | Effort | Priorité |
|---|---|---|---|
Reco d'évènements généraliste (/ask) |
Élevé | Moyen | P1 |
Supervision API (/health, /metadata) |
Élevé | Faible | P1 |
Rebuild opérationnel (/rebuild) |
Moyen/élevé | Moyen | P1 |
Interface web non technique (/app) |
Moyen | Faible | P2 |
| Évaluation avancée continue | Élevé | Moyen/élevé | P2 |
| Personnalisation utilisateur fine | Élevé | Élevé | P3 |
Cadre méthodologique : CRISP-DM adapté + itérations courtes de type Agile.
Roadmap de mise en œuvre (ce qui a été réalisé) :
Responsabilités (vision simplifiée) :
Synthèse risques / opportunités :
| Type | Élément |
|---|---|
| Opportunité | Assistant explicable et testable rapidement |
| Opportunité | Réutilisation API directe par produit/marketing |
| Risque | Qualité source hétérogène selon agendas |
| Risque | Surconfiance si métriques non enrichies |
| Risque | Coût variable si usage LLM non piloté |
Scénarios budgétaires (ordre de grandeur, 3 mois) :
KPI de succès recommandés :
KPI business :
taux d'utilisation de /ask,
KPI techniques :
latence médiane API,
Impacts et conformité dans les recommandations :
Indicateurs de suivi recommandés :
pytest),/health) et metadata index (/metadata).Fréquence et mode de reporting :
Suivi expérimentation / delivery :
app.py pour standardiser les exécutions,logs/) pour diagnostics,reports/smoke_eval_report.json) pour comparaison rapide,tests/tests.py).Gestion projet & collaboration :
J+30 :
J+60 :
J+90 :
Le projet a transformé un besoin métier clair - recommander vite et fiable des évènements culturels - en un POC RAG complet, testable et exploitable via API. Le choix technique est cohérent avec le niveau de maturité visé : robuste, explicable, reproductible. La principale limite n'est pas l'architecture, mais la qualité hétérogène de certaines données source ; c'est donc le premier levier d'amélioration pour maximiser la valeur business lors du passage à l'échelle.
Des projets data concrets, expliqués clairement, avec le code et les résultats disponibles.
© 2026. A HTML5 UP fork for Nikola by Stephane Manet
+ + =