Course

RAG sur PDF en local avec SQLite

Construire en 200 lignes de Python un RAG qui lit des PDF, les indexe dans SQLite avec les embeddings Gemini, répond en citant la page et ne réindexe que les fichiers modifiés.

Beginner 4 lessons 2h30
Start the course
Progress 0% · 0/4

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

Vous avez une pile de PDF internes (guide d'accueil, politique de télétravail, procédure des notes de frais) et des collègues qui posent toujours les mêmes questions. Ce lab construit un RAG (Retrieval-Augmented Generation, génération augmentée par la recherche) : on retrouve d'abord les passages utiles dans vos documents, puis on demande au modèle de répondre uniquement avec eux, en citant le fichier et la page.

Tout tourne sur votre poste : les PDF et l'index restent chez vous, seuls les morceaux de texte envoyés pour le calcul des embeddings et la question partent vers l'API Gemini.

Pour qui ?

  • Vous savez lancer un script Python et installer des paquets avec pip.
  • Vous n'avez jamais construit de RAG, ou vous en avez utilisé un sans savoir ce qu'il y a dedans.
  • Aucune base de données vectorielle à installer : SQLite est fourni avec Python.

Ce que vous allez construire

flowchart LR
  P["PDF (docs/)"] --> X["Extraction pypdf (par page)"]
  X --> C["Découpage en morceaux"]
  C --> E["Embeddings gemini-embedding-2"]
  E --> S[("index.db (SQLite)")]
  Q["Question"] --> EQ["Embedding de la question"]
  EQ --> R["Recherche cosinus (numpy)"]
  S --> R
  R --> G["Gemini : réponse citée [fichier p. N]"]

Un embedding est une liste de nombres (ici 768) qui représente le sens d'un texte : deux textes proches en sens ont des vecteurs proches. La recherche consiste donc à trouver les morceaux dont le vecteur ressemble le plus à celui de la question.

Prérequis

  • Python 3.10 ou plus récent.
  • Une clé d'API Gemini créée dans Google AI Studio, placée dans un fichier .env (modèle : .env.example).
  • Les dépendances : pip install -r requirements.txt (requirements.txt).

Programme

ModuleLeçonCe que vous faitesFichiers
1. Le cas d'usageLe cas et l'architecturegénérer les PDF fictifs, comprendre chaque briquemake_pdfs.py
2. ConstruireExtraire, découper, indexerpypdf, découpage, SQLite, réindexation par hashrag.py
2. ConstruireRechercher et répondre avec citationsrecherche cosinus, prompt cité, refusrag.py
3. ÉvaluerTester, évaluer, exploitertests sans clé, rappel@k, fidélité, refus correctstest_rag.py, eval.py, golden.json

En local ou sur GCP ?

Ce lab (en local)Équivalent sur Google Cloud
Stockage des PDFdossier docs/bucket Cloud Storage
Indexfichier index.dbVertex AI RAG Engine ou Vector Search
Cléclé d'API AI Studioidentifiants du projet (IAM), Vertex AI
Idéal pourprototyper, quelques centaines de documentspartage en équipe, gros volumes, contrôle d'accès

Le code complet est dans le dossier files : make_pdfs.py, rag.py, eval.py, golden.json, test_rag.py.

Resources

Download all (.zip)

References