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 = 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.
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.
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.
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, 2023Bases 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.
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.
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).
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.
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).