Projet IA
RAG against the machine
Un assistant qui répond aux questions sur le code de vLLM : recherche hybride (BM25 + FAISS), re-ranking, réponse sourcée par un LLM local, et qualité mesurée : 89 % de recall@5 sur la doc, 82 % sur le code.
Le projet
vLLM est un grand projet open source qui sert à faire tourner des modèles de langage. Son code et sa documentation sont énormes. Le but : poser une question en langage naturel et obtenir une réponse juste, avec les fichiers sources qui la prouvent.
C’est un RAG (Retrieval-Augmented Generation) : avant de répondre, le système cherche les bons passages, puis un LLM rédige la réponse à partir de ces passages seulement. Projet de l’École 42.
Comment ça marche
- Indexation : chaque fichier du dépôt est découpé en morceaux, en respectant la structure du code. Chaque morceau garde sa position exacte dans le fichier d’origine.
- Recherche hybride : deux recherches en parallèle. BM25 trouve les mots exacts (un nom de fonction, par exemple) et FAISS trouve le sens, même avec d’autres mots.
- Re-ranking : un second modèle (un cross-encoder) relit les meilleurs candidats et les reclasse. Les passages qui contiennent un identifiant cité dans la question remontent.
- Réponse : un petit LLM local (Qwen3, 0,6 milliard de paramètres) rédige la réponse à partir de ces passages seulement.
- Évaluation : une commande mesure la qualité de la recherche sur des questions dont on connaît la bonne réponse.
Tout tourne en local, sans service externe.
Les résultats
Mesuré sur 100 questions par jeu de test : le bon passage est dans les 5 premiers résultats (recall@5) pour 89 % des questions sur la documentation (80 % demandés) et 82 % des questions sur le code (50 % demandés). La recherche prend environ 0,6 s par question.
Ce que j’ai appris
- Mesurer avant d’optimiser. Le plus gros gain est venu d’un bug de position : les morceaux n’étaient pas situés exactement dans le fichier d’origine. Le corriger a fait passer le recall du code d’environ 62 % à 82 %.
- Nettoyer les données compte autant que le modèle. Un dossier de dépendances C++ faisait plus de 60 % du corpus et noyait les résultats.
- Le même moteur de recherche sert aujourd’hui à l’agent de ce portfolio, pour répondre aux questions sur moi.