Ces dernières années, l'intégration entre l'intelligence artificielle générative et les données d'entreprise structurées est devenue l'un des domaines les plus prometteurs du génie logiciel. Ce projet — développé dans le cadre du MBA en génie logiciel avec IA de Full Cycle — présente une architecture RAG (Retrieval-Augmented Generation) pratique utilisant Python, LangChain et PostgreSQL avec l'extension pgVector.
Le concept de RAG (Retrieval-Augmented Generation)
Le RAG est une approche qui combine la recherche d'informations (retrieval) avec la génération de langage naturel (generation). Contrairement à une IA pure, qui ne dépend que des connaissances intégrées dans son modèle, le RAG va chercher des informations dans des sources externes (bases de données, PDF, documents d'entreprise) et les insère dans le contexte avant de générer une réponse. Cela garantit la précision, la traçabilité et la mise à jour continue des données.
Architecture et composants principaux
L'architecture a été conçue pour être modulaire et extensible, basée sur trois couches principales :
- Ingestion : charge le contenu d'un PDF, le découpe en chunks (1000 caractères avec un overlap de 150) et génère des embeddings en utilisant des fournisseurs comme HuggingFace, OpenAI ou Gemini.
- Stockage : enregistre les vecteurs générés dans PostgreSQL en utilisant l'extension pgVector, ce qui permet des requêtes de similarité basées sur la distance vectorielle.
- Recherche et Réponse : interroge la base vectorielle, récupère les contextes les plus pertinents et les envoie au modèle de langage, qui génère une réponse basée exclusivement sur le contenu trouvé.
├── docker-compose.yml
├── requirements.txt
├── .env.example
├── document.pdf
└── src/
├── ingest.py # Pipeline d'ingestion et de vectorisation du PDF
├── search.py # Recherche sémantique et assemblage du contexte
└── chat.py # CLI interactif avec fallback rule-basedPipeline d'ingestion
L'étape d'ingestion est responsable de la transformation du contenu textuel en représentations numériques vectorielles. Cela se fait via des embeddings, qui projettent le sens sémantique dans des espaces de grande dimension. Le système supporte trois fournisseurs :
- 🧠 HuggingFace (Local) : modèle all-MiniLM-L6-v2, idéal pour les environnements sans connexion aux API.
- ☁️ OpenAI (text-embedding-3-small) : rapide et optimisé pour le rapport coût-bénéfice.
- ⚡ Gemini (models/embedding-001) : alternative Google avec une intégration directe à l'écosystème Generative AI.
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_postgres import PGVector
embeddings = HuggingFaceEmbeddings(model_name='sentence-transformers/all-MiniLM-L6-v2')
PGVector.from_documents(
documents=chunks,
embedding=embeddings,
connection=engine,
collection_name='pdf_chunks'
)Recherche sémantique et génération de réponses
Lors de la phase de consultation, le système reçoit une question, génère son embedding et effectue une recherche de similarité dans la base vectorielle. Les 10 chunks les plus pertinents sont concaténés et utilisés pour former le contexte de la réponse. Si le modèle LLM est indisponible, le système applique un fallback rule-based qui recherche des motifs explicites (comme des valeurs monétaires ou des noms d'entreprises).
context = build_context(results)
chain = prompt | llm | StrOutputParser()
response = chain.invoke({"contexte": context, "question": question})Applications pratiques dans d'autres projets
Cette architecture peut être réutilisée dans de nombreux scénarios d'entreprise et de produits SaaS. Quelques exemples d'application réelle incluent :
- 📚 Assistants de support interne : des bots capables de répondre à des questions à partir de manuels techniques et de politiques d'entreprise.
- 🏥 Santé et nutrition : intégration avec des rapports médicaux ou des bases d'aliments pour des recommandations personnalisées (comme dans le projet MovePro).
- 🏢 Compliance et juridique : recherche sémantique dans des documents juridiques pour accélérer les due diligences et les audits.
- 🛒 E-commerce : recommandation contextualisée de produits à partir de descriptions et de catalogues.
- 📊 Data Intelligence : combinaison avec des pipelines ETL pour l'analyse de données non structurées et des requêtes hybrides SQL + embeddings.
Leçons apprises et prochaines étapes
Le projet a démontré la puissance de la combinaison entre l'IA générative et les bases de données relationnelles traditionnelles. Parmi les principales leçons : maintenir la cohérence entre les dimensions vectorielles, utiliser un fallback logique pour les environnements offline et modulariser le code pour faciliter le changement de fournisseur. Comme évolution naturelle, la prochaine étape sera d'exposer cette architecture comme une API REST avec FastAPI et de construire une interface web interactive en Next.js.
Architecture RAG avec LangChain, PostgreSQL et pgVectorIntégrer LangChain avec pgVector est l'une des façons les plus élégantes et les plus scalables d'apporter une IA contextualisée aux applications d'entreprise modernes. C'est une voie solide pour transformer les données en intelligence.
