MissRAG est une application de Retrieval-Augmented Generation (RAG) minimaliste et puissante, construite avec Mistral AI, LangChain et MongoDB Atlas.
Elle permet de discuter avec vos propres documents PDF. L'application ingère un fichier PDF, le transforme en vecteurs (embeddings), et utilise un modèle de langage Mistral pour répondre à vos questions en se basant sur le contenu du document.
- � Multi-PDF & Incrémental : Charge automatiquement tous les fichiers PDF du dossier
pdf/. Le script détecte les nouveaux fichiers et ne traite que ceux qui ne sont pas encore dans la base (économie de temps et de crédits API). - ✂️ Découpage Intelligent : Utilise
RecursiveCharacterTextSplitterpour découper le texte en morceaux cohérents. - 🔢 Embeddings Mistral : Utilise le modèle
mistral-embedvia l'API officielle Mistral pour vectoriser le texte. - ☁️ Base Vectorielle Cloud : Stocke les vecteurs avec MongoDB Atlas Vector Search pour une architecture scalable et cloud-native.
- 🤖 Chat IA : Utilise le LLM
mistral-small-latestpour générer des réponses précises basées sur le contexte retrouvé. - 🛡️ Configuration Robuste : Utilise Pydantic pour la validation de la configuration et la gestion des erreurs.
- Python 3.13 (Recommandé)
- uv (Gestionnaire de paquets ultra-rapide)
- Une clé API Mistral AI (disponible sur console.mistral.ai)
- Un cluster MongoDB Atlas (le tier gratuit M0 suffit)
-
Cloner le projet (si ce n'est pas déjà fait) :
git clone <votre-repo> cd missrag
-
Installer les dépendances : Ce projet utilise
uvpour la gestion des dépendances.uv sync
Ou manuellement si vous n'avez pas le fichier lock :
uv add langchain langchain-mistralai langchain-mongodb pymongo langchain-text-splitters pydantic python-dotenv pypdf langchain-community
-
Créer le fichier
.envà la racine du projet :touch .env
-
Ajouter votre clé API Mistral dans le fichier
.env:MISTRAL_API_KEY=votre_cle_api_mistral... MONGODB_ATLAS_Cluster_URI=mongodb+srv://user:pass@cluster.mongodb.net/?...
-
Créer l'Index Vectoriel sur Atlas (
⚠️ Étape Obligatoire) :- Connectez-vous à votre cluster MongoDB Atlas.
- Allez dans l'onglet "Atlas Search" (ou "Vector Search").
- Créez un nouvel index nommé
vector_index. - Choisissez "JSON Editor" et collez la configuration suivante :
{ "fields": [ { "numDimensions": 1024, "path": "embedding", "similarity": "cosine", "type": "vector" } ] } - Note : Sélectionnez bien la database
missrag_dbet la collectionrag_collection.
Note sur le Reset :
Si vous souhaitez vider la base de données pour repartir de zéro, vous pouvez passer l'option reset_db=True dans la configuration RagConfig (dans main.py).
-
Ajouter des documents : Placez vos fichiers PDF (par exemple
these.pdf,guide.pdf) dans le dossierpdf/. L'application scannera ce dossier et n'ajoutera que les fichiers qui ne sont pas encore indexés. -
Lancer l'application :
uv run main.py
(Assurez-vous que votre environnement virtuel est activé si vous passez par la commande python main.py)
-
Poser des questions : Le script exécutera des questions de test définies à la fin du fichier
main.py. Vous pouvez modifier ces appelsask("Votre question ?")directement dans le code pour interroger votre base de connaissances.
missrag/
├── .env # Variables d'environnement (Clé API)
├── .python-version # Version Python fixée (3.13)
├── main.py # Code principal de l'application
├── pdf/ # Dossier contenant vos documents sources
│ └── document.pdf
├── pyproject.toml # Configuration du projet et dépendances
└── README.md # Documentation
- Langage : Python 3.13
- Orchestration : LangChain
- LLM & Embeddings : Mistral AI
- Vector Store : MongoDB Atlas Vector Search
- Validation : Pydantic