Gagner le RAG Challenge : les secrets d’Ilya Rice
Ilya Rice partage les stratégies gagnantes qui lui ont permis de se hisser à la première place de l’Enterprise RAG Challenge. Son succès repose sur une approche systématique, combinant une analyse fine des données, une architecture RAG optimisée et l’utilisation judicieuse de modèles de langage avancés, même les plus compacts. Cet article décortique les étapes clés de son processus, du parsing des documents à la génération des réponses, offrant un aperçu précieux pour quiconque souhaite exceller dans le domaine du RAG.
Points clés
- Ilya Rice a remporté la première place de l’Enterprise RAG Challenge dans les deux catégories de prix et sur le classement SotA.
- La tâche consistait à créer un système de questions-réponses basé sur 100 rapports annuels d’entreprises, à analyser en 2h30.
- Le système devait répondre à 100 questions aléatoires avec des réponses définitives (Oui/Non, nom d’entreprise, titres, métriques numériques) et fournir les références de page.
- L’architecture gagnante intègre deux routeurs et un reranking par LLM en plus des étapes RAG de base (Parsing, Ingestion, Retrieval, Answering).
- Le parsing des PDF est une tâche complexe, et Ilya Rice a personnalisé le parser Docling pour ses besoins, utilisant l’accélération GPU pour traiter 15 000 pages en 40 minutes.
- La sérialisation des tables, bien que prometteuse, n’a finalement pas été utilisée dans la solution gagnante car le parser et le retriever géraient suffisamment bien les tables.
- Les documents sont divisés en “chunks” de 300 tokens avec un chevauchement de 50 tokens, chaque chunk stockant son ID et le numéro de page parent.
- 100 bases de données vectorielles distinctes ont été créées (1 base de données = 1 document) en utilisant FAISS avec l’index IndexFlatIP pour une meilleure précision.
- Le reranking par LLM (GPT-4o-mini) après la recherche vectorielle s’est avéré très efficace et économique, ajustant les scores de pertinence des pages.
- Le système utilise un routage intelligent des requêtes vers la base de données appropriée en extrayant le nom de l’entreprise de la question.
- Le routage des requêtes vers les prompts permet de fournir l’ensemble d’instructions pertinent en fonction du type de réponse attendu (int/float, bool, str, list[str]).
- L’utilisation de Chain of Thoughts (CoT) et de Structured Outputs (SO) a significativement amélioré la qualité et la cohérence des réponses, même pour les modèles plus faibles.
- Un reparser SO a été mis en place pour garantir la conformité du modèle au schéma de sortie, même pour les modèles ne supportant pas nativement les SO.
- L’ajout d’exemples “one-shot” dans les prompts a aidé à démontrer le processus de raisonnement et à clarifier les nuances.
- L’analyse approfondie des questions et des exigences de réponse a été cruciale pour affiner les instructions des prompts et gérer les ambiguïtés.
- Le système a pu répondre aux 100 questions en seulement 2 minutes, bien en deçà de la limite de temps étendue.
- La solution gagnante a démontré d’excellentes performances avec des modèles open-source et propriétaires, Llama 3.3 70b étant proche de GPT-4o-mini.
- Le code source de la solution est disponible en open-source.
À retenir
Alors, vous rêvez de construire le meilleur système RAG ? Oubliez la baguette magique ! D’après Ilya Rice, le secret, c’est de mettre les mains dans le cambouis. Parsez vos PDF comme un pro, découpez vos textes en petits morceaux, et surtout, apprenez à parler le langage des LLM avec des prompts aux petits oignons. Et si un modèle ne veut pas suivre vos règles, envoyez-le au coin pour qu’il apprenne à respecter le schéma de sortie ! Bref, la perfection est dans les détails, et apparemment, même un petit Llama peut battre 80% des concurrents si on le dresse bien. Alors, à vos claviers, le RAG n’attend pas !
Sources





