RAG Jade est un exemple de développement de Retrieval Augmented
Generation développé à partir de la bibliothèque Python « Llama
Index » et utilisant le LLM Gemini 2.0 Flash (Google).
L’idée de ce type
d’approche est de faire travailler un LLM sur un ensemble
prédéterminé de documents afin que les réponses soient fondées
sur ces références uniquement. En l’espèce, RAG Jade fonctionne
sur la base de données Jade (open data des arrêts du Conseil d’État
et des Cours administratives d’appel, soit début 2025 environ 550
000 arrêts).
RAG Jade met en
place une stratégie de recherche fondée sur les développements que
l’on trouve dans « Recherche Jade » sur le site :
il s’agit de calculer la proximité d’ensembles de mots (Bag of
words) sur une distance entre deux vecteurs de mots calculée comme
le cosinus des vecteurs. La bibliothèque Python Gensim est utilisée.
Pour fournir une
réponse RAG Jade procède selon les étapes suivantes :
1- Gemini extrait
les concepts juridiques de la question posée
2- Ces concepts
constituent un « bag of words » qui est comparé avec la
base de paragraphes pour les sommaires des décisions au recueil
Lebon. Un premier ensemble d’arrêts est sélectionné à partir
d’un seuil de pertinence.
3- Les concepts vont
également être traités avec l’ensemble des considérants de la
base Jade pour extraire des arrêts à partir d’un autre seuil de
pertinence.
4- Ces deux
ensembles sont pondérés – on va privilégier proportionnellement
les arrêts classés au Lebon - et on prend les arrêts les plus
récents (le choix est de travailler sur les arrêts récents d’abord
pour disposer des textes les plus récents et des jurisprudences les
plus récentes). Il serait possible d’affiner cette étape en
adaptant plus finement l’ensemble total des arrêts retenus par
exemple en jouant à la fois sur la date de l’arrêt et sur son
score de pertinence.
6- Les arrêts sont
transformés en « nodes » avec comme metadata leur titre,
la référence du fichier, le classement Lebon et le score de
pertinence.
7- L’ensemble des
nodes est fourni à Gemini qui traite la question et ne travaille que
sur ces arrêts pour fournir la réponse.
8- La réponse est
fournie sous forme d’un fichier Json qui est traité pour fournir
du HTML affichable.