explanation/pourquoi-le-vectoriel.md

Pourquoi la recherche vectorielle plutĂ´t que le plein-texte

Quand on construit la brique de retrieval d'un RAG, une décision structure tout le reste : comment décide-t-on qu'un passage est « pertinent » pour une question ? Deux familles de réponses s'affrontent en apparence. La recherche plein-texte compare des mots. La recherche vectorielle (sémantique) compare du sens. Ce document explique pourquoi le vectoriel est le choix par défaut d'un RAG, ce qu'il coûte, et pourquoi opposer les deux est un faux débat.

Ce document explique le pourquoi. Pour le comment (métrique cosinus, index kNN, score, contrats du composant), voir la référence du moteur RAG. Pour le parcours pas à pas, voir le tutoriel « RAG de bout en bout ».

Le problème : une question n'utilise presque jamais les mots de la réponse

Un utilisateur ne connaît pas le vocabulaire exact de votre documentation. Il tape « comment protéger mon site » là où le document parle de « durcissement TLS et en-têtes HTTP ». Il demande « c'est lent » là où la page traite de « latence et cache de prompt ». Il pose une question en langage naturel — une phrase, une intention — quand le corpus contient des affirmations techniques.

Le fossé entre la formulation de la question et celle de la réponse est la difficulté centrale du retrieval. Toute la valeur d'un RAG dépend de la capacité à le franchir. Les deux approches le franchissent très différemment.

Le plein-texte : trouver les mots

La recherche plein-texte indexe les termes d'un document. À la requête, elle retrouve les documents qui contiennent les mots de la question, pondérés par leur rareté (un mot rare discrimine mieux qu'un mot courant) et leur fréquence dans le document.

C'est une mécanique lexicale : elle raisonne sur des chaînes de caractères, éventuellement normalisées (minuscules, radicaux, pluriels). Ses qualités sont réelles et souvent sous-estimées :

  • Exactitude sur les termes rares : un code d'erreur, un identifiant, un nom de fonction, une rĂ©fĂ©rence de norme — le plein-texte les retrouve au caractère près. Un embedding, lui, peut « diluer » un token rare dans le sens global de la phrase.
  • Transparence : on comprend pourquoi un rĂ©sultat remonte (il contient le mot). C'est auditable, prĂ©visible, sans surprise.
  • CoĂ»t quasi nul : indexer un mot ne demande aucun modèle, aucun calcul vectoriel, aucun service externe.

Sa limite est structurelle : il ne connaît que les mots qu'on lui donne. « Voiture » et « automobile » sont pour lui deux chaînes étrangères. Une question reformulée avec un vocabulaire différent de celui du corpus rate sa cible, même si la réponse est là, exprimée autrement.

Le vectoriel : trouver le sens

La recherche vectorielle change de terrain. Chaque passage est transformé, par un modèle d'embeddings, en un vecteur : une liste de nombres qui encode son sens. La propriété fondamentale de cet espace est que deux textes proches par le sens ont des vecteurs proches, indépendamment des mots employés.

Dès lors, chercher ne consiste plus à comparer des mots mais à mesurer une distance géométrique entre le vecteur de la question et ceux des passages. Le passage le plus « proche » est le plus pertinent — même s'il ne partage aucun mot avec la question.

C'est ce qui débloque les usages qu'un RAG exige :

  • Synonymes et paraphrases : « protĂ©ger mon site » retrouve « durcissement et en-tĂŞtes HTTP » parce que les deux vivent au mĂŞme endroit de l'espace de sens.
  • Questions en langage naturel : une phrase interrogative se compare proprement Ă  une affirmation, lĂ  oĂą le plein-texte butait sur la diffĂ©rence de forme.
  • Robustesse Ă  la formulation : reformuler la question sans changer l'intention retrouve les mĂŞmes passages. C'est prĂ©cisĂ©ment ce qu'on veut d'un assistant documentaire — et ce qu'on teste explicitement (une question et sa reformulation doivent converger).

Le rôle asymétrique de la question et du passage

Un point contre-intuitif éclaire pourquoi le vectoriel est taillé pour le RAG : une bonne chaîne d'embeddings encode différemment un texte selon son rôle. Un passage à indexer et une question à poser ne sont pas traités de la même manière (souvent via des préfixes distincts, de type passage / requête). Le modèle apprend ainsi que « la relation utile n'est pas passage↔passage mais question↔passage » — exactement l'asymétrie d'un RAG, où de courtes questions doivent retrouver de longs extraits. Le plein-texte, lui, ne distingue pas les rôles.

Les compromis du vectoriel (les rendre explicites)

Choisir le vectoriel n'est pas gratuit. Un ingénieur honnête pose la facture sur la table :

  • CoĂ»t de vectorisation. Chaque passage indexĂ© et chaque question posĂ©e doit passer par un modèle d'embeddings — un calcul, souvent un appel rĂ©seau Ă  un service dĂ©diĂ©. Le plein-texte n'a rien de tout cela. Ce coĂ»t se paie Ă  l'ingestion (une fois, par lots) et Ă  chaque requĂŞte (sur la seule question).
  • Un index spĂ©cialisĂ©. Stocker et interroger des vecteurs demande une structure de recherche par plus proches voisins (kNN), qui n'est pas un index texte ordinaire. C'est une dĂ©pendance technique supplĂ©mentaire Ă  installer, configurer et maintenir.
  • Faiblesse sur l'exact et le rare. C'est le revers exact de sa force. LĂ  oĂą le plein-texte excelle — codes, identifiants, termes rares, correspondance au caractère près — le vectoriel est plus flou : il capte le sens global et peut « lisser » le dĂ©tail qui, justement, faisait toute la requĂŞte.
  • OpacitĂ© relative. Un rĂ©sultat remonte parce qu'il est « proche » dans un espace Ă  plusieurs centaines de dimensions. C'est moins immĂ©diatement explicable qu'un mot surlignĂ©. D'oĂą l'importance d'un seuil de score pour Ă©carter les voisins trop lointains : sans lui, on injecte du bruit que le modèle de gĂ©nĂ©ration prendra pour du contexte fiable.
  • DĂ©pendance au modèle. La qualitĂ© du retrieval plafonne Ă  celle du modèle d'embeddings, et changer de modèle impose de tout rĂ©indexer (les vecteurs d'un modèle ne sont pas comparables Ă  ceux d'un autre).

Pourquoi ce n'est pas un choix binaire

Présenter plein-texte et vectoriel comme rivaux est une erreur de cadrage. Leurs forces et leurs faiblesses sont symétriques :

Dimension Plein-texte Vectoriel
Trouve… les mots le sens
Synonymes / paraphrases non oui
Termes exacts / rares / codes excellent moyen
Question en langage naturel fragile naturel
Coût quasi nul vectorisation + index kNN
Explicabilité forte (le mot) plus faible (la distance)

Là où l'un est fort, l'autre est faible. C'est la définition même de deux approches complémentaires. En pratique, les systèmes de retrieval mûrs les combinent (recherche hybride) : le vectoriel assure le rappel sémantique (retrouver ce qui veut dire la même chose), le plein-texte garantit la précision lexicale (ne pas rater le code d'erreur ou l'identifiant que l'utilisateur a tapé au caractère près).

Pourquoi, alors, le vectoriel est-il le choix par défaut d'un RAG ? Parce que le mode d'entrée d'un RAG est la question en langage naturel, et que le premier échec à éviter est le silence : ne rien remonter parce que l'utilisateur n'a pas deviné le vocabulaire du corpus. Le vectoriel adresse frontalement ce risque. Le plein-texte reste une couche d'appoint précieuse — pas le socle. On part du sens, on renforce avec les mots ; rarement l'inverse.

Ă€ retenir

  • Le plein-texte compare des mots ; le vectoriel compare du sens via des embeddings et une distance gĂ©omĂ©trique.
  • Le vectoriel franchit le fossĂ© entre la formulation de la question et celle de la rĂ©ponse (synonymes, paraphrases, langage naturel) — le besoin central d'un RAG.
  • Il se paie : vectorisation, index spĂ©cialisĂ©, moins bon sur l'exact/rare, moins explicable, dĂ©pendant du modèle.
  • Les deux approches sont complĂ©mentaires, pas opposĂ©es. Le vectoriel est le socle par dĂ©faut d'un RAG ; le plein-texte, une couche d'appoint sur les termes exacts.

Suite naturelle : la référence du moteur RAG (mécanique de la recherche kNN cosinus et du score) et le tutoriel « RAG de bout en bout » (mise en œuvre pas à pas).

Assistant documentaire

Posez une question sur la documentation. Les réponses citent leurs sources — un clic ouvre le document à gauche.