Système RAG de documents local-first avec recherche hybride et prise en charge multi-formats
Une équipe développant des outils pour développeurs avait besoin d'un système de renseignement 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 la Retrieval-Augmented Generation (RAG) — sans envoyer de données à des API externes.
Discutez de Votre Projet
Le Défi
Les solutions RAG existantes présentaient des limitations importantes 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 exigeaient l'envoi du contenu des documents à des API d'embedding basées sur le cloud, violant 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, HTML et Markdown
- Découpage ("Chunking") insuffisant — 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
- Aveuglement 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 du premier passage ne produisait souvent que des résultats partiellement pertinents sans un filtre de qualité de second passage
Notre Solution
Nous avons construit un système RAG local-first complet avec ingestion de documents multi-formats, découpage ("chunking") sensible à la structure, génération d'embeddings locale, un pipeline de recherche hybride (sémantique + texte intégral + récence), reranking par cross-encoder, et une interface utilisateur web — le tout fonctionnant entièrement sur la machine de l'utilisateur.
Architecture
- Chargeurs de documents : Analyseurs spécifiques aux formats pour PDF, DOCX, XLSX, CSV, HTML, Markdown et texte brut
- Chunker : Découpage sensible à 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 d'API externe)
- Base de données vectorielle : LanceDB (serverless, basée sur 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 en tenant compte du contexte
- Analyseur de requêtes : Routage de la détection d'intention entre les requêtes sémantiques et structurées
- Serveur web : API Express.js avec gestion de projets et points de terminaison de recherche
- Frontend : Interface utilisateur web pour le téléversement, la gestion et la recherche interactive de documents
Pipeline de traitement des documents
Chargeurs multi-formats
Un modèle de registre détecte automatiquement le type de fichier et le redirige vers l'analyseur 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 des lignes
- 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 sources.
Découpage ("Chunking") sensible à la structure
Contrairement au découpage de texte naïf, le chunker respecte les limites des documents :
- 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 : divise 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
- Troncature automatique aux limites des mots avec normalisation L2
Stockage vectoriel
LanceDB fournit un stockage vectoriel serverless :
- Basé sur fichiers (aucun serveur de base de données séparé n'est nécessaire)
- Isolation par projet avec des index indépendants
- Clés de cache basées sur SHA256 pour la déduplication
- Métadonnées stockées à côté des vecteurs pour une 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 détecte 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 : Boost de récence
La pondération par décroissance exponentielle favorise 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-évalue les meilleurs candidats :
- La notation sensible au contexte considère les paires requête-document ensemble (pas indépendamment)
- Calcul du boost de mots-clés 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 du 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 (count, sum, average, min, max)
- L'analyseur de requêtes redirige les requêtes structurées vers un moteur dédié plutôt que vers la recherche d'embedding
Interface web
- Gestion de projets — Créer, mettre à jour et supprimer des projets de base de connaissances
- Téléversement de documents — Téléversement de fichiers par glisser-déposer avec détection automatique du format
- Création de documents — Créer des documents à partir de texte directement dans l'interface utilisateur
- Recherche interactive — Interface de requête en langage naturel avec 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 est effectué sur l'appareil ; aucun appel d'API externe pour les embeddings ou la recherche
- 9 formats d'entrée — PDF, DOCX, DOC, XLSX, XLS, CSV, HTML, Markdown, texte brut
- Découpage ("Chunking") sensible à 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 deuxième passage pour des résultats de plus grande précision
- Requêtes structurées — Filtrage et agrégation en langage naturel sur les données de feuilles de calcul
- Base de données vectorielle serverless — Stockage basé sur 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 index séparés
- Interface utilisateur 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.
Plateforme de gestion des RH et du personnel Catant
Catant est une plateforme modulaire de gestion des RH et du personnel qui aide les entreprises à gérer les employés, la paie, les présences et la conformité depuis un tableau de bord unique.
PrĂŞt Ă Transformer Votre Entreprise ?
Discutons de la façon dont nous pouvons appliquer des solutions similaires à vos défis.