Système RAG de documents local d'abord avec recherche hybride et prise en charge multi-formats
Une équipe développant des outils pour développeurs avait besoin d'un système d'intelligence documentaire entièrement local et respectueux de la vie privée, capable d'ingérer plusieurs formats de fichiers, de construire des bases de connaissances interrogeables et de répondre à des requêtes en langage naturel en utilisant le RAG — sans envoyer aucune donnée à des API externes.
Discutez de Votre Projet
Le Défi
Les solutions RAG existantes présentaient des limitations significatives pour les cas d'utilisation soucieux de la vie privée et axés sur les développeurs :
- Dépendance aux API externes — La plupart des outils RAG nécessitaient l'envoi du contenu des documents à des API d'embedding basées sur le cloud, violant ainsi les exigences de confidentialité
- Prise en charge limitée des formats — Les solutions ne géraient généralement que le texte brut ou le PDF, ignorant les feuilles de calcul, les documents Word, le HTML et le Markdown
- Chunking inefficace — Le découpage de texte naïf ignorait la structure du document (pages, feuilles, titres), créant des chunks pauvres en contexte
- Lacunes de mots-clés — La recherche purement basée sur l'embedding manquait les correspondances exactes de mots-clés que la recherche lexicale aurait détectées
- Cécité aux feuilles de calcul — Les systèmes RAG ne pouvaient pas gérer les données tabulaires structurées ni répondre aux requêtes de filtrage/agrégation
- Pas de Reranking — La récupération de premier passage ne faisait souvent apparaître que des résultats partiellement pertinents sans un filtre de qualité de second passage
Notre Solution
Nous avons construit un système RAG local d'abord complet avec ingestion de documents multi-formats, chunking respectueux de la structure, génération d'embeddings locaux, un pipeline de recherche hybride (sémantique + texte intégral + récence), reranking par cross-encoder, et une UI web — le tout fonctionnant entièrement sur la machine de l'utilisateur.
Architecture
- Chargeurs de documents : Parseurs spécifiques au format pour PDF, DOCX, XLSX, CSV, HTML, Markdown et texte brut
- Chunker : Découpage respectueux de la structure qui préserve les limites des pages, des feuilles et des titres
- Embeddings : Modèle d'embedding local via Transformers.js (aucun appel API externe)
- Base de données vectorielle : LanceDB (serverless, basé sur des fichiers) pour le stockage d'embeddings et la recherche de similarité
- Recherche en texte intégral : Indexation basée sur les trigrammes pour la correspondance lexicale
- Reranker : Modèle cross-encoder pour la notation des résultats sensible au contexte
- Analyseur de requêtes : Routage par détection d'intention entre les requêtes sémantiques et structurées
- Serveur web : API Express.js avec gestion de projet et endpoints de recherche
- Frontend : UI web pour le téléchargement, la gestion et la recherche interactive de documents
Pipeline de traitement de documents
Chargeurs multi-formats
Un pattern de registre détecte automatiquement le type de fichier et le route vers le parseur approprié :
- PDF — Extraction de texte avec segmentation au niveau de la page
- Word (.docx/.doc) — Analyse sensible aux titres préservant la hiérarchie du document
- Excel/CSV — Analyse feuille par feuille avec détection d'en-tête et contenu au niveau de la ligne
- HTML — Extraction sensible aux balises avec préservation de la structure
- Markdown — Analyse de sections basée sur les titres
- Texte brut — Segmentation basée sur les lignes
Chaque chargeur extrait des métadonnées (titre, auteur, date de création, nombre de pages/feuilles, nombre de mots) parallèlement au contenu, produisant des sections structurées avec des références de source.
Chunking respectueux de la structure
Contrairement au découpage de texte naïf, le chunker respecte les limites du document :
- Préserve les sauts de page (PDF), les limites de feuille (feuilles de calcul) et la hiérarchie des titres (Word/Markdown)
- Dimensionnement basé sur les tokens avec taille de chunk et chevauchement configurables
- Repli hiérarchique : découpe d'abord par sections, puis par paragraphes, puis par phrases
- Chaque chunk conserve les métadonnées de source (numéro de page, nom de feuille, titre) pour l'attribution
Embedding et indexation
Modèle d'embedding local
- Fonctionne entièrement localement via Transformers.js — aucune donnée ne quitte la machine
- Modèle quantifié pour l'optimisation des performances
- Embedding par lots pour un traitement en masse efficace
- Troncation automatique aux limites des mots avec normalisation L2
Stockage vectoriel
LanceDB fournit un stockage vectoriel serverless :
- Basé sur des fichiers (aucun serveur de base de données séparé n'est nécessaire)
- Isolation par projet avec des indices indépendants
- Clés de cache basées sur SHA256 pour la déduplication
- Métadonnées stockées à côté des vecteurs pour la récupération filtrée
Pipeline de recherche hybride
Le pipeline de récupération combine trois signaux de classement pour de meilleurs résultats que toute approche unique :
Signal 1 : Recherche d'embedding (sémantique)
La recherche de similarité vectorielle trouve des chunks avec un sens lié même lorsque des mots différents sont utilisés. Gère la paraphrase, les synonymes et les requêtes conceptuelles.
Signal 2 : Recherche en texte intégral (lexicale)
L'indexation basée sur les trigrammes avec la similarité de Jaccard saisit les correspondances exactes de mots-clés que la recherche d'embedding pourrait manquer — important pour les termes techniques, les noms et les identifiants.
Signal 3 : Accent sur la récence
La pondération par déclin exponentiel privilégie les documents récemment consultés ou modifiés, garantissant que les informations à jour apparaissent en premier.
Combinaison des scores
Les signaux sont combinés avec des poids configurables (par défaut : 50% sémantique, 25% lexical, 25% récence), normalisés et filtrés par un seuil de score minimum.
Reranking par Cross-Encoder
Après la récupération initiale, un modèle cross-encoder re-note les principaux candidats :
- La notation sensible au contexte considère les paires requête-document ensemble (pas indépendamment)
- Calcul d'amplification par mot-clé pour le chevauchement de termes
- Notation combinée (cross-encoder + signaux de mots-clés)
- Produit une liste classée finale avec une précision plus élevée que la récupération de premier passage seule
Prise en charge des données structurées
Pour le contenu des feuilles de calcul, le système offre des capacités supplémentaires :
- Détection automatique des types de colonnes (numérique, date, booléen, chaîne de caractères)
- Filtrage en langage naturel (par exemple, "employés en ingénierie avec un salaire supérieur au seuil")
- Prise en charge de l'agrégation (nombre, somme, moyenne, min, max)
- L'analyseur de requêtes route les requêtes structurées vers un moteur dédié plutôt que vers la recherche d'embedding
Interface web
- Gestion de projet — Créer, mettre à jour et supprimer des projets de base de connaissances
- Téléchargement de documents — Téléchargement de fichiers par glisser-déposer avec autodétection du format
- Création de documents — Créer des documents à partir de texte directement dans l'UI
- Recherche interactive — Interface de requête en langage naturel avec des résultats classés
- Statistiques — Taille de l'index, nombre de documents et distribution des formats par projet
Fonctionnalités clés
- Entièrement local — Tout le traitement sur l'appareil ; aucun appel API externe pour les embeddings ou la recherche
- 9 formats d'entrée — PDF, DOCX, DOC, XLSX, XLS, CSV, HTML, Markdown, texte brut
- Chunking respectueux de la structure — Préserve les pages, les feuilles et les titres comme limites de chunk
- Recherche hybride — Combine les signaux sémantiques, lexicaux et de récence pour une meilleure récupération
- Reranking par Cross-Encoder — Notation de second passage pour des résultats de plus grande précision
- Requêtes structurées — Filtrage en langage naturel et agrégation sur les données de feuilles de calcul
- Base de données vectorielle Serverless — Stockage basé sur des fichiers LanceDB sans surcharge d'infrastructure
- Écriture de documents — Capacités d'exportation pour la création de PDF, DOCX et XLSX
- Isolation de projet — Bases de connaissances indépendantes avec des indices séparés
- UI Web — Interface complète pour la gestion des documents et la recherche interactive
Résultats
Stack Technologique
caseStudyDetail.more Études de Cas
Découvrez plus de nos implémentations techniques
Analyse de feuilles de calcul et de documents assistée par l'AI avec orchestration multi-agents et référencement inter-documents
Une équipe de données d'entreprise avait besoin d'analyser, d'interroger et de modifier de vastes collections de feuilles de calcul et de documents (Excel, CSV, Google Sheets, PDFs, Word docs) en utilisant le langage naturel — avec la capacité de référencer des données entre plusieurs fichiers et d'exécuter des flux de travail analytiques multi-étapes sans manipulation manuelle des données.
Traitement de factures assisté par l'IA avec OCR et intégration QuickBooks
Une entreprise de taille moyenne, traitant des centaines de factures fournisseurs chaque mois, devait éliminer la saisie manuelle des données en extrayant automatiquement les données des factures à l'aide de l'IA/OCR et en les synchronisant directement dans QuickBooks pour la tenue de livres et le suivi des paiements.
PrĂŞt Ă Transformer Votre Entreprise ?
Discutons de la façon dont nous pouvons appliquer des solutions similaires à vos défis.