{"id":493,"date":"2026-10-07T17:02:19","date_gmt":"2026-10-07T15:02:19","guid":{"rendered":"https:\/\/www.ranksignal.fr\/blog\/?p=493"},"modified":"2026-10-14T17:31:13","modified_gmt":"2026-10-14T15:31:13","slug":"qu-est-ce-qu-un-rag-naif","status":"publish","type":"post","link":"https:\/\/www.ranksignal.fr\/blog\/rag\/qu-est-ce-qu-un-rag-naif\/","title":{"rendered":"Qu&rsquo;est-ce qu&rsquo;un RAG na\u00eff ? Le pipeline de base et ses failles"},"content":{"rendered":"<p><\/p>\n<p>\u00ab Qu&rsquo;a fait Geoffrey Hinton ? \u00bb Voil\u00e0 une question toute simple, et pourtant un RAG de base peut y \u00e9chouer : si aucun fragment r\u00e9cup\u00e9r\u00e9 ne couvre ses actions de mani\u00e8re exhaustive, le syst\u00e8me n&rsquo;a rien de complet \u00e0 lire.<\/p>\n<p>Ce n&rsquo;est pas un d\u00e9faut de r\u00e9glage, c&rsquo;est le plan m\u00eame du pipeline : il cherche une fois, lit une fois, et ne v\u00e9rifie rien. \u00c0 la fin de cet article, tu sauras d\u00e9crire ce pipeline de bout en bout, dire ce qui le rend \u00ab na\u00eff \u00bb et rep\u00e9rer l&rsquo;endroit exact o\u00f9 une r\u00e9ponse se perd.<\/p>\n<p><strong>Sommaire<\/strong><\/p>\n<ul>\n<li><a href=\"#l-essentiel-en-30-secondes\">L&rsquo;essentiel en 30 secondes<\/a><\/li>\n<li><a href=\"#une-seule-passe-recuperer-puis-lire\">Une seule passe : r\u00e9cup\u00e9rer, puis lire<\/a><\/li>\n<li><a href=\"#une-question-trois-gestes-zero-controle\">Une question, trois gestes, z\u00e9ro contr\u00f4le<\/a><\/li>\n<li><a href=\"#a-quoi-il-sert-des-faits-simples-pas-des-vues-d-ensemble\">\u00c0 quoi il sert : des faits simples, pas des vues d&rsquo;ensemble<\/a><\/li>\n<li><a href=\"#ou-la-reponse-se-perd-entre-la-question-et-la-phrase-finale\">O\u00f9 la r\u00e9ponse se perd entre la question et la phrase finale<\/a><\/li>\n<li><a href=\"#ce-que-sa-structure-l-empeche-de-voir\">Ce que sa structure l&#8217;emp\u00eache de voir<\/a><\/li>\n<li><a href=\"#quelle-panne-quel-ajout-le-chemin-vers-le-rag-avance\">Quelle panne, quel ajout : le chemin vers le RAG avanc\u00e9<\/a><\/li>\n<li><a href=\"#trois-idees-recues-a-ranger\">Trois id\u00e9es re\u00e7ues \u00e0 ranger<\/a><\/li>\n<\/ul>\n<h2 id=\"l-essentiel-en-30-secondes\">L&rsquo;essentiel en 30 secondes<\/h2>\n<ul>\n<li>Un RAG na\u00eff est <strong>le pipeline de base<\/strong> : un embedder, une base vectorielle et un <a href=\"\/blog\/inference\/qu-est-ce-qu-un-llm\/\" title=\"LLM\">LLM<\/a>, sans \u00e9tape en plus.<\/li>\n<li>Il suit le sch\u00e9ma <strong>\u00ab r\u00e9cup\u00e9rer puis lire \u00bb<\/strong> : une seule recherche, une seule g\u00e9n\u00e9ration, aucun contr\u00f4le entre les deux.<\/li>\n<li>Il est \u00e0 l&rsquo;aise sur <strong>les faits simples et les questions directes<\/strong>, avec une mise \u00e0 jour \u00e0 tr\u00e8s faible co\u00fbt.<\/li>\n<li>Ses pannes se rangent par \u00e9tape : <strong>trouver, lire, relier<\/strong> ; chacune a son diagnostic.<\/li>\n<li>Le <a href=\"\/blog\/rag\/qu-est-ce-qu-un-rag-avance\/\" title=\"RAG avanc\u00e9\">RAG avanc\u00e9<\/a> n&rsquo;est pas un autre outil : c&rsquo;est le m\u00eame pipeline avec <strong>un correctif par panne<\/strong>.<\/li>\n<\/ul>\n<h2 id=\"une-seule-passe-recuperer-puis-lire\">Une seule passe : r\u00e9cup\u00e9rer, puis lire<\/h2>\n<p>Un <strong>RAG na\u00eff<\/strong> est la forme de base de la <a href=\"\/blog\/rag\/a-quoi-ressemble-un-systeme-rag\/\" title=\"g\u00e9n\u00e9ration augment\u00e9e par r\u00e9cup\u00e9ration\">g\u00e9n\u00e9ration augment\u00e9e par r\u00e9cup\u00e9ration<\/a>. Il se compose de trois \u00e9l\u00e9ments simples : un <em>embedder<\/em>, qui transforme les textes en vecteurs, une base vectorielle qui sert \u00e0 la r\u00e9cup\u00e9ration, et un LLM qui g\u00e9n\u00e8re la r\u00e9ponse. Le texte est d&rsquo;abord plong\u00e9 dans la base ; \u00e0 l&rsquo;arriv\u00e9e d&rsquo;une question, on cherche les fragments qui s&rsquo;y rapportent et on les donne au LLM.<\/p>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6adef47329a07&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6adef47329a07\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"2340\" height=\"1380\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b2_ch05_pipeline_rag_naif.png\" alt=\"Le RAG na\u00eff en deux temps : en haut, l'indexation hors ligne transforme les documents en fragments, puis en vecteurs rang\u00e9s dans une base ; en bas, \u00e0 chaque question, on encode la question, on retrouve les fragments les plus proches (top-k) et on les passe au LLM avec le prompt\" class=\"wp-image-490\" srcset=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b2_ch05_pipeline_rag_naif.png 2340w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b2_ch05_pipeline_rag_naif-300x177.png 300w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b2_ch05_pipeline_rag_naif-1024x604.png 1024w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b2_ch05_pipeline_rag_naif-768x453.png 768w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b2_ch05_pipeline_rag_naif-1536x906.png 1536w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b2_ch05_pipeline_rag_naif-2048x1208.png 2048w\" sizes=\"auto, (max-width: 2340px) 100vw, 2340px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Regarde la rang\u00e9e du bas, celle qui tourne \u00e0 chaque question : toutes les fl\u00e8ches vont dans le m\u00eame sens, de la question vers la r\u00e9ponse, sans le moindre retour en arri\u00e8re.<\/figcaption><\/figure>\n\n\n<p>Cette lin\u00e9arit\u00e9 donne son sens au mot \u00ab na\u00eff \u00bb : on r\u00e9cup\u00e8re, puis on lit, et rien d&rsquo;autre ne se passe entre les deux. Quatre absences expliquent l&rsquo;adjectif :<\/p>\n<ul>\n<li>aucune r\u00e9\u00e9criture de la question avant la recherche, ni re-classement des r\u00e9sultats avant la lecture : les versions plus \u00e9volu\u00e9es ajoutent justement ces deux \u00e9tapes ;<\/li>\n<li>un seul niveau de fragments, tous \u00e9quivalents quel que soit le document d&rsquo;origine ;<\/li>\n<li>une seule passe : on r\u00e9cup\u00e8re une fois, puis on g\u00e9n\u00e8re, c&rsquo;est la pratique standard ;<\/li>\n<li>aucun module de validation qui \u00e9value la r\u00e9ponse et le contexte r\u00e9cup\u00e9r\u00e9 pour rep\u00e9rer erreurs ou incoh\u00e9rences.<\/li>\n<\/ul>\n<blockquote>\n<p><strong>\ud83d\udca1 Intuition<\/strong> Pense \u00e0 un stagiaire qui re\u00e7oit une question, ouvre le classeur \u00e0 l&rsquo;endroit dont les mots ressemblent le plus \u00e0 la question, puis recopie la r\u00e9ponse sans relire ni douter. Rien de honteux, tant que la question est simple et que le classeur est bien rang\u00e9.<\/p>\n<\/blockquote>\n<h2 id=\"une-question-trois-gestes-zero-controle\">Une question, trois gestes, z\u00e9ro contr\u00f4le<\/h2>\n<p>Suis maintenant une question dans la rang\u00e9e du bas. Premier geste : on la transforme en vecteur, avec le m\u00eame encodeur que celui des documents. Deuxi\u00e8me geste : on calcule un score de similarit\u00e9 entre ce vecteur et ceux de la base, puis on garde les K fragments les mieux class\u00e9s, le <strong>top-K<\/strong>. Troisi\u00e8me geste : on assemble un prompt coh\u00e9rent avec la question et les fragments retrouv\u00e9s, puis on le passe au LLM.<\/p>\n<p>Combien de code faut-il pour le deuxi\u00e8me geste ? Presque rien. L&rsquo;exemple ci-dessous recharge un index d\u00e9j\u00e0 construit sur la page d&rsquo;un tournoi sportif, puis l&rsquo;interroge avec <code>k=2<\/code>, c&rsquo;est-\u00e0-dire en gardant les deux fragments les plus proches de la question.<\/p>\n<pre><code>from langchain_community.vectorstores import FAISS\nfrom langchain_openai import OpenAIEmbeddings\nimport os\nos.environ[&quot;OPENAI_API_KEY&quot;] = &quot;&lt;YOUR_API_KEY&gt;&quot;\n\nembeddings = OpenAIEmbeddings(model=&quot;text-embedding-3-small&quot;)\nvector_store = FAISS.load_local(\n    folder_path=&quot;..\/..\/Assets\/Data&quot;,\n    index_name=&quot;CWC_index&quot;,\n    embeddings=embeddings,\n    allow_dangerous_deserialization=True\n)\nquery = &quot;Who won the 2023 Cricket World Cup?&quot;\nretrieved_docs = vector_store.similarity_search(query, k=2)\n<\/code><\/pre>\n<p>La derni\u00e8re ligne concentre toute la d\u00e9cision : <code>similarity_search<\/code> classe les fragments par proximit\u00e9 avec la question et rend les deux premiers. Aucune ligne ne v\u00e9rifie qu&rsquo;ils r\u00e9pondent vraiment : <strong>la similarit\u00e9 est le seul juge<\/strong>.<\/p>\n<p>Reste le troisi\u00e8me geste. Quand le LLM lit le prompt, il \u00e9crit sa r\u00e9ponse mot apr\u00e8s mot, selon la formule suivante :<\/p>\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 49px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-b5003611d1748d7b0517e0b1fc6a3414_l3.png\" height=\"49\" width=\"329\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#91; &#112;&#40;&#120;&#95;&#49;&#44;&#120;&#95;&#50;&#44;&#92;&#100;&#111;&#116;&#115;&#44;&#120;&#95;&#110;&#41;&#61;&#92;&#112;&#114;&#111;&#100;&#95;&#123;&#105;&#61;&#49;&#125;&#94;&#123;&#110;&#125;&#112;&#92;&#98;&#105;&#103;&#108;&#40;&#120;&#95;&#105;&#92;&#109;&#105;&#100;&#32;&#80;&#114;&#59;&#82;&#59;&#113;&#59;&#120;&#95;&#123;&#60;&#105;&#125;&#92;&#98;&#105;&#103;&#114;&#41;&#46;&#92;&#93;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n<p>Ici <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-d77903c38ea4d325874dd7827799504a_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#120;&#95;&#49;&#44;&#32;&#92;&#100;&#111;&#116;&#115;&#44;&#32;&#120;&#95;&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"75\" style=\"vertical-align: -4px;\"\/> sont les jetons (grosso modo, les mots) de la r\u00e9ponse, <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-12c7cd95a2d3a4ad73e05d02711c7a97_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#80;&#114;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"22\" style=\"vertical-align: 0px;\"\/> la consigne du prompt, <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-dae6bae3dcdac4629730754352c5e329_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#82;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"14\" style=\"vertical-align: 0px;\"\/> les fragments r\u00e9cup\u00e9r\u00e9s, <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-ac7da57d7f507262338bb5168feb3e06_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#113;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"8\" style=\"vertical-align: -4px;\"\/> la question et <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-5ac6539cd1c267fe4e98b259652d7387_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#120;&#95;&#123;&#60;&#105;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"26\" style=\"vertical-align: -4px;\"\/> les jetons d\u00e9j\u00e0 \u00e9crits. Le produit multiplie, jeton apr\u00e8s jeton, la probabilit\u00e9 de choisir <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-c8700e0258243116de0d4f288e2e3b44_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#120;&#95;&#105;\" title=\"Rendered by QuickLaTeX.com\" height=\"11\" width=\"15\" style=\"vertical-align: -3px;\"\/> sachant tout ce qui pr\u00e9c\u00e8de. Les fragments <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-dae6bae3dcdac4629730754352c5e329_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#82;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"14\" style=\"vertical-align: 0px;\"\/> font partie des conditions de cette probabilit\u00e9 : rien d&rsquo;autre dans la formule ne contr\u00f4le ce que le mod\u00e8le en fait.<\/p>\n<h2 id=\"a-quoi-il-sert-des-faits-simples-pas-des-vues-d-ensemble\">\u00c0 quoi il sert : des faits simples, pas des vues d&rsquo;ensemble<\/h2>\n<p>Avant de choisir ce pipeline, <strong>v\u00e9rifie que tu en as besoin<\/strong>. Le syst\u00e8me a-t-il besoin de donn\u00e9es absentes de l&rsquo;entra\u00eenement du mod\u00e8le, de donn\u00e9es r\u00e9centes ou fr\u00e9quemment mises \u00e0 jour, de faits \u00e0 l&rsquo;exactitude critique, de sources cit\u00e9es ? \u00c9crire un texte cr\u00e9atif, traduire ou corriger la grammaire n&rsquo;en ont g\u00e9n\u00e9ralement pas besoin ; un agent de support client, qui doit r\u00e9pondre avec des informations produit \u00e0 jour et v\u00e9rifiables, en a clairement besoin.<\/p>\n<p>Quand le besoin est l\u00e0, ses composants r\u00e9pondent efficacement aux requ\u00eates. Il est efficace pour les <strong>faits simples ou les questions directes<\/strong>. Les questions-r\u00e9ponses sur une documentation ou sur des produits en sont l&rsquo;exemple courant : <a href=\"\/blog\/agentic\/eviter-hallucination-documents-recuperes\/\" title=\"r\u00e9duire les hallucinations\">r\u00e9duire les hallucinations<\/a> et assurer la transparence y est crucial, la personnalisation bien moins, ce qui donne l&rsquo;avantage \u00e0 la r\u00e9cup\u00e9ration sur l&rsquo;ajustement du mod\u00e8le.<\/p>\n<p>C\u00f4t\u00e9 co\u00fbt, le pipeline se met \u00e0 jour souvent, \u00e0 <strong>tr\u00e8s faible co\u00fbt<\/strong>, et s&rsquo;accommode de types de donn\u00e9es vari\u00e9s. L&rsquo;ajustement d&rsquo;un mod\u00e8le, lui, exige de pr\u00e9parer et de curer des jeux de donn\u00e9es de qualit\u00e9, co\u00fbteux et laborieux, puis de payer le r\u00e9entra\u00eenement. La contrepartie : la recherche rallonge chaque r\u00e9ponse, donc la latence monte.<\/p>\n<p>Tout cela vaut pour un fait que quelques passages suffisent \u00e0 porter. D\u00e8s que la r\u00e9ponse se disperse, les ennuis commencent.<\/p>\n<h2 id=\"ou-la-reponse-se-perd-entre-la-question-et-la-phrase-finale\">O\u00f9 la r\u00e9ponse se perd entre la question et la phrase finale<\/h2>\n<p>Chaque probl\u00e8me du RAG na\u00eff se rattache \u00e0 une \u00e9tape pr\u00e9cise du pipeline. Suis la question du d\u00e9but \u00e0 la fin et note o\u00f9 elle peut d\u00e9railler.<\/p>\n<h3>Quand le bon passage n&rsquo;arrive pas<\/h3>\n<p>Au moment de la r\u00e9cup\u00e9ration, deux mesures posent probl\u00e8me : la pr\u00e9cision (les fragments trouv\u00e9s sont mal align\u00e9s avec la question) et le rappel (trouver tous les fragments pertinents). Les causes sont vari\u00e9es :<\/p>\n<ul>\n<li>une base p\u00e9rim\u00e9e, ou mal index\u00e9e ;<\/li>\n<li>un embedder trop petit, ou inadapt\u00e9 au domaine, dont la repr\u00e9sentation s\u00e9mantique est faible ;<\/li>\n<li><strong>le top-K coupe des fragments d\u00e9cisifs<\/strong> : en gardant les k premiers, on peut conserver des fragments moins pertinents et ne pas renvoyer ceux qui comptent vraiment ;<\/li>\n<li>la bonne information est trouv\u00e9e, mais en trop de fragments pour la longueur de contexte du LLM.<\/li>\n<\/ul>\n<blockquote>\n<p><strong>\u26a0\ufe0f Pi\u00e8ge<\/strong> Un d\u00e9coupage identique pour tous les types de fichiers (PDF, HTML, texte brut) est une cause classique de mauvaise indexation : des documents de types vari\u00e9s sont alors mal trait\u00e9s.<\/p>\n<\/blockquote>\n<h3>Quand le passage arrive sans \u00eatre bien lu<\/h3>\n<p>Imagine que le bon fragment soit dans le prompt. Rien n&rsquo;est gagn\u00e9 pour autant.<\/p>\n<ul>\n<li>\n<p>Extraction \u00e9chou\u00e9e : le bon contexte est renvoy\u00e9, mais le LLM n&rsquo;en tire pas la bonne r\u00e9ponse, en g\u00e9n\u00e9ral \u00e0 cause de trop de bruit ou d&rsquo;informations contradictoires.<\/p>\n<\/li>\n<li>\n<p>Redondance : une base qui m\u00eale plusieurs corpus contient beaucoup de documents redondants, de styles et de tons diff\u00e9rents ; le LLM peut alors r\u00e9p\u00e9ter, halluciner ou mal int\u00e9grer l&rsquo;information.<\/p>\n<\/li>\n<li>\n<p>Mauvais format ou mauvaise sp\u00e9cificit\u00e9 : le LLM ignore la consigne de pr\u00e9sentation (puces, tableau), ou r\u00e9pond de fa\u00e7on trop vague ou trop technique pour un public d&rsquo;\u00e9tudiants, par exemple.<\/p>\n<\/li>\n<li>\n<p>R\u00e9ponse incompl\u00e8te : pas fausse, mais l&rsquo;information n\u00e9cessaire n&rsquo;a pas \u00e9t\u00e9 toute trouv\u00e9e, ou le LLM l&rsquo;a mal utilis\u00e9e. Une requ\u00eate trop complexe (\u00ab r\u00e9sume les points A, B et C \u00bb) gagne \u00e0 \u00eatre modifi\u00e9e.<\/p>\n<\/li>\n<\/ul>\n<h2 id=\"ce-que-sa-structure-l-empeche-de-voir\">Ce que sa structure l&#8217;emp\u00eache de voir<\/h2>\n<p>Certains \u00e9checs ne viennent pas d&rsquo;un mauvais r\u00e9glage mais du plan m\u00eame du pipeline.<\/p>\n<p>Premier angle mort : <strong>un seul niveau de fragments<\/strong>. Avec beaucoup de documents, latence et performance en p\u00e2tissent ; avec de gros documents, il devient difficile de trouver les fragments pertinents ; et la hi\u00e9rarchie que beaucoup de corpus poss\u00e8dent reste inexploit\u00e9e.<\/p>\n<p>Deuxi\u00e8me angle mort : les relations. Les textes d&rsquo;une base sont <strong>interconnect\u00e9s, non isol\u00e9s<\/strong>, mais le RAG ne capture pas le savoir relationnel structur\u00e9 quand la similarit\u00e9 s\u00e9mantique ne peut pas le saisir. En science, un r\u00e9seau de citations relie un article \u00e0 des travaux ant\u00e9rieurs : on retrouve des articles semblables \u00e0 la requ\u00eate, pas ce r\u00e9seau.<\/p>\n<p>Troisi\u00e8me angle mort : la vue d&rsquo;ensemble. Les fragments retrouv\u00e9s ne sont pas repr\u00e9sentatifs de l&rsquo;information globale, ce qui g\u00eane surtout les t\u00e2ches de r\u00e9sum\u00e9. Relier des points dispers\u00e9s rel\u00e8ve de la m\u00eame logique : c&rsquo;est exactement le cas de la question sur Hinton, qui \u00e9choue d\u00e8s qu&rsquo;aucun fragment ne rassemble l&rsquo;ensemble de ses actions.<\/p>\n<p>Reste la <strong>passe unique<\/strong> : r\u00e9cup\u00e9rer une fois puis g\u00e9n\u00e9rer peut \u00eatre insuffisant pour des probl\u00e8mes complexes qui exigent un raisonnement en plusieurs \u00e9tapes. L\u00e0, la limite de raisonnement du syst\u00e8me d\u00e9pend du LLM : la r\u00e9cup\u00e9ration ne sert qu&rsquo;\u00e0 trouver le contexte.<\/p>\n<h2 id=\"quelle-panne-quel-ajout-le-chemin-vers-le-rag-avance\">Quelle panne, quel ajout : le chemin vers le RAG avanc\u00e9<\/h2>\n<p>Le RAG avanc\u00e9 n&rsquo;est pas un autre outil : c&rsquo;est le m\u00eame pipeline, avec un correctif pos\u00e9 sur chaque panne, <strong>avant et apr\u00e8s la recherche<\/strong>. Les techniques de pr\u00e9-r\u00e9cup\u00e9ration optimisent l&rsquo;index et la requ\u00eate ; celles de post-r\u00e9cup\u00e9ration optimisent le contexte avant la g\u00e9n\u00e9ration. Le processus enrichi se r\u00e9sume \u00e0 \u00ab r\u00e9\u00e9crire puis r\u00e9cup\u00e9rer puis re-classer puis lire \u00bb.<\/p>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6adef47329eff&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6adef47329eff\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"580\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch06_rag_avance-scaled.png\" alt=\"Le RAG avanc\u00e9 en quatre \u00e9tapes successives : r\u00e9\u00e9criture de la requ\u00eate, r\u00e9cup\u00e9ration, re-classement, puis g\u00e9n\u00e9ration\" class=\"wp-image-491\" srcset=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch06_rag_avance-scaled.png 2560w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch06_rag_avance-300x68.png 300w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch06_rag_avance-1024x232.png 1024w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch06_rag_avance-768x174.png 768w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch06_rag_avance-1536x348.png 1536w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch06_rag_avance-2048x464.png 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Compare avec le sch\u00e9ma du d\u00e9but : la boucle \u00ab r\u00e9cup\u00e9rer puis lire \u00bb est toujours l\u00e0, mais encadr\u00e9e de deux \u00e9tages en plus, l&rsquo;un qui pr\u00e9pare la question, l&rsquo;autre qui trie ce qui revient.<\/figcaption><\/figure>\n\n\n<table>\n<thead>\n<tr>\n<th>Ce qui casse<\/th>\n<th>Ce qu&rsquo;on ajoute<\/th>\n<th>O\u00f9<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Beaucoup de documents, ou de gros documents : latence et fragments introuvables<\/td>\n<td>Indexation hi\u00e9rarchique : r\u00e9sum\u00e9s des grandes sections, embeddings \u00e0 plusieurs niveaux, m\u00e9tadonn\u00e9es<\/td>\n<td>Avant la recherche<\/td>\n<\/tr>\n<tr>\n<td>Un fragment isol\u00e9 qui perd le contexte de son document<\/td>\n<td>R\u00e9sum\u00e9 du document entier ajout\u00e9 \u00e0 chaque fragment, au prix de calcul et de stockage en plus<\/td>\n<td>Avant la recherche<\/td>\n<\/tr>\n<tr>\n<td>Une information obsol\u00e8te qui remonte<\/td>\n<td>Filtrage par m\u00e9tadonn\u00e9es (par exemple la date) avant la recherche par similarit\u00e9<\/td>\n<td>Avant la recherche<\/td>\n<\/tr>\n<tr>\n<td>Un contexte redondant<\/td>\n<td>R\u00e9sum\u00e9 du contexte trouv\u00e9, pour en \u00e9liminer l&rsquo;information redondante<\/td>\n<td>Apr\u00e8s la recherche<\/td>\n<\/tr>\n<tr>\n<td>Une passe unique qui ne suffit pas<\/td>\n<td>R\u00e9cup\u00e9ration it\u00e9rative, r\u00e9cursive ou adaptative<\/td>\n<td>Autour de la boucle<\/td>\n<\/tr>\n<tr>\n<td>Aucun contr\u00f4le de la r\u00e9ponse<\/td>\n<td>Module de validation : on passe de \u00ab r\u00e9cup\u00e9rer et lire \u00bb \u00e0 \u00ab r\u00e9cup\u00e9rer, lire et r\u00e9\u00e9crire \u00bb<\/td>\n<td>Architecture modulaire<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Les trois variantes de la cinqui\u00e8me ligne m\u00e9ritent un coup d&rsquo;\u0153il, puisqu&rsquo;elles remettent en cause la passe unique elle-m\u00eame.<\/p>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6adef4732a48b&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6adef4732a48b\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1371\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/09\/b1_ch06_retrieval_repete-scaled.png\" alt=\"Trois fa\u00e7ons de r\u00e9p\u00e9ter la r\u00e9cup\u00e9ration : it\u00e9rative (boucle born\u00e9e par un seuil fixe, relanc\u00e9e jusqu'\u00e0 n fois), r\u00e9cursive (requ\u00eate transform\u00e9e \u00e0 chaque tour) et adaptative (un mod\u00e8le juge d\u00e9cide quand r\u00e9cup\u00e9rer)\" class=\"wp-image-168\" srcset=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/09\/b1_ch06_retrieval_repete-scaled.png 2560w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/09\/b1_ch06_retrieval_repete-300x161.png 300w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/09\/b1_ch06_retrieval_repete-1024x549.png 1024w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/09\/b1_ch06_retrieval_repete-768x411.png 768w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/09\/b1_ch06_retrieval_repete-1536x823.png 1536w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/09\/b1_ch06_retrieval_repete-2048x1097.png 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Les deux premi\u00e8res colonnes s&rsquo;arr\u00eatent sur un seuil fixe ; seule la troisi\u00e8me laisse un mod\u00e8le juge d\u00e9cider quand r\u00e9cup\u00e9rer \u00e0 nouveau.<\/figcaption><\/figure>\n\n\n<h2 id=\"trois-idees-recues-a-ranger\">Trois id\u00e9es re\u00e7ues \u00e0 ranger<\/h2>\n<p><em>\u00ab Plus on r\u00e9cup\u00e8re de fragments, plus on a de chances. \u00bb<\/em> Faux : <strong>plus de fragments, plus de redondance<\/strong>. Le contexte du LLM est une s\u00e9rie de fragments concat\u00e9n\u00e9s ; les mod\u00e8les acceptent de plus en plus de contexte mais peinent avec la redondance, et ce qui n&rsquo;est pas essentiel pour r\u00e9pondre r\u00e9duit la performance.<\/p>\n<p><em>\u00ab Si la recherche est bonne, la r\u00e9ponse l&rsquo;est aussi. \u00bb<\/em> Non : <strong>le bon contexte ne suffit pas<\/strong>. Le LLM peut ne pas en extraire la bonne r\u00e9ponse, noy\u00e9 dans le bruit ou des informations contradictoires. Et face \u00e0 un domaine tr\u00e8s technique, un mod\u00e8le g\u00e9n\u00e9raliste aura du mal : ajuster l&#8217;embedder et le LLM peut \u00eatre une solution.<\/p>\n<p><em>\u00ab Un bon r\u00e9glage de k viendra \u00e0 bout de tout. \u00bb<\/em> Non : ni les relations perdues, ni la vue d&rsquo;ensemble absente, ni le raisonnement en plusieurs \u00e9tapes ne se r\u00e8glent avec un param\u00e8tre de recherche. C&rsquo;est pour cela que le tableau pr\u00e9c\u00e9dent range les rem\u00e8des par panne.<\/p>\n<blockquote>\n<p><strong>\ud83d\udccc \u00c0 retenir<\/strong> Un RAG na\u00eff se d\u00e9crit en une ligne : un embedder, une base vectorielle, un LLM, une seule passe. Quand une r\u00e9ponse d\u00e9raille, ne cherche pas un coupable g\u00e9n\u00e9ral : demande-toi \u00e0 quelle \u00e9tape elle s&rsquo;est perdue (trouver, lire ou relier), puis choisis le correctif de cette \u00e9tape.<\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Un RAG na\u00eff r\u00e9cup\u00e8re une fois, puis lit : trois composants, aucun contr\u00f4le. Vois comment il marche, o\u00f9 une r\u00e9ponse s&rsquo;y perd et ce qu&rsquo;on lui ajoute.<\/p>\n","protected":false},"author":1,"featured_media":492,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-493","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-rag"],"_links":{"self":[{"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/posts\/493","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/comments?post=493"}],"version-history":[{"count":3,"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/posts\/493\/revisions"}],"predecessor-version":[{"id":799,"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/posts\/493\/revisions\/799"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/media\/492"}],"wp:attachment":[{"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/media?parent=493"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/categories?post=493"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/tags?post=493"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}