Projet formation IA

Assistant RAG pour événements locaux : ingestion open data, recherche vectorielle et API démontrable

Projet de formation centré sur la construction d'un système RAG local capable de répondre à des questions sur des événements en Île-de-France, avec pipeline d'ingestion, indexation FAISS, génération via LLM local et exposition par API.
Projet OpenClassrooms
RAG
API + évaluation

Fil directeur

Construire un assistant factuel, traçable et démontrable à partir de données ouvertes

Chaîne technique

Ingestion OpenDataSoft, embeddings Ollama, FAISS, FastAPI, Gradio et Docker

Qualité

Tests automatisés, jeu annoté et métriques RAGAS pour lire les limites du POC

Détail

Lecture du projet

La fiche présente le pipeline RAG, les choix techniques structurants, les garde-fous de génération et la logique d'évaluation du système.

Résumé

01

Le projet vise à construire un assistant capable de répondre de manière factuelle à des questions sur des événements locaux à partir de données ouvertes. Le coeur de la démarche consiste à relier un pipeline de données propre, une recherche vectorielle locale et une génération encadrée pour produire des réponses exploitables et justifiables.

Problème adressé

02

Pour un usage métier, un assistant d'information sur des événements doit rester fiable sur des éléments concrets comme la date, le lieu, le prix ou la réservation. Le projet se concentre donc sur un RAG contraint par le contexte, avec obligation de ne pas inventer ce qui n'est pas présent dans les données récupérées.

Ingestion et normalisation des données

03

Le pipeline récupère les événements depuis OpenDataSoft ou OpenAgenda sous forme d'export Parquet, applique un filtrage métier sur la zone et la période, puis normalise les enregistrements dans un format homogène. L'usage d'un modèle Pydantic permet d'absorber l'hétérogénéité des champs tout en gardant une chaîne robuste face aux données mal formées ou incomplètes.

Indexation vectorielle locale

04

Les événements normalisés sont transformés en documents puis découpés en chunks avant calcul des embeddings. Le choix d'un index FAISS local, associé à des embeddings Ollama et à une persistance maîtrisée, permet de garder un système démontrable en local, reproductible et lisible sur le plan technique.

Moteur RAG et garde-fous

05

Le moteur applicatif orchestre récupération des meilleurs contextes puis génération de réponse à partir d'un prompt explicitement contraint. La réponse doit rester concise, datée lorsque nécessaire, et déclarer qu'elle ne sait pas lorsque l'information n'est pas présente dans les contextes récupérés.

API FastAPI et démonstration locale

06

Le projet expose des endpoints cohérents avec les besoins du POC, notamment pour vérifier la santé du système, poser une question, relancer la récupération des données et reconstruire l'index. Une interface Gradio complète l'ensemble pour offrir une démonstration simple sans dépendre d'un frontend plus lourd.

Tests et évaluation RAG

07

Le travail ne s'arrête pas au prototype fonctionnel. Le dépôt comprend des tests automatisés couvrant récupération, indexation, moteur RAG, API et performances, ainsi qu'un jeu annoté et une évaluation RAGAS. Cette combinaison permet de distinguer la robustesse logicielle du système et la qualité réelle des réponses générées.

Lecture des résultats

08

Les métriques RAGAS montrent une bonne fidélité au contexte et un niveau correct de précision et de rappel sur les contextes récupérés, mais une pertinence de réponse encore perfectible. Le projet est donc intéressant parce qu'il expose clairement son axe principal d'amélioration au lieu de masquer ses limites derrière une simple démonstration.

Conteneurisation et CI

09

Le système est conçu pour être lancé localement en conteneur, avec API et interface pilotées dans une même image pour simplifier la démonstration. Une pipeline GitLab CI complète l'ensemble avec lint, tests, build et déploiement, ce qui donne au POC une base d'industrialisation minimale mais défendable.

Limites assumées

10

Le système reste sensible à la qualité du dataset public, aux choix de chunking, à la valeur de k et à la disponibilité d'Ollama local. Les performances relevées sur environnement mocké ne doivent pas être lues comme des garanties de production, et la pertinence de réponse reste le principal point à améliorer.