Lesson 25 — Rag local claude

04. RAG local avec Claude : vos documents, sur votre ordinateur, sans Google Cloud

4 min read

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

Le but : le même assistant que le kit 1 (réponses citées, synchro automatique, glisser-déposer), mais qui tourne sur votre ordinateur, sans projet GCP ni service à déployer. Les réponses sont rédigées par Claude avec votre clé API ; les documents restent chez vous (seuls la question et les extraits utiles partent vers Claude).

 Google Drive (OAuth) ─┐                       ┌──────────────── data/index.sqlite ────────────────┐
 Dossier du disque  ───┼─► synchro (60 s) ───► │ documents · morceaux · vecteurs · index plein texte │
 Glisser-déposer    ───┘   seul le changé      └───────────────────────┬────────────────────────────┘
                                                  recherche hybride ◄──┘ (mots + sens, fusion RRF, rerank Voyage)
 Vous ──► http://localhost:8765 ──► question ──► 8 meilleurs extraits ──► Claude ──► réponse citée [titre](lien)

Testé en vrai le 14/10/2026 (Linux, Python 3.12) : 5 tests automatiques ; serveur avec embeddings locaux (multilingues) ; dossier local indexé (Markdown, texte, PDF avec tableau, Word avec tableau, sous-dossier) ; 5 questions reformulées sur 5 → bon document en tête ; dépôt et suppression ; fichier modifié et fichier supprimé sur le disque pris en compte sans clic ; connecteur Google Drive (listing complet, puis ajout et corbeille vus par l'API changes). Pas testé faute de clés : la réponse de Claude (ANTHROPIC_API_KEY) et Voyage (VOYAGE_API_KEY) — l'interface affiche un message clair tant que la clé manque — et l'écran de connexion Google (il faut votre client OAuth, docs/03).

Démarrer (2 commandes)

cd gcp_rag/04-rag-local-claude
./rag              # 1re fois : installe tout (≈ 1 min) et crée .env ; puis http://localhost:8765

Mettez votre clé dans .env (ANTHROPIC_API_KEY=sk-ant-…) puis relancez ./rag. Ajoutez une source dans l'interface : un dossier de l'ordinateur, des fichiers glissés-déposés, ou Google Drive (après docs/03).

Ce qui est possible

SourceCommentSynchro
Fichiers déposésGlisser-déposer dans l'interface (100 Mo max)Immédiate
Dossier de l'ordinateurChemin du dossier, sous-dossiers comprisToutes les 60 s : ajout, modification, suppression
OneDrive / SharePoint, en attendant le connecteurLe dossier synchronisé par le client OneDrive (Windows/Mac) ou par rclone (Linux)Idem
Google Drive« Se connecter avec Google », puis tout le Drive ou des dossiers (sélecteur intégré)Toutes les 60 s, API changes (seul le changé est relu)
OneDrive, SharePoint (connecteur direct)Affichés « bientôt »—

Réglages (.env)

VariableDéfautRôle
ANTHROPIC_API_KEY—Clé Claude (réponses)
CLAUDE_MODELclaude-opus-5-5Ou claude-sonnet-5-5 (moins cher), claude-haiku-5-5 (le plus rapide)
CLAUDE_EFFORTlowProfondeur de réflexion : low suffit pour des questions-réponses
EMBEDDINGSautovoyage si VOYAGE_API_KEY est remplie, sinon local (gratuit, sur la machine)
VOYAGE_MODEL / RERANK_MODELvoyage-4 / rerank-2.5Modèles Voyage (embeddings, second tri)
LOCAL_EMBED_MODELparaphrase-multilingual-MiniLM-L12-v2Modèle local (≈ 220 Mo, téléchargé au 1er lancement)
POLL_SECONDS60Fréquence de la synchro automatique
PORT8765Port de l'interface (écoute sur 127.0.0.1 seulement)

Changer de modèle d'embeddings (EMBEDDINGS, VOYAGE_MODEL, LOCAL_EMBED_MODEL) réindexe tout au démarrage suivant (vecteurs incompatibles) — c'est automatique.

Les docs

#Document
01Comprendre : architecture, recherche hybride, ce qui part vers Claude, coûts
02Sources et synchro : dossier local, dépôt, OneDrive/SharePoint en attendant, règles de synchro
03Google Drive : client OAuth (console, 5 min), connexion, tout le Drive ou dossiers
04Dépannage

Le code

FichierRôle
app/server.pyServeur : interface, API, connexion Google, chat (flux SSE)
app/sync.pySynchro identique pour toutes les sources ; passe planifiée
app/sources.pyDépôts, dossier local, Google Drive (OAuth, API changes)
app/store.pyIndex SQLite : documents, morceaux, vecteurs, FTS5 ; recherche hybride (RRF)
app/embed.pyEmbeddings et reranking : Voyage ou local (fastembed)
app/parse.pyPDF, Word, PowerPoint, texte, HTML, CSV → texte → morceaux
app/llm.pyClaude : une recherche, un appel en streaming, citations ; repli serveur si refus
app/static/index.htmlL'interface
tests/test_core.py./rag test
Next