AccueilBlogData & IARAG : Retrieval Augmented Generation
IA Generative & LLM

RAG — Retrieval Augmented Generation :
faire parler les LLM sur vos donnees

Le RAG (Retrieval Augmented Generation) est l'architecture qui permet aux grands modeles de langage (LLM) de repondre sur des donnees specifiques sans etre reentraines. Comprendre ses composants — embeddings, bases vectorielles, chunking, reranking — est devenu indispensable pour tout Data Engineer ou ML Engineer travaillant sur des applications IA.

11 min de lectureIA Generative & LLMIntermediaire a Avance

Ce que vous allez apprendre

  • Le fonctionnement complet du pipeline RAG : indexation, retrieval et generation
  • Les embeddings et la recherche par similarite semantique
  • Les bases de donnees vectorielles : Pinecone, Weaviate, Qdrant, pgvector
  • Les strategies de chunking et leurs impacts sur la qualite du retrieval
  • Le reranking et les techniques pour ameliorer la precision du RAG
  • Les limites du RAG et quand utiliser le fine-tuning a la place
Contexte

Pourquoi le RAG ? Le probleme des LLM generiques

Les grands modeles de langage (GPT-4, Claude, Llama) ont une connaissance figee a leur date d'entrainement et ne connaissent pas vos documents internes, votre base de connaissances, ou vos donnees metier specifiques. Les adapter par fine-tuning est couteux (temps de calcul, donnees labelisees, infrastructure GPU) et les donnees changent souvent.

Le RAG resout ce probleme en augmentant le prompt envoye au LLM avec des passages de documents pertinents retrouves en temps reel. Le LLM ne repond plus de memoire — il repond en se basant sur les documents fournis dans son contexte. Resultat : reponses actualisees, sourcables, et adaptees a votre domaine specifique.

RAG vs Fine-tuning

RAG = ajouter du contexte au moment de l'inference (flexible, pas de reentainement, donnees peuvent changer). Fine-tuning = modifier les poids du modele pour adapter son style ou ses connaissances (couteux, rigide, plutot pour adapter le comportement). Pour les applications metier avec des donnees qui evoluent : RAG. Pour adapter le ton/style ou injecter des connaissances tres specifiques de facon permanente : fine-tuning.

Architecture

Le pipeline RAG : indexation, retrieval, generation

Un pipeline RAG se compose de deux phases : la phase d'indexation (offline) et la phase de requete (online). La phase d'indexation prepare les documents ; la phase de requete retrouve les passages pertinents et les envoie au LLM.

Phase d'indexation : preparer les documents

1. Chargement des documents (PDF, Markdown, HTML, bases de donnees, Confluence, Notion...). 2. Chunking : decoupage en passages de taille appropriee (voir section dediee). 3. Embedding : transformation de chaque chunk en vecteur numerique via un modele d'embedding (text-embedding-3-small d'OpenAI, Cohere embed, ou modeles open-source comme sentence-transformers). 4. Stockage dans une base de donnees vectorielle avec les metadonnees associees (source, date, chapitre...).

Phase de requete : retrouver et generer

1. La question de l'utilisateur est embeddee avec le meme modele que lors de l'indexation. 2. Recherche de similarite dans la base vectorielle : les k vecteurs les plus proches (cosine similarity, dot product, ou euclidean distance) sont retrouves. 3. Les chunks correspondants sont injectes dans le prompt : 'Reponds a la question suivante en te basant uniquement sur ces documents : [chunks]. Question : [question]'. 4. Le LLM genere une reponse en s'appuyant sur le contexte fourni.

Composant cle

Embeddings : la representation semantique des textes

Un embedding est une representation numerique (vecteur de 768 a 3072 dimensions selon les modeles) qui capture le sens semantique d'un texte. Deux textes avec un sens proche ont des vecteurs proches dans l'espace vectoriel, meme s'ils n'utilisent pas les memes mots.

C'est la propriete fondamentale qui permet la recherche semantique : 'voiture' et 'automobile' sont proches, 'banque financiere' et 'banque de riviere' sont eloignees. La recherche par mots-cles (BM25, TF-IDF) ne capte pas cette semantique — c'est la principale valeur ajoutee des embeddings.

Choisir son modele d'embedding

text-embedding-3-small et text-embedding-3-large (OpenAI) : excellent rapport qualite/prix, 1536 ou 3072 dimensions, proprietary. Cohere Embed v3 : multilingue, excellent pour les cas metier, supporte les requetes de type query vs document. sentence-transformers (Hugging Face) : open-source, centaines de modeles, deployables on-premise. Pour le francais : paraphrase-multilingual-mpnet-base-v2 ou CamemBERT-based embeddings pour de meilleures performances.

Benchmark MTEB

Le MTEB (Massive Text Embedding Benchmark) de Hugging Face evalue les modeles d'embedding sur 56 taches dans 112 langues. C'est la reference pour comparer les modeles avant de choisir. Les classements varient significativement selon la langue et le type de tache (retrieval, classification, clustering).

Muennighoff et al. - MTEB: Massive Text Embedding Benchmark, 2023
Infrastructure

Bases de donnees vectorielles

Une base de donnees vectorielle stocke des vecteurs et permet la recherche par similarite a grande echelle (millions a milliards de vecteurs) avec des temps de reponse milliseconde via des index HNSW (Hierarchical Navigable Small World) ou IVF (Inverted File Index).

Solutions managees : Pinecone, Weaviate Cloud, Qdrant Cloud

Pinecone est le service vectoriel manage le plus populaire : API simple, scalabilite automatique, filtrage par metadonnees, support hybrid search (dense + sparse). Weaviate est open-source avec une offre cloud managee : supporte le multi-tenancy, GraphQL, et des modules d'embedding integres. Qdrant est une alternative russe open-source particulierement performante sur les benchmarks de precision.

pgvector : la solution PostgreSQL

pgvector est une extension PostgreSQL qui ajoute un type de colonne vector et des operateurs de similarite. Avantage majeur : pas de nouvelle infrastructure — vous stockez embeddings et donnees relationnelles dans la meme base PostgreSQL. Supabase et Neon proposent pgvector nativement. Limite : performance moindre que les bases vectorielles dediees au-dela de quelques millions de vecteurs.

Optimisation

Chunking et reranking : ameliorer la qualite du RAG

La qualite d'un systeme RAG depend autant du chunking que du modele de generation. Un mauvais chunking produit des passages incoherents qui degradent la reponse finale.

Strategies de chunking

Fixed-size chunking (500-1000 tokens avec overlap) : simple, fonctionnel, mais peut couper des phrases a mi-chemin. Semantic chunking : decoupe aux frontieres semantiques naturelles (paragraphes, sections, phrases). Hierarchical chunking : stocke des chunks a plusieurs granularites (section complete + phrases individuelles) pour retrouver d'abord la section puis raffiner. Parent-child chunking : les chunks parents (contexte large) et enfants (passages precis) sont lies — on retrouve les enfants et on injecte les parents dans le prompt.

Reranking : affiner la selection des passages

La recherche vectorielle retrouve les k passages les plus proches semantiquement, mais la proximite semantique ne garantit pas la pertinence pour repondre a la question precise. Le reranking passe les top-k candidats dans un cross-encoder (modele plus puissant mais plus lent) qui score la pertinence specifique question/passage. Cohere Rerank, Jina Reranker, et les cross-encoders sentence-transformers sont les solutions les plus utilisees.

Les hallucinations persistent avec le RAG

Le RAG reduit mais n'elimine pas les hallucinations. Le LLM peut toujours inventer des details non presents dans les documents, creer des syntheses incorrectes, ou ignorer des chunks pertinents retrouves. Des garde-fous sont necessaires : validation de la reponse, citation obligatoire des sources, score de confiance, et evaluation automatisee des reponses (RAGAS framework).

Methode

Ancrer les concepts RAG avec la repetition espacee

Le RAG combine des concepts de NLP (embeddings, similarity search), d'infrastructure (bases vectorielles, indexation) et d'architecture systeme (pipeline, latence, cout). Les flashcards permettent de maintenir une maitrise claire de chaque brique du pipeline et de leurs interactions.

Cartes RAG essentielles

Concepts a maitriser : difference RAG vs fine-tuning, les 4 etapes du pipeline RAG, cosine similarity vs dot product, HNSW vs IVF index, fixed-size vs semantic chunking, role du reranker, et le framework RAGAS pour evaluer un systeme RAG. Questions classiques en entretien ML Engineer.


Questions frequentes sur le RAG et la generation augmentee

Qu'est-ce que le RAG (Retrieval Augmented Generation) ?

Le RAG est une architecture qui augmente les reponses d'un LLM en lui fournissant des passages de documents pertinents retrouves en temps reel. Plutot que de rependre de memoire, le LLM base sa reponse sur les documents injectes dans son prompt. Cela permet d'interroger un LLM sur des donnees specifiques (documentation interne, base de connaissances) sans reentrainement.

Quelle est la difference entre RAG et fine-tuning ?

Le RAG ajoute du contexte au moment de l'inference : les documents sont retrouves et injectes dans le prompt. Flexible, pas de reentainement, les donnees peuvent etre mises a jour. Le fine-tuning modifie les poids du modele pour adapter son comportement ou ses connaissances de facon permanente. Couteux, rigide, plutot pour adapter le style ou injecter des connaissances tres stables.

Qu'est-ce qu'un embedding et pourquoi est-il utile pour le RAG ?

Un embedding est une representation vectorielle numerique d'un texte qui capture son sens semantique. Deux textes avec un sens proche ont des vecteurs proches. Le RAG utilise les embeddings pour retrouver les passages semantiquement similaires a la question, meme si les mots exacts sont differents — ce que la recherche par mots-cles ne permet pas.

Quelles sont les principales bases de donnees vectorielles ?

Pinecone (service manage, API simple, populaire), Weaviate (open-source avec offre cloud, multi-tenancy, GraphQL), Qdrant (open-source haute performance), Chroma (open-source leger, ideal pour le prototypage) et pgvector (extension PostgreSQL, ideal si vous etes deja sur PostgreSQL/Supabase). Le choix depend du volume, de l'infrastructure existante et des besoins de filtrage.

Qu'est-ce que le chunking et comment le choisir ?

Le chunking est le decoupage des documents en passages de taille appropriee avant l'indexation. Fixed-size chunking (500-1000 tokens) est simple mais peut couper des idees. Semantic chunking respecte les frontieres naturelles (paragraphes, sections). Parent-child chunking stocke deux niveaux de granularite pour plus de precision. La taille optimale depend du type de contenu et de la fenetre de contexte du LLM utilise.

Qu'est-ce que le reranking dans un pipeline RAG ?

Le reranking est une etape d'affinage apres le retrieval initial. La recherche vectorielle retrouve les k candidats les plus proches semantiquement. Le reranker (cross-encoder) re-score chaque candidat specifiquement pour la question posee, avec une meilleure precision que la simple similarite vectorielle. Cohere Rerank et Jina Reranker sont les solutions les plus utilisees.

Le RAG elimine-t-il les hallucinations des LLM ?

Non, le RAG reduit mais n'elimine pas les hallucinations. Le LLM peut toujours inventer des details non presents dans les documents fournis, creer des syntheses incorrectes, ou ignorer des passages pertinents. Des mesures supplementaires sont necessaires : citation obligatoire des sources, scores de confiance, et evaluation automatisee avec le framework RAGAS (Faithfulness, Answer Relevancy, Context Precision).


Article precedent : SQL pour l'analyse de donnees

Retour au hub Data, Analytics & IA