Course

Contrats : découpage par structure et métadonnées

Construire un RAG sur des contrats qui découpe par articles et clauses, filtre par type, partie et date, répond aux questions comparatives par un tableau cité et produit un récapitulatif des contrats en sortie structurée.

Advanced 4 lessons 3h30
Start the course
Progress 0% · 0/4

This content is not translated yet. Showing the original version.

Un contrat n'est pas un texte comme les autres : il est structuré (articles, clauses numérotées), il a une identité (référence, type, parties, date de signature) et les questions qu'on lui pose sont souvent comparatives (« quels préavis dans nos contrats de prestation ? »). Un RAG qui découpe tous les 500 caractères et ignore cette identité se trompe de contrat ou coupe une clause en deux.

Ce lab travaille sur 5 contrats fictifs d'Atelier Nova (location d'entrepôt, maintenance logicielle, nettoyage, licence, accord de confidentialité).

Ce que vous allez construire

flowchart LR
  T["contrats/*.txt"] --> P["parse_contract : en-tête + articles + clauses"]
  P --> M[("SQLite : contrats (type, parties, date)")]
  P --> CS["chunk_structure : 1 morceau par article"]
  CS --> E["embeddings + titre du contrat"]
  E --> CH[("SQLite : chunks")]
  Q["Question"] --> F["extraire_filtres (sortie structurée)"]
  F --> S["search : WHERE type/partie/date puis cosinus"]
  CH --> S
  M --> S
  S --> G["Gemini : réponse ou tableau cité [CT-... art. N]"]
  M --> R["tableau : récapitulatif de tous les contrats"]

Pour qui ?

  • Vous avez fait les labs 1 et 2, ou vous avez déjà écrit un RAG simple.
  • Vous travaillez sur des documents structurés (contrats, politiques, normes, cahiers des charges).

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, pydantic.

Programme

ModuleLeçonCe que vous faitesFichiers
1. Le cas d'usageContrats et architecturestructure d'un contrat, questions types, corpus fictifmake_contracts.py
2. ConstruireDécouper par structureparseur, articles et clauses, comparaison avec un découpage par taillecontrats_rag.py
2. ConstruireFiltres, comparaisons et tableauself-query, filtres SQL, un résultat par contrat, métadonnées dans le contexte, récapitulatifcontrats_rag.py
3. ÉvaluerÉvaluer et exploitertests sans clé, rappel taille vs structure, filtres corrects, fidélité, refuseval.py, golden.json, test_contrats.py

En local ou sur GCP ?

Ce labSur Google Cloud
Contratsfichiers textePDF dans Cloud Storage, extraits par Document AI
Métadonnées et filtrescolonnes SQLite + WHEREmétadonnées de Vertex AI Search ou filtres de Vector Search
Tableau récapitulatifsortie structurée Geminiidem, résultat écrit dans BigQuery

Code complet : contrats_rag.py, eval.py, test_contrats.py, make_contracts.py.

Resources

Download all (.zip)

References