Symptôme : votre RAG indexe des milliers de PDF, mais cite des copyrights de pied de page, des tableaux illisibles ou des annexes périmées—tandis que les jobs d'embedding restent verts.
Cause : les PDF de mauvaise qualité cassent au PDF Parsing ; les chunks sales entrent quand même dans la Vector Database, et la confiance de retrieval monte souvent.
En juillet 2026, audit de 2 400 PDF pour une Knowledge Base interne : précision de citation passée de 78 % à 51 %. 63 % des top-3 contenaient en-têtes répétés ou bruit OCR. Guide de la pipeline anti-pollution—pas un classement de parseurs, mais des portes et évaluations avant embedding. Au 2026-08-07.
Quick Answer : bloquer la saleté avant le rappel
| Situation | Action prioritaire | Ne pas précipiter |
|---|---|---|
| Premier lot PDF | 50 fichiers, comparer parsers + taux d'extraction | Changer de modèle d'embedding |
| Réponses citent copyright | Retirer en-têtes/pieds + dédoublonner | Ajouter plus de docs |
| Tableaux hallucinés | Parser tableaux à part | Réduire chunk aveuglément |
| Scans majoritaires | Score OCR + file manuelle | PyPDF partout |
| Gros index, baisse qualité | Supprimer par source_id + régression gold | Re-embed total sans analyse |
Cinq motifs qui polluent votre Vector Database
| Motif | Signe | Dégât | Signal |
|---|---|---|---|
| En-têtes/pieds répétés | Même texte chaque page | Hits sur copyright | Ligne courte ≥3× |
| Bruit OCR | Confusion de caractères | Sémantique fausse | Caractères hors lexique >8 % |
| Tableaux cassés | Colonnes effondrées | Nombres inventés | Longues suites de chiffres |
| Deux colonnes/notes | Colonnes entremêlées | Citations incohérentes | Largeur de ligne saute |
| Annexes périmées | Anciennes politiques | Vrai mais obsolète | mtime ≠ version métier |
Portes avant embedding
- Fichier : mot de passe, 0 caractère, extraction <15 % → rejeter/OCR.
- Page : vide, image seule, quasi-doublon → ignorer.
- Chunk : <30 tokens, >40 % répétition → jeter.
- Métier : sans
source_id→ pas d'écriture.
Le long contexte ne remplace pas un ingest propre—Kimi K3 1M vs RAG.
PDF Parsing : taux de questions répondables, pas nombre de caractères
Mesure (juil. 2026, 50 PDF) : hit@3 layout-aware 74 % vs pdfplumber 61 %.
Étude de cas : rollback sur 2 400 PDF
| Métrique | Avant | Après gates |
|---|---|---|
| 40 questions hit@3 | 51 % | 79 % |
| Citations header/copyright | 63 % | 4 % |
| Chunks totaux | 1,28 M | 0,71 M |
Checklist en sept étapes
- 50 PDF en échantillon.
- Deux parsers sur 20 questions gold.
- Règles en-tête/pied en staging.
- Métadonnées et suppression par
source_id. - 20–50 questions gold chaque semaine.
- Pic de rejets surveillé.
- Trimestriel : docs expirés.
Local : environnement IA en 30 minutes.
Parsing sur workers ; Vector Database = chunks propres
Mac Mac cloud Macstripe pour jobs batch macOS, sync vers service vectoriel Linux.
FAQ
Pourquoi PDF plus que Markdown ?
Layout caché, OCR, répétitions, tableaux—embeddés comme du vrai contenu.
Gate minimum ?
Extraction, répétition, longueur, langue ; source_id obligatoire.
Quel parser ?
Numérique : PyMuPDF. Complexe : Unstructured. Scan : OCR. Questions gold.
Conclusion
Ordre : PDF Parsing → portes → chunks + métadonnées → éval gold → embedding.
Suite : Long contexte vs RAG · Setup IA local