Formation

RAG sur du code source

Construire un assistant qui répond aux questions sur une base de code Python avec des liens fichier:ligne vérifiés : découpage par fonction et classe avec le module ast, recherche hybride embeddings + BM25, et « où est géré X ? » sans appel de génération.

Avancé 4 leçons 3h30
Commencer la formation
Progression 0% · 0/4

« Où est gérée la relance des impayés ? », « que se passe-t-il si l'envoi d'e-mail échoue ? » : sur un projet que l'on découvre, ces questions coûtent des heures de lecture. Ce lab construit un RAG qui répond avec des liens fichier:ligne que l'on peut ouvrir, et qui refuse quand le code ne contient pas la réponse.

Le terrain de jeu : facturo, un petit projet Python fictif de facturation (16 fichiers, généré par un script), avec de vraies fonctions qui s'exécutent.

Ce que vous allez construire

flowchart LR
  P["projet_demo/**/*.py"] --> A["ast.parse"]
  A --> C["morceaux : fonction, méthode, classe, constante + lignes début/fin"]
  C --> E["embeddings (titre = fichier + rôle du module)"]
  C --> B["BM25 sur les mots des identifiants"]
  E --> DB[("code.db")]
  Q["Question"] --> V["recherche vectorielle"]
  Q --> K["recherche BM25"]
  DB --> V
  B --> K
  V --> F["fusion RRF"]
  K --> F
  F --> OU["ou : liste fichier:ligne"]
  F --> G["Gemini : réponse"]
  G --> CHK{"chaque fichier:ligne dans un extrait ?"}
  CHK -- "oui" --> L["liens projet_demo/x.py#L12"]
  CHK -- "non" --> R["refus"]

Pour qui ?

  • Vous avez fait au moins le lab 1 ; le lab 3 (découpage par structure) est un bon échauffement.
  • Vous lisez du Python couramment.

Prérequis

  • Python 3.10+, une clé d'API Gemini dans .env (voir .env.example).
  • pip install -r requirements.txt (requirements.txt) : google-genai, numpy, rank-bm25.

Programme

ModuleLeçonCe que vous faitesFichiers
1. Le cas d'usageQuestions sur du codepourquoi le code est particulier, le projet fictifmake_project.py
2. ConstruireDécouper avec astfonctions, méthodes, classes, constantes, lignes exactescode_rag.py
2. ConstruireRecherche hybride et liens vérifiésBM25, RRF, « où est géré X », citations vérifiées, lienscode_rag.py
3. ÉvaluerÉvaluer et améliorer3 modes de recherche, 3 corrections mesurées, fidélité, refuseval.py, golden.json, test_code_rag.py

En local ou sur GCP ?

Ce labSur Google Cloud
Codedossier localdépôt Git, synchronisé par Cloud Build
Indexcode.db SQLite, réindexé par fichierVertex AI Vector Search + recherche plein texte
Accèsvotre posteCloud Run derrière IAP, réservé à l'équipe

Code complet : code_rag.py, eval.py, test_code_rag.py, make_project.py.

Ressources

Tout télécharger (.zip)

Références