Système RAG (Retrieval-Augmented Generation) en Python : interroge du contenu visuel/textuel et génère des réponses via un LLM.
Image2Answer est un projet realise a l'issue d'un workshop Epitech consacre au Retrieval-Augmented Generation (RAG), sans sujet formel impose : l'objectif etait d'implementer de A a Z un systeme RAG fonctionnel. Le principe retenu est de permettre a un utilisateur de charger une image contenant du texte — document scanne, photo de notes manuscrites, justificatif administratif, image medicale — puis de poser des questions en langage naturel sur son contenu et d'obtenir des reponses generees a partir de ce qui a ete effectivement lu dans l'image.
La chaine de traitement combine plusieurs briques : l'OCR est assure par Tesseract (via pytesseract et Pillow) pour extraire le texte des images et PDF uploades, ce texte est ensuite decoupe et vectorise avec LangChain, puis indexe dans une base vectorielle FAISS regeneree a chaque nouvelle analyse (l'index precedent est supprime avant reconstruction). La recherche des passages pertinents alimente ensuite une chaine RAG LangChain qui interroge l'API ChatOpenAI (modele configurable, gpt-3.5-turbo ou gpt-4) pour generer une reponse naturelle appuyee sur le contexte retrouve.
L'interface utilisateur est batie avec Streamlit : une barre laterale permet d'uploader les fichiers (PDF, PNG, JPG/JPEG) et de lancer le traitement, tandis qu'une zone de chat en streaming affiche les questions et les reponses generees au fil de l'eau. Le projet illustre ainsi un pipeline RAG multimodal complet — de l'ingestion d'image a la reponse textuelle contextualisee — construit avec un stack Python standard (uv comme gestionnaire de paquets, environnement virtuel, cle API OpenAI en variable d'environnement).
Projet suivant
