Auteur : MOKEMI TCHAKOUTE BAUTREL Duval
Date : Mars 2026
DocuChat-RAG est un assistant conversationnel intelligent basΓ© sur la gΓ©nΓ©ration augmentΓ©e par la recherche (RAG), conΓ§u pour rΓ©pondre aux questions en utilisant exclusivement vos documents personnels. Contrairement aux chatbots gΓ©nΓ©ralistes qui peuvent produire des rΓ©ponses erronΓ©es ou spΓ©culatives, cet assistant est contraint de rΓ©pondre uniquement Γ partir des documents indexΓ©s, ce qui le rend parfaitement adaptΓ© aux applications spΓ©cifiques Γ un domaine ou soumises Γ des exigences de conformitΓ©.
Le système renforce la fiabilité grÒce à :
Les utilisateurs peuvent interagir avec le chatbot via une interface de ligne de commande (CLI) simple et intuitive.
Cette publication fournit des instructions complètes sur l'architecture, le fonctionnement et la gestion du système de chatbot basé sur RAG. Elle détaille tous les composants essentiels :
Outre la description de l'architecture, ce document inclut des instructions pour exécuter l'application, les options de configuration et un jeu de données de test pour valider le comportement du système. Il présente également les limites actuelles et les axes d'amélioration futurs.
L'ensemble de donnΓ©es utilisΓ© pour cette application est une collection de 7 documents textuels soigneusement sΓ©lectionnΓ©s, couvrant des thΓ©matiques variΓ©es et actuelles :
| Fichier | ThΓ©matique | Contenu principal |
|---|---|---|
artificial_intelligence.txt | Intelligence Artificielle | Principes de l'IA, Machine Learning, Deep Learning, NLP, Γthique de l'IA |
biotechnology.txt | Biotechnologie | CRISPR, Biologie synthΓ©tique, MΓ©decine personnalisΓ©e, MΓ©decine rΓ©gΓ©nΓ©rative, BioΓ©thique |
climate_science.txt | Sciences du Climat | Changement climatique, Effet de serre, Impacts Γ©cologiques, Γnergies renouvelables, Adaptation |
quantum_computing.txt | Informatique Quantique | Principes quantiques (superposition, intrication), Algorithmes quantiques, MatΓ©riel quantique, Applications |
space_exploration.txt | Exploration Spatiale | Système solaire, Exploration martienne, Station spatiale internationale, Futur du voyage spatial, Exoplanètes |
sustainable_energy.txt | Γnergies Durables | Γnergie solaire, Γnergie Γ©olienne, Stockage d'Γ©nergie, RΓ©seaux intelligents, HydrogΓ¨ne vert |
sample_documents.txt | Science des DonnΓ©es | MΓ©thodologie data science, Feature engineering, Γvaluation de modΓ¨les, MLOps, Visualisation |
Ces fichiers forment ensemble une base de connaissances encyclopΓ©dique et pluridisciplinaire, permettant Γ l'assistant de rΓ©pondre Γ des questions variΓ©es dans des domaines scientifiques et technologiques de pointe.
| Composant | Technologie | RΓ΄le |
|---|---|---|
| Langage | Python 3.9+ | Langage de programmation principal |
| Vector Database | ChromaDB | Stockage et recherche sΓ©mantique |
| Embeddings | Sentence Transformers (all-MiniLM-L6-v2) | Conversion texte β vecteurs 384 dimensions |
| LLM | OpenAI / Groq / Gemini | GΓ©nΓ©ration des rΓ©ponses |
| Framework | LangChain | Orchestration RAG et gestion mΓ©moire |
| Interface | CLI (Python) | Interaction en ligne de commande |
βββββββββββββββββββββββββββββββ
β USER β
β Ask a Question β
ββββββββββββββββ¬βββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββ
β QUERY EMBEDDING β
β Sentence Transformers β
β (all-MiniLM-L6-v2) β
ββββββββββββββββ¬βββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββ
β VECTOR SEARCH β
β ChromaDB β
β Top-K Semantic Retrieval β
ββββββββββββββββ¬βββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββ
β RETRIEVED DOCUMENTS β
β Relevant Chunks β
β (chunk_size=500, overlap=50)β
ββββββββββββββββ¬βββββββββββββββ
β
ββββββββββββββββββ΄βββββββββββββββββ
βΌ βΌ
βββββββββββββββββββββββββ βββββββββββββββββββββββββββ
β CONVERSATION MEMORY β β PROMPT β
β β β CONSTRUCTION β
β Windowed Memory (5) β β Context + Question β
β JSON Chat History β β Memory + Instructions β
βββββββββββββββ¬ββββββββββ ββββββββββββββββ¬βββββββββββ
β β
ββββββββββββββββ¬ββββββββββββββββββββ
βΌ
βββββββββββββββββββββββββββ
β LLM β
β OpenAI / Groq / Geminiβ
β Grounded Generation β
βββββββββββββββ¬ββββββββββββ
β
βΌ
βββββββββββββββββββββββ
β FINAL ANSWER β
β Grounded Response β
βββββββββββββββββββββββ
| Composant | Description |
|---|---|
| RAGAssistant | Classe principale qui orchestre le flux de requΓͺtes de bout en bout |
| VectorDB | Gère l'ingestion, le chunking et la recherche sémantique via ChromaDB |
| WindowedFileChatHistory | MΓ©moire personnalisΓ©e : fenΓͺtre des 5 derniers Γ©changes + persistance JSON |
| Multi-LLM Support | Intégration de modèles multi-fournisseurs (OpenAI, Groq, Gemini) |
| Prompt Template | Template structurΓ© avec contraintes de prΓ©vention des hallucinations |
| CLI Interface | Interface en ligne de commande pour les tests interactifs |
Au démarrage de l'application, le système charge automatiquement tous les documents .txt présents dans le répertoire data/.
Pipeline d'ingestion :
RecursiveCharacterTextSplitter (chunk_size=500, overlap=50)all-MiniLM-L6-v2
La recherche documentaire utilise la similaritΓ© cosinus avec indexation HNSW (Hierarchical Navigable Small World) pour une recherche instantanΓ©e.
| Paramètre | Valeur | Rôle |
|---|---|---|
| top_k | 3 | Nombre de chunks les plus pertinents Γ retourner |
| distance_threshold | 0.5 | Seuil de distance maximale pour validation |
L'application implΓ©mente une mΓ©moire personnalisΓ©e via WindowedFileChatHistory :
class WindowedFileChatHistory(FileChatMessageHistory): """Retourne seulement les 5 derniers Γ©changes au LLM, mais persiste tout l'historique dans un fichier JSON.""" def __init__(self, file_path: str, k: int = 5): super().__init__(file_path) self.k = k @property def messages(self): all_messages = super().messages # Garde les derniers k Γ©changes (k*2 messages) return all_messages[-(self.k * 2):]
BΓ©nΓ©fices :
β Contexte limitΓ© = coΓ»t tokens constant
β Historique complet persistant (JSON)
β Reset automatique pour chaque session de test
L'application dΓ©tecte automatiquement la clΓ© API disponible parmi :
OpenAI : GPT-4o, GPT-3.5-Turbo
Groq : Llama-3, Mixtral
Google : Gemini Pro
Le prompt système inclut des contraintes strictes :
Constraints:
Tous les paramètres sont configurables via variables d'environnement (.env) :
SΓ©lection du fournisseur LLM
Seuils de distance et top_k
Taille de la fenΓͺtre mΓ©moire (k)
Niveaux de journalisation
Flux de donnΓ©es
Flux d'ingestion des documents
βββββββββββββββββββββββββ
β data/ directory β
β Raw Text Documents β
β (.txt files) β
βββββββββββββ¬ββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β Document Loading β
β UTF-8 File Reader β
βββββββββββββ¬ββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β Text Chunking β
β chunk_size = 500 β
β overlap = 50 β
βββββββββββββ¬ββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β Embedding Generation β
β SentenceTransformers β
β 384-dim vectors β
βββββββββββββ¬ββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β ChromaDB β
β Vector Store β
β Persistent Storage β
βββββββββββββββββββββββββ
Flux de traitement des requΓͺtes
βββββββββββββββββββββββββ
β User Query β
βββββββββββββ¬ββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β Query Embedding β
βββββββββββββ¬ββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β Vector Search β
β ChromaDB β
β top_k = 3 β
βββββββββββββ¬ββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β Retrieved Context β
βββββββββββββ¬ββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββ
β Prompt Assembly β
β (Context + User Question) β
βββββββββββββ¬ββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββ
β LLM Generation β
β (Grounded Answer)β
ββββββββββββ¬ββββββββ
βΌ
ββββββββββββββββββ
β Response β
ββββββββββββββββββ
Conversation Memory
(last 5 exchanges)
β
ββββββββββββββΊ Injected into Prompt
Exemple d'interaction
Exemple 1 : Intelligence Artificielle

Exemple 2 : Questions de suivi (test mΓ©moire)

Exemple 3 : Informatique quantique

Suivez ces Γ©tapes pour installer et exΓ©cuter DocuChat-RAG sur votre machine.
git clone https://github.com/Mcduval/docuchat-rag.git cd docuchat-rag
python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows
pip install -r requirements.txt
cp .env.example .env
Γditer .env avec votre clΓ© (OpenAI, Groq ou Google)
Placez vos fichiers .txt dans le dossier data/
python src/app.py
Voici des exemples de questions Γ poser Γ l'assistant, organisΓ©es par thΓ©matique :
| Question |
|---|
| "What is Deep Learning?" |
| "Explain Natural Language Processing to me" |
| "What are the ethical challenges of AI?" |
| "What is the difference between supervised and unsupervised learning?" |
| Question |
|---|
| "How does CRISPR-Cas9 work?" |
| "What is personalized medicine?" |
| "Explain synthetic biology" |
| "What are the ethical considerations in biotechnology?" |
| Question |
|---|
| "What is the greenhouse effect?" |
| "How does climate change affect ecosystems?" |
| "What are the main renewable energy solutions?" |
| "What is the difference between climate adaptation and mitigation?" |
| Question |
|---|
| "What is quantum superposition?" |
| "What is Shor's algorithm used for?" |
| "What are the applications of quantum computing?" |
| "What are qubits and how do they differ from classical bits?" |
| Question |
|---|
| "What are the goals of Mars exploration?" |
| "What is the International Space Station?" |
| "How do scientists discover exoplanets?" |
| "What are the terrestrial planets in our solar system?" |
| Question |
|---|
| "How does solar energy work?" |
| "What is a smart grid?" |
| "Why is energy storage important for renewable energy?" |
| "What is green hydrogen and how is it produced?" |
| Question |
|---|
| "Explain the CRISP-DM methodology" |
| "What is feature engineering?" |
| "How do you evaluate a machine learning model?" |
| "What is MLOps?" |
| Scenario | Description |
|---|---|
| CRISPR Follow-up | "Tell me about CRISPR" β "Who discovered it?" β "What are its medical applications?" |
| Quantum Computing Follow-up | "Explain quantum computing" β "What makes it different from classical computing?" β "What are the current hardware limitations?" |
| Limite | Description |
|---|---|
| π Support format limitΓ© | Seuls les fichiers .txt sont pris en charge |
| π₯οΈ Pas d'interface web | Interface CLI uniquement (pas de Streamlit) |
| π₯ Pas de multi-sessions | Un seul historique de conversation Γ la fois |
| βοΈ LLM cloud uniquement | Pas de support pour modΓ¨les locaux (Ollama, LM Studio) |
| FonctionnalitΓ© | Statut |
|---|---|
| π Support PDF, Markdown, DOCX | π PlanifiΓ© |
| π₯οΈ Interface web (Streamlit) | π PlanifiΓ© |
| π₯ Multi-sessions utilisateurs | π PlanifiΓ© |
| π» LLM local (Ollama, LM Studio) | π PlanifiΓ© |
| π Recherche hybride (BM25 + vectorielle) | π PlanifiΓ© |
| π€ Export des conversations (PDF, TXT) | π PlanifiΓ© |
| Informations de contact |
GitHub : https://github.com/Mcduval
LinkedIn : https://www.linkedin.com/in/mokemi-tchakoute-bautrel-duval
Email : bautrelduval@gmail.com
Licence
Ce projet est distribuΓ© sous licence MIT