Aller au contenu
RAG

RAG : vue d'ensemble

Pipeline documentaire de la Box, de l'ingestion des dossiers à la réponse citée, avec le filtre de permissions au cœur de la recherche.

Hypothèse#rag#embeddings#reranking#vector-db#permissions#avocatsPublié le 16 sept. 2026Mis à jour le 16 sept. 2026Vérifié le 16 sept. 2026À revérifier le 15 déc. 2026

L'essentiel

  • Le RAG (Retrieval-Augmented Generation) répond à une question en récupérant d'abord les passages pertinents des documents du cabinet, puis en les donnant au LLM local avec la consigne de répondre à partir d'eux et de citer.
  • Le pipeline compte une dizaine d'étapes ; les deux qui décident de la qualité sont le parsing (ce qu'on extrait des PDF scannés, des mails, des tableaux) et la recherche (hybride, filtrée, reclassée).
  • Les permissions ne sont pas une étape en plus : le filtre d'accès est appliqué dans la recherche, et imposé par le moteur. C'est la décision ADR-003 et la page la plus importante de cette section : permissions.
  • Chaque réponse rend : le texte, les sources (dossier, document, passage, page) et un lien vers le document d'origine. Une réponse sans source est une réponse à ne pas afficher.
  • Rien n'est mesuré à ce jour : toute la section est une architecture cible à valider par les expérimentations et l'évaluation.

Pipeline

Les deux moitiés du schéma vivent à des rythmes différents. L'ingestion (à gauche) tourne en tâche de fond, à chaque ajout ou modification de document ; elle est coûteuse en CPU (OCR) et en GPU (embeddings) mais tolère la latence. La requête (à droite) doit répondre en quelques secondes ; elle enchaîne recherche, reranking et génération, et c'est là que le filtre de permissions s'applique.

Les étapes une par une

ÉtapeRôleBrique candidateStatutPage
Parsingextraire texte, structure, tableaux des PDF, Word, Excel, mailsDocling (MIT) 1 ; Unstructured, Tika en secourshypothèseingestion
OCRrendre lisibles les scansTesseract 5 fra via Docling ou OCRmyPDF ; PaddleOCR à testerhypothèseingestion
Nettoyageretirer en-têtes, pieds de page, numéros, doublonsrègles maisonà concevoiringestion
Chunkingdécouper en passages exploitablesDocling HybridChunker, 400 à 800 tokens, overlap 10 à 15 %hypothèsechunking et embeddings
Métadonnéesdossier, client, date, type, page, ACL sur chaque chunkschéma maisonà concevoirpermissions
Embeddingsvectoriser les chunks et les questionsbge-m3 ou multilingual-e5-large (MIT) ; Qwen3-Embedding à comparerà mesurerchunking et embeddings
Base vectoriellestocker vecteurs + métadonnées, filtrer, chercherQdrant 2 ou pgvector 3question ouverte Q-004base vectorielle
Recherchevecteurs + BM25, fusion RRF, filtre ACL dans la requêtenative (Qdrant) ou SQL (PostgreSQL)hypothèserecherche et reranking
Rerankingreclasser les 20 à 50 candidats, garder 5 à 10bge-reranker-v2-m3 4 ou Qwen3-Reranker-0.6B 5à mesurerrecherche et reranking
Générationrédiger la réponse à partir des passages, citerLLM local, voir inférencedépend du modèle principalrecherche et reranking
Citationsafficher dossier, pièce, page, extrait, lienà développer dans l'interfaceà concevoirrecherche et reranking
Évaluationmesurer fidélité, pertinence, fuite, latenceRagas 6, DeepEval, jeu de test maisonà constituerévaluation

Principes

Ce que la Box doit rendre pour chaque réponse

  1. La réponse rédigée, en français, dans le registre du cabinet.
  2. La liste des sources utilisées : pour chacune, le dossier, le nom du document, la page (ou la section pour un mail ou un tableur), l'extrait exact ayant servi, et un lien qui ouvre le document à l'endroit cité.
  3. Une mention explicite quand rien n'a été trouvé dans la portée autorisée, sans révéler l'existence de documents hors portée.
  4. En arrière-plan, une ligne de journal : qui, quand, quels chunks lus, quels chunks cités.

Dimensionnement indicatif

Pour un cabinet de 5 à 10 personnes, l'ordre de grandeur est de quelques dizaines de milliers de documents et de quelques centaines de milliers à quelques millions de chunks (estimation, à confirmer sur un corpus réel). À 1 024 dimensions en float32, un million de chunks représente environ 4 Go de vecteurs bruts, plus l'index HNSW et les métadonnées (calcul, voir chunking et embeddings). C'est compatible avec la machine candidate à 128 Go, à condition de réserver la mémoire au LLM d'abord ; la quantification des vecteurs est une option.

Questions ouvertes

Ce qu'il reste à tester

Sources

  1. 1Docling — README et documentation chunking (MIT, HybridChunker)GitHubFiabilité hauteDocling / IBM Research / LF AI & Data · publié v2.127.0, 14/09/2026 · consulté le 16 sept. 2026 · fiche source
  2. 2Qdrant — README et releases (Apache 2.0, v1.19.1)GitHubFiabilité hauteQdrant · publié v1.19.1, 04/09/2026 · consulté le 16 sept. 2026 · fiche source
  3. 3pgvector — README (filtrage, HNSW, iterative scan 0.8.0)GitHubFiabilité hautepgvector · publié v0.8.6 (README) ; 0.8.0 annoncé sur postgresql.org · consulté le 16 sept. 2026 · fiche source
  4. 4BAAI/bge-reranker-v2-m3 — model cardDocumentation officielleFiabilité hauteBAAI · publié 02/2024 · consulté le 16 sept. 2026 · fiche source
  5. 5Qwen/Qwen3-Reranker — model card (0.6B / 4B / 8B)Documentation officielleFiabilité hauteAlibaba Qwen · publié 05/06/2025 · consulté le 16 sept. 2026 · fiche source
  6. 6Ragas — métriques disponiblesDocumentation officielleFiabilité hauteRagas · publié lu le 16/09/2026 · consulté le 16 sept. 2026 · fiche source
  7. 7OWASP Top 10 for LLM Applications 2025 — LLM08 Vector and Embedding WeaknessesDocumentation officielleFiabilité hauteOWASP GenAI Security Project · publié mars 2025 · consulté le 16 sept. 2026 · fiche source
  8. 8Citations et fidélité en RAG (arXiv 2412.18004, 2409.11242)ÉtudeFiabilité moyennearXiv · publié 2024 · consulté le 16 sept. 2026 · fiche source
content/docs/rag/index.md933 mots