Cet article est une traduction automatique de l’article original publié sur le blog Transcode.
Une question de trivia cinématographique apparemment simple expose les limites fondamentales des systèmes d’IA actuels.
J’ai récemment commencé à travailler sur un petit projet de “chat cinéma” utilisant le RAG pour répondre à des questions de trivia sur les films. L’idée était simple : charger un scénario de film et faire en sorte qu’un agent IA réponde aux questions à son sujet. Cependant, deux questions apparemment simples ont constamment mis le système en échec :
- Dans Retour vers le Futur, quel était le nom du chien de Doc Brown en 1955 ?
- Dans Star Wars Épisode IV, combien de planètes Luke visite-t-il ?
Ces échecs ont révélé quelque chose d’important sur la nature complexe, dépendante du contexte et du temps, des scénarios de films que les systèmes RAG actuels peinent à gérer.
Introduction au RAG
Le RAG (Retrieval Augmented Generation, ou Génération Augmentée par Récupération) est une technique permettant de fournir aux agents IA un accès aux connaissances provenant de sources externes telles que des documents. Le processus standard comprend :
- Le découpage des documents en fragments (chunks)
- L’encodage de chaque fragment sous forme d’embeddings (vecteurs)
- Le stockage de ces embeddings dans une base de données vectorielle
- La recherche de fragments pertinents par correspondance de similarité
Cette approche fonctionne bien pour les documents où chaque section contient des informations factuelles indépendantes. Par exemple, si vous recherchez “randonnée”, le système peut trouver une citation de Thoreau sur la marche grâce à la similarité sémantique, même si le mot “randonnée” n’apparaît jamais dans le texte. La recherche vectorielle reconnaît la connexion conceptuelle entre randonnée et marche.
Le problème des scénarios de films
Les scénarios de films présentent des défis uniques pour les systèmes RAG. Contrairement aux manuels techniques ou aux encyclopédies, comprendre une scène dans un film nécessite de savoir ce qui s’est passé dans les scènes précédentes. Une grande partie du contexte de ce que vous lisez dépend de ce qui s’est passé dans les sections précédentes.
Manque de contexte
Considérons la question sur Retour vers le Futur : “Quel était le nom du chien de Doc Brown en 1955 ?”
Lorsque le système RAG recherche des fragments pertinents, il trouve de nombreuses références au chien de Doc Brown tout au long du scénario. Cependant, la plupart de ces fragments mentionnent “Einstein” - le nom du chien en 1985. Le système n’a aucun moyen de distinguer la ligne temporelle de 1985 de celle de 1955 sans un contexte plus large. La bonne réponse, “Copernic”, apparaît dans les scènes de 1955, mais les fragments ne portent pas suffisamment de contexte temporel pour faire cette distinction.

Il est facile de trouver le contexte requis quand on connaît la question, mais il est beaucoup plus difficile d’avoir une solution générique a priori. Comment découper un document de manière à préserver le contexte temporel, géographique et relationnel ?
Manque de relations indirectes
La question sur Star Wars présente un autre défi : “Combien de planètes Luke visite-t-il ?”
Répondre à cette question nécessite de comprendre que Luke voyage à bord du Faucon Millenium et d’identifier tous les endroits où ce vaisseau atterrit. Cela implique de connecter plusieurs informations à travers différents fragments :
- Luke est passager du Faucon Millenium
- Le Faucon Millenium visite diverses planètes
- Par conséquent, Luke visite ces planètes

Les recherches vectorielles standard peinent à établir ces connexions systématiques. Il faut identifier toutes les occurrences d’événements liés et reconstituer le récit.
Graph RAG
L’approche GraphRAG de Microsoft Research tente de résoudre ces limitations en utilisant un LLM pour traiter chaque fragment et extraire les entités et relations intéressantes dans un graphe. Au lieu de simplement stocker des fragments de texte, le système construit un graphe de connaissances des entités (personnes, lieux, choses) et de leurs relations.
J’ai testé cette approche en utilisant le projet open-source R2R avec Neo4J comme base de données de graphes. Le système a réussi à extraire les entités et relations :
- Entité : BROWN (Doc Brown)
- Entité : EINSTEIN (chien)
- Entité : COPERNICUS (chien)
- Relation : BROWN possède EINSTEIN
- Relation : BROWN possède COPERNICUS
Cependant, même avec ces relations cartographiées, il nous manque encore un contexte clé pour déterminer quel chien devrait être la réponse pour 1955. Le graphe connaît les deux chiens et leur connexion avec Doc Brown, mais il ne capture pas la dimension temporelle - quel chien appartient à quelle période.
Le besoin d’une meilleure contextualisation
Le RAG standard et le Graph RAG s’avèrent tous deux insuffisants sans cadres contextuels plus solides. Nous avons besoin d’une approche plus holistique de la récupération de contexte.
Pensez à la façon dont les humains lisent et se souviennent des récits. En lisant ce paragraphe, vous ne vous souvenez pas des mots exacts des précédents. Vous vous souvenez cependant du contexte général - les thèmes, la chronologie, les personnages impliqués et comment ils sont liés les uns aux autres.
Différents types de documents nécessitent différents modèles contextuels :
- Films/Histoires : Modèles temporels (chronologie des événements, développement des personnages)
- Guides de voyage : Modèles géographiques (relations spatiales, proximité)
- Documents juridiques : Modèles basés sur les versions (amendements, changements historiques)
- Articles scientifiques : Modèles spatiaux spécifiques au domaine (relations entre concepts)
Prochaines étapes
Je crois que nous devons explorer de nouvelles approches du RAG et de la contextualisation des fragments. Quelques idées :
Créer des benchmarks : Développer un benchmark composé de scénarios de films et de questions de trivia qui testent la compréhension temporelle, géographique et relationnelle.
Fragments contextualisés : Plutôt que de traiter les fragments comme des unités isolées, maintenir leur relation avec la structure plus large du document. Utiliser des LLMs pour générer des résumés contextuels qui accompagnent chaque fragment.
Récupération multimodale : Combiner recherche vectorielle, relations de graphe et modèles temporels/spatiaux pour fournir un contexte plus riche.
Contexte hiérarchique : Construire plusieurs niveaux de contexte - du niveau de la phrase au paragraphe, à la scène, à l’acte et au document entier - permettant au système de zoomer et dézoomer selon les besoins.
Je suis curieux d’entendre d’autres personnes travaillant sur des défis similaires. Avez-vous rencontré d’autres projets ou techniques qui pourraient résoudre ce “défi Copernic” ? Comment gérez-vous la récupération d’informations dépendantes du contexte dans vos systèmes RAG ?
Si vous souhaitez suivre cette exploration, abonnez-vous à mes mises à jour. Je partagerai les progrès sur le projet OpenGPA et approfondirai ces techniques de contextualisation.