L’auteur Khuyen Tran propose un tutoriel pratique pour construire un système RAG (Retrieval-Augmented Generation) en une soirée à l’aide de cinq outils open source : MarkItDown, LangChain, ChromaDB, Ollama et Gradio. Ce système permet de transformer des documents dispersés en une base de connaissances intelligente, capable de répondre à des questions en langage naturel avec des réponses générées en temps réel, le tout en local sans dépendre du cloud. L’objectif est de résoudre un problème courant dans les entreprises, où les employés perdent un temps précieux à chercher des informations dans des emails, des fichiers partagés ou des conversations Slack.

Le guide détaille chaque étape du processus, en commençant par la conversion des documents (PDF, Word, etc.) en markdown grâce à MarkItDown, un outil de Microsoft qui préserve la structure et le sens du texte original. Par exemple, un manuel Python comme Think Python d’Allen Downey est téléchargé et transformé en quelques lignes de code, produisant un fichier markdown prêt pour les étapes suivantes. L’auteur souligne l’importance de cette étape pour standardiser les données avant leur traitement.

La deuxième phase consiste à fragmenter intelligemment le texte avec LangChain, plus précisément son module RecursiveCharacterTextSplitter. Cette technique divise les documents en morceaux de taille gérable (par exemple, 150 caractères avec un chevauchement de 30) tout en respectant les frontières sémantiques comme les paragraphes ou les phrases. Cela évite de perdre le contexte et optimise la recherche ultérieure. Un exemple simple avec un texte sur le machine learning illustre comment le splitteur génère des fragments cohérents, prêts à être convertis en vecteurs.

Pour stocker et rechercher ces fragments, le tutoriel utilise ChromaDB, une base de données vectorielle locale qui indexe les embeddings générés par SentenceTransformers. Ces embeddings sont des représentations numériques du texte, permettant des recherches sémantiques rapides. L’auteur explique comment initialiser ChromaDB, y insérer les vecteurs des documents fragmentés, puis effectuer des requêtes pour retrouver les passages les plus pertinents par rapport à une question posée. Par exemple, une question sur les "boucles en Python" renverra les extraits du manuel qui traitent spécifiquement de ce sujet.

Enfin, la génération des réponses repose sur un modèle de langage local exécuté via Ollama, une alternative légère à des solutions comme Llama ou Mistral. Le tutoriel guide l’utilisateur pour installer Ollama, télécharger un modèle (comme llama3.2), puis l’intégrer au pipeline RAG. Les réponses sont générées en combinant le contexte retrouvé dans ChromaDB avec les capacités du LLM, le tout affiché dans une interface web interactive créée avec Gradio. Cette interface permet de poser des questions en temps réel et d’obtenir des réponses fluides, avec un effet de streaming pour simuler une conversation naturelle.

Le projet est conçu pour être reproductible : le code source complet et un notebook Jupyter sont disponibles sur GitHub, avec une structure de dossiers claire (documents pour les fichiers bruts, processed_docs pour les markdown). L’auteur insiste sur la simplicité de la mise en œuvre, malgré la puissance du résultat final, et encourage les lecteurs à adapter le système à leurs propres jeux de données. En résumé, ce guide démontre qu’il est possible de créer un "ChatGPT personnel" local, privé et open source, en quelques heures seulement, sans compétences avancées en IA.