Contexte et objectifs
JetBrains a conçu Air Context, une chaîne de traitement Retrieval‑Augmented Generation (RAG) destinée à fournir aux agents LLM des preuves précises tirées de dépôts de code réels. L’objectif principal est de remplacer les recherches classiques basées sur grep ou des mots‑clés par une recherche par signification, afin de réduire le temps de navigation dans des bases de code contenant des dizaines de milliers de fichiers et plusieurs millions de lignes.
Parsing, chunking et structuration
La première étape consiste à analyser chaque fichier source avec les parseurs JetBrains, forts de 26 ans d’évolution. Ces parseurs produisent un Abstract Syntax Tree (AST) qui expose la hiérarchie classe‑méthode‑champ ainsi que les commentaires associés. Grâce à cette représentation, le pipeline découpe le code en chunks structurés : chaque chunk regroupe un élément sémantique complet (par exemple, une méthode avec son doc‑comment et les champs qu’elle utilise). Cette approche évite les deux extrêmes décrits dans l’article : l’embedding d’un fichier entier, qui diluerait la pertinence, et l’embedding ligne par ligne, qui perdrait le contexte. Le texte souligne que le choix de la taille de chunk repose sur la capacité du modèle d’embedding à accepter environ 512 tokens tout en conservant une granularité suffisante pour isoler une fonction ou un symbole.
Vectorisation et recherche sémantique
Une fois les chunks définis, ils sont transformés en vecteurs à l’aide d’un modèle d’embedding pré‑entraîné (par exemple, text‑embedding‑ada‑002 ou un modèle propriétaire). Chaque vecteur est stocké dans une base de données vectorielle compatible approximate nearest neighbour (ANN), telle que FAISS ou Qdrant. La recherche s’effectue alors par requête libre : l’agent soumet une description en langage naturel (« rafraîchir le token de session »), le texte est lui aussi vectorisé, puis le système renvoie les chunks les plus proches selon la distance cosinus. Cette méthode garantit que le résultat contient le code pertinent même si les termes exacts n’apparaissent pas dans le texte source.
Enjeux de production et limites
Le déploiement d’Air Context en production a révélé plusieurs contraintes. Premièrement, la mise à jour des vecteurs doit être synchronisée avec les changements de code ; le pipeline prévoit une ré‑indexation incrémentale basée sur les commits Git, mais la latence reste de l’ordre de quelques minutes pour des bases de plusieurs gigaoctets. Deuxièmement, la qualité du modèle d’embedding influence directement le taux de rappel : les modèles génériques peinent à distinguer des concepts spécifiques à un langage (ex. : les annotations Java) sans fine‑tuning. Enfin, le système ne résout pas le problème de la « hallucination » des LLM ; il fournit uniquement des références, la validation finale du code reste à la charge du développeur ou d’un outil de vérification statique. L’article indique que ces points seront approfondis dans les prochains billets de la série.