Système RAG pour la recommandation d'événements culturels
Python, RAG, LangChain, FAISS, Mistral AI, FastAPI, Docker, Generative AI, NLP, Ragas
Système RAG pour la recommandation d'événements culturels
Contexte
Dans le cadre d'un projet d'IA générative, j'ai développé un Proof of Concept (POC) de système Retrieval-Augmented Generation (RAG) permettant de répondre à des questions en langage naturel sur des événements culturels. Le système combine une recherche sémantique dans une base vectorielle avec un Large Language Model (LLM) afin de générer des réponses contextualisées et fiables.
Objectifs
- Construire une chaîne RAG complète.
- Collecter et indexer les événements issus de l'API OpenAgenda.
- Mettre en place une recherche sémantique avec FAISS.
- Générer des réponses contextualisées avec un LLM.
- Exposer le système via une API REST.
- Évaluer automatiquement la qualité des réponses générées.
Architecture
API OpenAgenda
│
▼
Prétraitement des données
│
▼
Découpage en chunks
│
▼
Embeddings
(Hugging Face)
│
▼
Base vectorielle FAISS
│
▼
LangChain
│
▼
LLM Mistral
│
▼
FastAPI
│
▼
Client
Technologies utilisées
- Python
- LangChain
- FAISS
- Hugging Face Embeddings
- Mistral AI
- FastAPI
- Docker
- Pandas
- Ragas
- Pytest
Réalisations
Collecte et préparation des données
- Récupération des événements via l'API OpenAgenda.
- Nettoyage et structuration des données.
- Filtrage par période et localisation.
- Découpage des documents en chunks.
- Conservation des métadonnées (date, lieu, catégorie, description).
Recherche vectorielle
- Génération des embeddings avec un modèle Hugging Face.
- Construction d'un index vectoriel FAISS.
- Recherche sémantique par similarité.
- Reconstruction automatique de l'index.
Génération augmentée (RAG)
- Orchestration de la chaîne RAG avec LangChain.
- Recherche des documents pertinents.
- Injection du contexte dans le prompt.
- Génération de réponses avec Mistral.
- Réponses contextualisées et basées sur les événements indexés.
API REST
Développement d'une API avec FastAPI comprenant :
- endpoint
/ask - endpoint
/rebuild - documentation Swagger/OpenAPI
- validation des requêtes
- gestion des erreurs
Évaluation
Mise en place d'une stratégie d'évaluation du système :
- jeu de questions annotées
- tests unitaires
- automatisation des évaluations
- métriques avec Ragas
- analyse de la pertinence et de la fidélité des réponses
Conteneurisation
- Dockerfile
- Déploiement local
- Reproductibilité de l'environnement
- Démonstration complète via conteneur Docker
Compétences démontrées
IA Générative
- Retrieval-Augmented Generation (RAG)
- Prompt Engineering
- LLM
- Context Augmentation
NLP
- Embeddings
- Recherche sémantique
- Découpage de documents
- Similarité vectorielle
Développement Backend
- FastAPI
- REST API
- Swagger / OpenAPI
- Validation des requêtes
Data Engineering
- Collecte de données via API
- Prétraitement
- Gestion des métadonnées
- Indexation vectorielle
MLOps
- Docker
- Tests automatisés
- Évaluation de systèmes RAG
- Reproductibilité
- Industrialisation d'un POC IA
Résultat
Ce projet m'a permis de concevoir un système RAG complet, depuis la collecte des données jusqu'à la génération de réponses augmentées par un LLM. Il illustre l'intégration de technologies modernes telles que LangChain, FAISS, FastAPI et Docker, tout en mettant en œuvre une démarche d'évaluation des performances grâce à Ragas afin de garantir la qualité des réponses générées.
Compétences acquises
- Python
- LangChain
- RAG
- FAISS
- Mistral AI
- Hugging Face Embeddings
- FastAPI
- Docker
- REST API
- Prompt Engineering
- Vector Database
- Semantic Search
- NLP
- Ragas
- Pytest
- OpenAPI
- Data Engineering
- Generative AI