Pourquoi les systèmes RAG traditionnels perdent le contexte essentiel

Les systèmes RAG traditionnels souffrent d'un problème fondamental de perte de contexte lors du découpage des documents en chunks. Cette fragmentation détruit les relations sémantiques essentielles entre les informations, créant des fragments isolés qui perdent leur signification d'origine.

Prenons l'exemple concret d'un document financier SEC où un chunk contient uniquement : "The company's revenue grew by 3% over the previous quarter." Sans contexte, cette information devient totalement ambiguë - de quelle entreprise parle-t-on ? Quelle période est concernée ? Quel était le chiffre d'affaires précédent ?

Les solutions traditionnelles ont montré leurs limites criantes :

  • L'augmentation de la taille des chunks dilue la précision sémantique
  • L'overlapping augmente les coûts sans résoudre le problème fondamental
  • Les approches comme Document Summary Index ou HyDE montrent des performances décevantes

Cette perte de contexte se traduit par un taux d'échec de récupération de 5,7% dans les systèmes RAG classiques, compromettant directement la qualité des réponses générées et créant des risques d'interprétations erronées pour les utilisateurs finaux.

Visuel 2

Comment fonctionne le Contextual Retrieval d'Anthropic

Le Contextual Retrieval d'Anthropic résout le problème de perte de contexte en ajoutant une couche d'enrichissement sémantique avant l'indexation des chunks. Cette approche révolutionnaire repose sur deux composantes techniques complémentaires : les Contextual Embeddings et le Contextual BM25.

Le processus commence par la génération automatique d'un contexte explicatif pour chaque chunk via Claude. L'IA analyse le document complet et produit une description contextuelle de 50 à 100 tokens qui situe précisément le chunk dans son environnement d'origine. Cette contextualisation transforme radicalement la qualité des informations indexées.

Prenons l'exemple concret d'un chunk isolé : "The company's revenue grew by 3% over the previous quarter." Sans contexte, cette information est ambiguë et difficilement exploitable. Après traitement par Claude, le chunk devient : "This chunk is from an SEC filing on ACME corp's performance in Q2 2023; the previous quarter's revenue was $314 million. The company's revenue grew by 3% over the previous quarter."

Le prompt utilisé par Anthropic pour cette génération est remarquablement efficace :

"<document> {{WHOLE_DOCUMENT}} </document> Here is the chunk we want to situate within the whole document <chunk> {{CHUNK_CONTENT}} </chunk> Please give a short succinct context to situate this chunk within the overall document for the purposes of improving search retrieval of the chunk."

Une fois le contexte généré, il est systématiquement préfixé au chunk original avant la création des embeddings vectoriels et de l'index BM25. Cette intégration garantit que chaque recherche, qu'elle soit sémantique ou par mots-clés, bénéficie de l'enrichissement contextuel.

L'implémentation technique tire parti du prompt caching de Claude pour optimiser les coûts. Le document de référence est mis en cache une seule fois, réduisant le coût de contextualisation à 1,02$ par million de tokens de documents traités.

Visuel 3

Stratégies de chunking sémantique pour optimiser la récupération

Le chunking sémantique constitue le fondement technique qui permet au Contextual Retrieval d'atteindre ses performances exceptionnelles. Alors que le chapitre précédent a détaillé comment enrichir les chunks avec du contexte explicatif, nous explorons ici les stratégies pour créer des chunks qui préservent naturellement la cohérence sémantique.

Les approches traditionnelles de chunking présentent des limitations majeures. Le fixed-size chunking divise arbitrairement le texte tous les 500 tokens, risquant de fragmenter des phrases ou des concepts liés. Cette méthode simple peut séparer "L'entreprise a enregistré une croissance de 3%" de "au cours du trimestre précédent", créant des chunks ambigus.

Le sentence-based chunking améliore cette approche en respectant les frontières de phrases, mais peut toujours diviser des paragraphes cohérents. Le recursive chunking de LangChain offre un compromis intelligent en tentant de découper d'abord sur les doubles retours à la ligne, puis les phrases, puis les mots :

Cette hiérarchie préserve mieux la structure logique des documents, particulièrement efficace pour les rapports financiers ou les politiques d'entreprise où la structure sectionne est cruciale.

L'embedding-based semantic chunking représente l'état de l'art. Cette technique utilise les embeddings de phrase pour détecter les changements sémantiques. En calculant la similarité cosinus entre phrases consécutives avec des modèles comme 'all-MiniLM-L6-v2', le système identifie automatiquement où diviser le texte quand la similarité chute sous un seuil défini.

Cette approche s'adapte naturellement aux transitions thématiques. Dans un document médical, elle séparerait automatiquement les sections sur les symptômes, le diagnostic et le traitement, même sans marqueurs explicites.

L'adaptation de la taille des chunks au contexte reste essentielle. Les documents légaux nécessitent des chunks plus larges (800-1200 tokens) pour préserver les clauses complexes, tandis que les contenus courts comme les tweets peuvent être traités en chunks de 200-300 tokens. Les papers scientifiques bénéficient d'un chunking respectant la structure : abstract, introduction, méthodologie comme unités distinctes.

Les meilleures pratiques incluent l'utilisation d'overlap windows de 50-100 tokens pour maintenir la continuité contextuelle entre chunks adjacents, et l'enrichissement avec des métadonnées (titres de section, numéros de page) pour faciliter le reranking ultérieur.

Implémentation pratique et optimisations techniques

L'implémentation du Contextual Retrieval nécessite une architecture technique robuste pour gérer efficacement la génération de contexte et l'optimisation des coûts. L'exemple d'Amazon Bedrock Knowledge Bases illustre parfaitement cette approche avec une solution basée sur des fonctions Lambda et des buckets S3.

L'architecture repose sur un pipeline de transformation en quatre étapes : lecture des fichiers depuis S3, chunking des documents, génération du contexte via Claude 3 Haiku, et stockage des chunks enrichis dans un bucket intermédiaire. Cette approche permet de traiter de gros volumes de documents tout en maintenant la traçabilité et la scalabilité.

Le prompt caching d'Anthropic représente une innovation majeure pour réduire les coûts d'implémentation. Au lieu de passer le document de référence pour chaque chunk, le système charge le document une seule fois en cache et référence ensuite ce contenu mis en cache. Avec des chunks de 800 tokens, des documents de 8k tokens et 100 tokens de contexte par chunk, le coût unique pour générer des chunks contextualisés n'est que de 1,02$ par million de tokens de document.

Le choix du modèle d'embedding s'avère critique pour les performances. Les tests d'Anthropic révèlent que Gemini Text 004 et Voyage offrent les meilleures performances, surpassant significativement les modèles généralistes. Ces modèles spécialisés captent mieux les nuances sémantiques nécessaires au Contextual Retrieval.

L'ajout d'une étape de reranking avec Cohere pousse encore plus loin l'optimisation. Cette technique filtre les 150 chunks les plus pertinents pour n'en conserver que les 20 meilleurs, basé sur leur score de pertinence par rapport à la requête utilisateur. Le reranking combiné au Contextual Retrieval réduit le taux d'échec de récupération de 67% (de 5,7% à 1,9%).

Cependant, le reranking introduit un trade-off latence/coût important. Chaque étape de reranking ajoute de la latence même si les scores sont calculés en parallèle. Les organisations doivent donc expérimenter avec différents paramètres pour trouver l'équilibre optimal entre performance de récupération, coût opérationnel et temps de réponse selon leur cas d'usage spécifique.

Performances mesurées et cas d'usage concrets

Les résultats quantifiés d'Anthropic démontrent l'efficacité remarquable du Contextual Retrieval. Les Contextual Embeddings réduisent à eux seuls le taux d'échec de récupération de 35% (5,7% → 3,7%). La combinaison complète avec Contextual BM25 atteint une amélioration de 49% (5,7% → 2,9%). L'ajout du reranking pousse cette performance jusqu'à 67% d'amélioration (5,7% → 1,9%).

La méthodologie d'évaluation d'Anthropic utilise le recall@20 comme métrique principale, mesurant le pourcentage de documents pertinents récupérés dans les 20 premiers résultats. Les tests ont été menés sur différents domaines : bases de code, fiction, articles ArXiv et publications scientifiques, avec des modèles d'embeddings variés (Gemini Text 004, Voyage).

En support client, cette approche permet aux chatbots d'accéder précisément aux informations spécifiques à l'entreprise. Dans l'analyse légale, les systèmes peuvent situer les références juridiques dans leur contexte documentaire complet. Pour la documentation technique, les manuels complexes conservent leurs interconnexions sémantiques essentielles.

Comparé aux alternatives comme HyDE ou LSA, le Contextual Retrieval offre un apprentissage en ligne plus adaptatif. Le coût d'implémentation de 1,02$ par million de tokens reste acceptable face aux gains de précision, particulièrement efficace pour les domaines nécessitant une compréhension contextuelle fine.