Demandez a Cursor ou Claude Code de modifier une fonction dans un projet de 50 fichiers, vous obtiendrez generalement un resultat correct. Demandez la meme chose dans un monorepo de 5000 fichiers avec dix services, trois langages et quinze ans d'historique, et la qualite chute brutalement. L'agent ne voit qu'une fraction du contexte. Il invente des imports, propose des conventions etrangeres au projet, ignore des helpers existants et duplique du code deja ecrit ailleurs. Le probleme n'est pas la capacite du modele : c'est l'absence de mecanisme de recuperation pertinente du contexte. C'est exactement le probleme que le RAG resout. En 2026, comprendre comment enrichir un agent IA avec votre codebase n'est plus une option pour les developpeurs serieux.
Le probleme : la fenetre de contexte n'est pas la solution
L'argument courant en 2025 etait simple : les fenetres de contexte vont grandir, et bientot l'IA pourra ingerer le projet entier. Cette promesse a ete partiellement tenue. Claude Opus 4.7 et Gemini 2.5 Pro acceptent jusqu'a 1 million de tokens. En theorie, vous pouvez injecter une grosse codebase dans un seul prompt.
En pratique, trois problemes persistent. D'abord, le cout : un prompt d'un million de tokens facture 5 a 15 dollars par appel selon le modele, et ce cout se multiplie sur des dizaines d'iterations quotidiennes. Ensuite, la latence : ingerer un million de tokens prend plusieurs secondes, ce qui casse le flow d'un developpeur. Enfin, et c'est le plus important, la qualite des reponses chute mesurablement quand le contexte depasse 200 000 tokens. Les modeles oublient des elements introduits en milieu de prompt, biais connu sous le nom de "lost in the middle".
La solution rationnelle n'est donc pas de tout injecter, mais de selectionner intelligemment les portions de codebase reellement utiles a la tache en cours. C'est le role du RAG.
RAG : les trois etapes invisibles
RAG signifie Retrieval Augmented Generation. Trois etapes se succedent a chaque interaction.
La premiere etape est le chunking. Votre codebase est decoupee en morceaux : fichiers entiers, fonctions, classes, sections de documentation. Chaque morceau doit etre suffisamment petit pour etre pertinent et suffisamment grand pour rester comprehensible isolement. Le chunking d'un fichier Python par fonction donne de meilleurs resultats que par bloc de 500 lignes, car il respecte la structure logique.
La deuxieme etape est l'embedding. Chaque chunk est converti en vecteur de quelques centaines de dimensions par un modele specialise. Voyageai-3, text-embedding-3-large d'OpenAI ou Cohere embed-v4 sont les options dominantes en 2026. Ces vecteurs capturent le sens semantique : deux fonctions qui font la meme chose dans deux langages differents auront des vecteurs proches.
La troisieme etape est la recuperation. Quand vous posez une question a l'agent, votre prompt est lui aussi converti en vecteur. La base vectorielle retourne les chunks dont les vecteurs sont les plus proches du votre. Ces chunks sont injectes dans le contexte de l'agent qui peut alors raisonner sur des informations pertinentes plutot que generiques.
Le tout est invisible pour l'utilisateur. L'agent semble simplement mieux connaitre le projet.
Cursor : RAG natif et limites a connaitre
Cursor inclut un mecanisme de RAG par defaut depuis sa version 0.40. A l'ouverture d'un projet, l'editeur indexe automatiquement les fichiers : il chunke par fichier et par fonction, calcule les embeddings via un modele proprietaire, et stocke les vecteurs localement. L'indexation initiale prend de quelques secondes a quelques minutes selon la taille du repository.
Le resultat est tangible. Demander a Cursor "comment fonctionne notre systeme de paiement ?" sur un projet correctement indexe ramene les bons fichiers, meme si vous n'avez aucun fichier ouvert. L'agent peut citer des fonctions situees dans des dossiers que vous n'avez jamais visites.
Trois limites doivent etre connues. La premiere : Cursor n'indexe que les fichiers texte et ignore par defaut les patterns du .gitignore. Si votre documentation est dans un dossier ignore, elle ne sera pas indexee. La deuxieme : les embeddings sont recalcules sur changement de fichier mais pas sur les renommages de variables ou refactorings cross-fichiers, ce qui peut creer des incoherences temporaires. La troisieme : le RAG natif est generaliste. Il ne sait pas qu'une fonction processPayment est centrale pour votre business alors qu'un helper de logging ne l'est pas.
L'amelioration passe par le fichier .cursorrules ou par docs/architecture.md indexe en priorite. Documenter explicitement quelles parties du code sont critiques pour quels cas d'usage augmente la pertinence des resultats sans changer le moteur de RAG.
Claude Code : MCP comme infrastructure RAG
Claude Code adopte une philosophie differente. Plutot que d'integrer un RAG opaque, il s'appuie sur le protocole MCP pour connecter des sources de connaissance externes. Cette approche offre plus de controle au prix d'une configuration plus explicite.
Plusieurs serveurs MCP fournissent du RAG cle en main. Le serveur mcp-server-codebase indexe localement le projet et expose un outil search_codebase que l'agent peut invoquer. Le serveur mcp-server-docs fait la meme chose pour les documentations Markdown. Des serveurs specialises existent pour Notion, Confluence, Google Drive et les wikis internes.
L'avantage principal est la composition. Un meme agent Claude Code peut interroger simultanement le code source, la documentation produit, les specifications techniques et les tickets Linear. La recuperation s'adapte a la nature de la question : un bug technique declenche une recherche dans le code et les logs, une question fonctionnelle declenche une recherche dans Notion et les specs.
L'inconvenient est l'absence de magie automatique. Il faut configurer chaque source, definir les regles d'indexation et maintenir la fraicheur des donnees. Cette friction est rentable pour les projets matures mais excessive pour un side project.
Pour aller plus loin sur l'ecosysteme MCP, consultez notre [guide complet du protocole MCP](/mcp-model-context-protocol-guide/) et notre [tour d'horizon des serveurs MCP indispensables](/ecosysteme-mcp-serveurs-indispensables/).
Construire un RAG custom : quand et comment
Le RAG natif suffit pour 80 % des projets. Les 20 % restants justifient un RAG custom : codebases tres specifiques, donnees sensibles non indexables par des outils externes, besoins de scoring metier sur les resultats.
Une architecture custom typique en 2026 combine quatre elements. Un orchestrateur, generalement LlamaIndex ou un framework leger en Python ou TypeScript, gere le pipeline d'indexation et de recuperation. Une base vectorielle, comme pgvector pour les petits volumes ou Qdrant pour les volumes superieurs au million de chunks, stocke les embeddings. Un modele d'embedding, idealement adapte au code (Voyage code-3 par exemple), genere les vecteurs. Et une couche d'interface, le plus souvent un serveur MCP custom, expose les resultats aux agents.
Le pipeline d'indexation s'execute en plusieurs phases. La phase de collecte rassemble les sources : code source via Git, documentation via API, specifications via webhooks. La phase de transformation chunke et nettoie les contenus en preservant les metadonnees critiques (chemin du fichier, langage, derniere modification, auteur). La phase d'embedding convertit chaque chunk en vecteur. La phase d'indexation pousse les vecteurs et leurs metadonnees dans la base.
La recuperation peut etre enrichie par des techniques avancees. Le hybrid search combine recherche semantique et recherche par mots-cles, ce qui evite de manquer un chunk qui contient exactement le nom de la fonction recherchee. Le reranking applique un second modele plus precis sur les 20 ou 50 meilleurs resultats pour ne garder que les 5 plus pertinents. Le query rewriting reformule la question de l'utilisateur avant la recherche pour en augmenter la qualite.
Bonnes pratiques de chunking pour le code
Le chunking est l'etape qui differencie un RAG mediocre d'un RAG excellent. Trois principes guident un decoupage efficace sur du code.
Le premier principe est le respect de la structure syntaxique. Un parser AST identifie les unites logiques : fonctions, classes, methodes. Decouper sur ces frontieres garantit que chaque chunk est syntaxiquement valide et comprehensible. Tree-sitter est l'outil de reference pour cette tache, avec un support de quasi tous les langages.
Le deuxieme principe est la conservation du contexte minimal. Un chunk qui ne contient qu'une fonction sans ses imports ni sa signature de classe est inutilisable. La pratique courante consiste a inclure un en-tete contextuel : chemin du fichier, imports utilises dans la fonction, signature de classe parente. Ce surcout de tokens est largement compense par la qualite des resultats.
Le troisieme principe est la gestion de la taille. Un chunk trop petit (10 lignes) manque de contexte. Un chunk trop grand (500 lignes) dilue le signal et fait baisser le score de similarite. La fourchette ideale se situe entre 200 et 800 tokens par chunk pour le code source. La documentation Markdown supporte des chunks plus gros, jusqu'a 1500 tokens.
Couts reels et compromis
Le RAG n'est pas gratuit. Sur une codebase de 100 000 lignes de code, l'indexation initiale coute environ 0,50 a 2 dollars en embeddings selon le modele choisi. La reindexation incrementale sur changements quotidiens represente quelques centimes par jour. La recuperation a chaque requete coute moins d'un centime mais s'ajoute au cout du modele d'inference.
L'investissement en infrastructure depend du volume. Pour un projet personnel ou une PME, pgvector sur la base PostgreSQL existante est suffisant et gratuit. Pour une enterprise avec plusieurs millions de chunks et des dizaines d'agents, une base dediee comme Qdrant ou Pinecone devient necessaire, avec un cout mensuel de 50 a 500 dollars.
Le cout en temps developpeur est paradoxalement le plus eleve. Mettre en place un RAG custom de qualite demande deux a quatre semaines de travail initial, plus une maintenance continue pour gerer la fraicheur des donnees, le tuning des prompts de reformulation et les regressions silencieuses. Cette charge justifie de commencer par les solutions natives et de ne migrer vers du custom qu'apres avoir identifie des limitations precises.
Trois cas d'usage qui justifient l'effort
Trois situations rendent un RAG enrichi clairement rentable.
Le premier cas est le legacy. Sur une codebase de 10 ans avec dix generations de developpeurs differents, le RAG transforme un projet illisible en assistant interrogeable. Demander "comment etait gere le calcul de TVA avant 2022 ?" retourne les bons fichiers et les bons commits sans que personne dans l'equipe actuelle n'ait a se souvenir.
Le deuxieme cas est le multi-projet. Une agence ou un freelance qui jongle entre dix projets clients beneficie d'un RAG transversal. Trouver dans quels projets une certaine librairie est utilisee, ou dupliquer une integration faite il y a six mois pour un autre client, devient instantane.
Le troisieme cas est le contexte produit. Un agent connecte au backlog, aux specifications et aux retours utilisateurs ne genere plus seulement du code correct, mais du code aligne avec les besoins reels. C'est la difference entre un developpeur qui execute et un developpeur qui comprend pourquoi il execute.
Le RAG comme infrastructure du developpement IA
Le RAG est passe en deux ans du statut de technique avancee a celui d'infrastructure standard du developpement assiste par IA. En 2026, les editeurs IA serieux integrent du RAG natif, les protocoles comme MCP standardisent les sources externes et les bonnes pratiques de chunking et de recuperation se stabilisent.
L'enjeu pour un developpeur n'est plus de savoir si le RAG est utile mais de calibrer le bon niveau de sophistication pour son contexte. Cursor natif suffit pour la majorite des projets. Une combinaison de Claude Code et MCP couvre les besoins enterprise classiques. Un RAG custom devient pertinent pour les projets a contraintes specifiques.
Dans tous les cas, comprendre les mecanismes sous-jacents transforme la maniere dont on configure son environnement. Un developpeur qui sait pourquoi son agent retrouve ou ne retrouve pas un bout de code donne diagnostique et corrige les problemes en minutes la ou un utilisateur passif accuse l'IA d'etre limitee. Cette comprehension est le nouveau differentiateur des developpeurs IA-first les plus efficaces.