← Retour aux projets

Projet freelance · Micro-entreprise · Python · IA locale

Comprendre un RAG en le construisant.

Python · FastAPIRecherche vectorielleExécution localeDéveloppé pour une entreprise

Un assistant local répond à des questions sur un PDF en recherchant les passages pertinents avant d’envoyer le contexte à un modèle GGUF local.

Interface du Local RAG Assistant montrant une réponse sourcée depuis document.pdfUne question, une réponse locale, une source vérifiable.

Le flux RAG

Chaque étape est visible dans le code : le document est extrait, découpé, vectorisé puis recherché. Les passages sélectionnés sont formatés dans un contexte avant l’appel au modèle local.

  1. Extraire les pages du PDF avec PyMuPDF.
  2. Découper le texte avec une taille et un chevauchement contrôlés.
  3. Créer les embeddings et les conserver dans ChromaDB.
  4. Rechercher les candidats puis appliquer une sélection MMR.
  5. Construire le prompt et générer une réponse sourcée avec llama.cpp.

Le travail réalisé

J’ai étudié le fonctionnement du retrieval augmented generation, puis écrit l’orchestration qui relie extraction, chunking, embeddings, recherche, contexte et génération.

Stack : Python · FastAPI · PyMuPDF · ChromaDB · sentence-transformers · llama.cpp · GGUF · CUDA · HTML/JavaScript.

Les bibliothèques gèrent leurs responsabilités propres, j’ai écrit l’enchaînement du pipeline.

Architecture locale

Schéma de l’architecture locale du Local RAG Assistant avec interface web, FastAPI, ChromaDB et modèle GGUF

Le navigateur appelle FastAPI, l’API lit le document, interroge ChromaDB et envoie le contexte à llama.cpp, sans service distant.

Voir le projet travailler

La vidéo suit l’ingestion, l’indexation, la recherche vectorielle, la génération locale et la réponse sourcée.

Résumé textuel

La démonstration suit un PDF local depuis son extraction et son découpage jusqu’à la recherche vectorielle, la sélection MMR, l’appel au modèle GGUF et l’affichage des passages sources.

Limites

Ce POC est conçu pour un usage local : il ne fournit pas d’authentification, dépend d’un modèle GGUF obtenu séparément et n’est pas destiné à être exposé directement sur Internet. La qualité dépend du document, du modèle et des réglages de génération.