Accueil / Articles

Lorsque RAG récupère le mauvais document avec une similarité de 0,89 : proximité versus pertinence.

Pourquoi RAG peut récupérer le mauvais document avec une similarité de 0,89 : la proximité n’est pas la pertinence, la géométrie des embeddings est déformée, et la recherche hybride ainsi que le réclassement aident.

Éditeur : REACTAPP.TOP10 min de lecture2204 mots

Sources: *What if Your RAG Retrieves the Wrong Document — Even When the Similarity Score Looks Perfect?*

C’est une scène courante dans la génération augmentée par récupération d’informations : les fragments sont incorporés et indexés, un utilisateur pose une question, la requête est incorporée, la similarité cosinus sélectionne les k meilleurs fragments, ceux-ci sont intégrés dans le prompt, et le LLM répond. Le meilleur fragment a obtenu une note de 0,89, ce qui semble prometteur, mais la réponse reste fausse.

Tout ceux qui ont mis en œuvre plus d’un système RAG ont déjà rencontré ce problème. Il se reproduit si fréquemment que aucune modification des techniques de segmentation ou de l’incorporation ne parvient à y remédier. La question pertinente est donc de savoir si le système évalue la pertinence ou uniquement la proximité géométrique.

Une revue de la technologie RAG parue en août 2026 dans la revue Symmetry qualifie cette tension de l’une des quatre contradictions structurelles du domaine, l’appelant le décalage géométrico-sémantique. Il est utile d’être précis quant à ce que cette désignation signifie : elle ne prétend pas que la recherche vectorielle est défectueuse, et ce n’est pas non plus un théorème démontré sur les capacités de la géométrie. Il s’agit plutôt d’une manière de nommer une limitation qui se manifeste empiriquement dans des configurations de récupération très différentes.

Un aperçu du processus

En l’absence d’outils supplémentaires, RAG se compose de deux étapes reliées entre elles.

  • Lors de l’indexation, les documents sont divisés en blocs ; chaque bloc est traité par un encodeur pour être transformé en vecteur dense, puis ces vecteurs sont stockés dans un index tel que FAISS ou HNSW.
  • Lors de la requête, la question est également encodée avec le même encodeur, la similarité avec chaque vecteur de bloc est calculée, les k meilleurs résultats sont sélectionnés et transmis au LLM en tant que contexte.

Une hypothèse fondamentale permet de maintenir tout le système en place : la distance dans l’espace vectoriel reflète la pertinence sémantique dans le langage. Les textes ayant un sens similaire devraient se trouver proches les uns des autres, tandis que ceux ayant des sens différents devraient être éloignés l’un de l’autre.

La plupart du temps, cette hypothèse est suffisamment valide pour être utile, c’est pourquoi la récupération dense fonctionne. Les problèmes apparaissent aux extrémités, et en environnement de production, ces extrémités se présentent plus souvent que prévu. Chaque fois qu’un système de récupération classe quelque chose en haute position, il répond à la question de savoir si ce passage est proche dans l’espace vectoriel, et non s’il résout la question. Généralement, les deux réponses coïncident, mais les cas intéressants sont ceux où elles ne coïncident pas.

La similarité n’est pas la pertinence

La similarité cosinus mesure dans quelle mesure deux vecteurs pointent dans la même direction. Elle ne mesure pas directement si un passage répond à la question. Les deux vecteurs se chevauchent suffisamment pour que la récupération dense soit véritablement utile, mais il s’agit de choses différentes, et une part significative des échecs de récupération provient de cette différence.

Cette observation est ancienne. L’article de 2020 qui a introduit DPR présente un ensemble de chiffres éloquents : son système de récupération à double encodeur dense a atteint 78,4 % de précision dans le top 20 pour les questions naturelles, puis est tombé à 63,2 % pour SQuAD, tandis que le simple algorithme BM25 a obtenu 68,8 %. Les auteurs ont attribué cela à un biais de distribution lors de l’entraînement : les questions de SQuAD partagent un nombre anormalement élevé de mots avec leurs passages de réponse, un schéma que un moteur de correspondance lexicale exploite mieux qu’un encodeur dense entraîné sur des données plus larges.

Un seul point de données ne permet pas d’établir une loi universelle. Il montre cependant de manière concrète que la similarité sémantique et la précision lexicale peuvent diverger sur le même critère d’évaluation avec le même outil de récupération. L’analyse de Symmetry généralise ce phénomène : un mécanisme ajusté pour des significations similaires n’est pas automatiquement adapté au mot qui compte vraiment, et l’inverse est également vrai. Le fait que cela s’applique à tous les contextes de récupération doit être considéré comme une hypothèse de travail. Elle correspond néanmoins à de nombreuses expériences pratiques.

Où la géométrie se déforme

Un niveau plus profond révèle le problème géométrique lui-même. Les méthodes de récupération dense transforment le texte en un espace vectoriel continu, presque toujours euclidien, car le produit scalaire et la similarité cosinus en font l’hypothèse de base. L’espace euclidien est efficace pour indiquer que deux éléments sont similaires selon certaines dimensions. Il se montre moins adapté à au moins trois types de structures qui apparaissent fréquemment dans les textes réels.

  • Hiérarchie. Un chien est un mammifère, qui est un animal. Un espace vectoriel plat ne possède pas de notion intrinsèque de relation d’appartenance, et l’approximation d’un arbre à l’aide de distances linéaires entraîne davantage de distorsions à mesure que la hiérarchie s’approfondit.
  • Synonymie versus quasi-synonymie. « Bon marché » et « pas cher » devraient être proches l’un de l’autre. « Bon marché » et « mal fabriqué » ne devraient pas l’être, pourtant ils apparaissent si souvent dans les textes d’entraînement que leurs vecteurs peuvent être rapprochés davantage que ce que la signification seule justifierait.
  • Temps. Le PDG d’une entreprise est une personne différente selon le moment où la phrase a été écrite. Une embedding statique ne dispose d’aucun axe pour représenter un fait qui prend fin, à moins que quelque chose en amont ne l’encode.

Un remède proposé dans la littérature est l’utilisation de l’espace hyperbolique au lieu de l’espace euclidien. Les distances y augmentent de manière exponentielle vers l’extérieur, ce qui permet de représenter des hiérarchies en forme d’arbre avec moins de distorsion, et de les mapper naturellement sur de nombreux niveaux. Les méthodes de récupération dense hyperbolique ont montré de meilleures capacités de généralisation sur des tâches de hiérarchie conceptuelle. Il s’agit cependant d’un compromis et non d’une solution définitive : les coûts de calcul augmentent, les outils disponibles sont bien moins matures, et la hiérarchie n’est qu’un des trois modèles possibles ; par conséquent, un corpus dominé par la synonymie ou par des évolutions temporelles ne tirera probablement aucun avantage du changement de géométrie.

C’est bien là ce à quoi renvoie ce déséquilibre : différentes hypothèses géométriques entraînent des compromis quant aux relations sémantiques qui peuvent être représentées de manière adéquate. En choisissant le modèle euclidien, la hiérarchie en pâtit généralement. En privilégiant le modèle hyperbolique, les coûts en termes de calcul et l’immaturité des outils en souffrent, tandis que la synonymie et le temps restent sans solution. Quel que soit l’espace choisi, ce choix décide implicitement quelles relations le système de recherche gère bien et lesquelles il est plus susceptible de mal interpréter.

Un exemple avec documentation

Imaginons un ensemble de documentation de produit et la question suivante : comment puis-je réinitialiser ma clé API ?

Le retriever renvoie un extrait intitulé « comment réinitialiser le mot de passe d’un compte » avec une similarité cosinus de 0,87. C’est un score élevé, car les notions de réinitialisation, de clé API et de mot de passe se situent toutes dans la même catégorie relative à l’authentification et à la gestion des comptes. L’extrait concernant la rotation des clés API se trouve dans une autre section, est formulé avec un vocabulaire moins générique, et obtient un score de 0,81.

Le document incorrect est revenu en premier, avec un score qui dépasse largement tout seuil de pertinence naïf. L’espace d’embedding a correctement identifié que les deux documents concernent la sécurité des comptes. Il n’a cependant pas pu distinguer la procédure spécifique à l’un de celle de l’autre, étant donné que ces deux éléments appartiennent au même cluster sémantique.

Le même schéma s’applique aux clauses contractuelles qui diffèrent par une seule négation, aux instructions de dosage qui varient en fonction du sous-groupe de patients, ainsi qu’aux termes financiers qui diffèrent d’une année fiscale à l’autre. Chaque fois, la proximité des vecteurs reflète un sujet commun sans indiquer si la réponse correspond ou non.

La récupération classe les candidats sans rendre de jugement

De nombreux pipelines RAG supposent implicitement que le résultat numéro 1 ou numéro k est la réponse quant à l’endroit où se trouve l’information. Il serait préférable de le considérer comme un candidat qui doit encore prouver sa pertinence dans le contexte donné.

Un récupérateur qui affiche la page de mot de passe pour une question concernant une clé API n’a pas nécessairement échoué dans sa tâche. En termes stricts, sa mission consiste en une première étape peu coûteuse : réduire une collection énorme à un petit nombre de candidats plausibles. Le point faible réside dans une conception qui accepte le premier résultat comme étant la vérité absolue sans l’examiner davantage. La chaîne de traitement n’est pas obligatoirement composée de la requête, du récupérateur, du meilleur candidat parmi les 10, puis du LLM. Elle peut aussi commencer par la requête, suivie d’un récupérateur peu coûteux mais offrant un taux élevé de rappel, puis d’un ensemble de candidats, ensuite d’un réordonneur plus lent mais plus précis, puis du meilleur candidat, et enfin du LLM.

Les échecs de récupération et les échecs de génération sont liés mais distincts, et les confondre fait paraître le déséquilibre plus grave qu’il ne l’est en réalité. Un système de type top-1 en une seule étape ne peut pas se remettre en selle une fois que le classement est erroné. Un système qui considère la récupération comme une production de candidats et qui laisse le jugement réel de pertinence à une deuxième étape a plus de chances de détecter les cas presque réussis, c’est-à-dire des documents suffisamment proches dans l’espace vectoriel pour sembler être les meilleurs, mais suffisamment différents sur le fond pour être problématiques.

Pourquoi les systèmes de production en tiennent compte

Il ne s’agit pas là d’une simple approche théorique. L’écart entre proximité et pertinence entraîne des échecs concrets et coûteux.

  • Amplification silencieuse des hallucinations. Le LLM ne peut pas détecter qu’un fragment est lié au sujet mais incorrect. Il produit une réponse fluide et convaincante à partir de cette source erronée, et une réponse convaincante mais fausse est bien pire que d’avouer ne pas savoir, pour presque toute utilisation ultérieure.
  • Perte de précision sur les corpus hiérarchisés. Les anecdotes ainsi que la littérature spécialisée indiquent que plus une base de connaissances est profonde et structurée, avec des politiques imbriquées, des spécifications versionnées ou des organigrammes, plus la recherche vectorielle simple rencontre des difficultés. Cette étude propose un diagnostic formel permettant d’évaluer la dégradation de la précision à mesure que la profondeur de la hiérarchie augmente. Il s’agit d’une métrique utile et non d’une courbe fixe, et elle est plus facile à mesurer sur le corpus concret que sur des hypothèses générales.
  • Invisible dans l’ensemble d’évaluation tant que cela ne coûte pas d’argent. Les benchmarks standards tels que recall@k sur des paires de questions génériques ne mettent pas en évidence les distinctions hiérarchiques ou les synonymies proches de la même manière qu’un véritable corpus de domaine. Le jeu de tests interne est réussi, puis une version du problème clé-API apparaît durant la troisième semaine de production.
  • Atténuation des risques

    Rien de tout cela ne signifie que la récupération dense est défaillante. Cela signifie simplement que la récupération par un seul mécanisme est insuffisamment spécifiée pour les corpus réels. Ces mesures d’atténuation sont classées approximativement en fonction du degré d’adaptation requis par chaque architecture.

    Récupération hybride, lexicale et dense. Exécuter en parallèle BM25 et la récupération dense, puis fusionner les scores, par exemple à l’aide de la fusion par rang réciproque, qui est une solution courante et simple. Cela corrige directement le défaut lié à la superposition lexicale sans affecter le modèle d’embedding.

    # Minimal hybrid retrieval sketch: dense + BM25 fused via RRF
    from rank_bm25 import BM25Okapi
    import numpy as np
    
    def reciprocal_rank_fusion(dense_ranked_ids, bm25_ranked_ids, k=60):
        scores = {}
        for rank, doc_id in enumerate(dense_ranked_ids):
            scores[doc_id] = scores.get(doc_id, 0) + 1 / (k + rank + 1)
        for rank, doc_id in enumerate(bm25_ranked_ids):
            scores[doc_id] = scores.get(doc_id, 0) + 1 / (k + rank + 1)
        return sorted(scores.items(), key=lambda x: -x[1])# dense_ranked_ids  = [doc_id, ...] from your vector store's top-k search
    # bm25_ranked_ids   = [doc_id, ...] from bm25.get_top_n(query_tokens, doc_ids, n=k)
    fused = reciprocal_rank_fusion(dense_ranked_ids, bm25_ranked_ids)
    

    Réclassement par cross-encoder. On utilise une recherche dense pour générer de manière économique un ensemble de 50 à 100 éléments présentant un taux de rappel élevé, puis on procède au réclassement à l’aide d’un cross-encoder qui prend en compte à la fois la requête et le document. Cette méthode coûte plus cher par paire, mais elle est bien plus efficace dans les cas où les documents sont proches sur le plan thématique mais contiennent des erreurs factuelles, car elle ne dépend pas d’un vecteur fixe unique pour chaque texte.

    Réécriture ou décomposition de la requête. RQ-RAG en est un exemple : le système est entraîné à reformuler les questions vagues ou composées avant toute recherche. Cela aide lorsque le manque de correspondance provient d’une question mal spécifiée et non d’une géométrie complexe dans le corpus.

    Récupération consciente de la structure au style GraphRAG. Pour des matériaux véritablement hiérarchiques ou relationnels tels que les organigrammes, les dépendances entre clauses ou les taxonomies de produits, il convient de représenter cette structure explicitement sous forme de graphe plutôt que de la forcer dans un espace plat. La géométrie n’est plus combattue, elle est évitée.

    Ensembles adaptés au domaine. Affiner l’encodeur à l’aide de négatifs solides tirés du corpus propre à l’organisation, c’est-à-dire des paires de quasi-synonymes proches en sens mais incorrectes en tant que réponses. Les résultats montrent un rétrécissement mesurable de l’écart, sans toutefois le faire disparaître.

    Chacune de ces solutions traite un symptôme spécifique et aucune ne résout la contradiction sous-jacente, ce dont il convient de reconnaître ouvertement l’existence.

    La question de recherche plus large

    Si différentes géométries permettent de représenter efficacement des choses différentes, la question qui se pose naturellement est de savoir si la forme de l’espace de représentation pourrait s’adapter à la requête ou au corpus plutôt que d’être fixée à l’avance.

    La revue Symmetry indique cette direction et la présente comme une rupture de symétrie : choisir une métrique euclidienne, hyperbolique ou mixte revient à décider quelle symétrie sémantique abandonner. La direction proposée est l’apprentissage d’un espace géométrique hybride, où un système ajuste sa structure métrique en fonction de la relation codée à chaque point du corpus, sans s’engager en faveur d’une géométrie globale pour l’ensemble de l’index. Il s’agit d’une direction proposée dans un article de revue, et non d’une technique mise en œuvre avec des benchmarks correspondants. C’est une hypothèse à suivre, et non une base sur laquelle construire aujourd’hui.

    Ce qui change réellement de manière utile, c’est la question à se poser. Au lieu de se demander quel modèle d’incorporation est le meilleur, on se demande quelle forme prennent réellement les relations sémantiques dans les données, et si l’architecture de récupération dispose de mécanismes pour représenter cette forme.

    Points clés

    En environnement de production, une forte similarité cosinus et une récupération correcte coïncident généralement suffisamment bien pour que la différence ne soit pas perceptible. Les efforts de conception doivent se concentrer sur les cas où ces deux aspects s’éloignent sans que cela ne soit détecté, avec des vecteurs proches l’un de l’autre en raison d’un sujet commun et non d’une réponse commune.

    Un modèle d’incorporation amélioré ne résoudra pas le problème, tout comme aucune architecture isolée ne le pourra. Un espace géométrique plat, quel qu’il soit, reflète un choix implicite quant aux relations les plus importantes dans le corpus, et c’est pourquoi il existe des méthodes de récupération hybrides, de réclassement et d’indexation tenant compte de la structure : personne ne peut prendre ce risque sans prendre des précautions. Les modèles d’incorporation ne sont pas mauvais. On a demandé à un espace géométrique de réaliser des raisonnements sémantiques pour lesquels il n’a jamais été conçu pleinement, et il accomplit un travail impressionnant jusqu’au moment où il échoue.