
Framework Proxy-Pointer pour l’intelligence documentaire d’entreprise sensible à la structure
Parmi les cas d’utilisation de l’IA les plus importants d’une entreprise aujourd’hui, la comparaison de documents se classe aux côtés des chatbots conversationnels. Les organisations consacrent un grand nombre d’heures-personnes à comparer des contrats, des politiques, des spécifications techniques, des requêtes juridiques, des documents de recherche et bien d’autres encore pour identifier les différences, les risques, les révisions et les incohérences sémantiques.
Cependant, la comparaison de documents est bien plus complexe que la différence de texte traditionnelle. D’une part, ces outils sont censés être des assistants efficaces pour les professionnels du droit et du commerce, les scientifiques et autres qui s’attendent à ce que l’analyse soit au niveau de profondeur et de langage que l’on peut attendre d’un professionnel débutant dans le domaine.
Un problème encore plus difficile est que la signification des documents d’entreprise n’est généralement pas contenue dans des morceaux isolés. Il est intégré dans des sections, des hiérarchies, des regroupements de clauses et des relations. Et ces sections peuvent être dispersées sur plusieurs pages d’un document s’étendant sur 100 pages. Par exemple, un contrat de crédit peut définir des limitations de garantie dans une section, des exceptions à ces règles plusieurs pages plus loin, et décrire les droits d’exécution dans un article complètement différent. Si un autre accord est comparé à celui-ci avec des critères tels que « structure de garantie, sûretés et exigences de privilège », le système doit identifier, récupérer et synthétiser toutes ces sections structurellement dispersées avant qu’une comparaison significative puisse avoir lieu.
L’architecture Proxy-Pointer, avec son pipeline de récupération sensible à la structure mais à faible coût qui préserve la hiérarchie des documents lors de la récupération et de la comparaison, est parfaitement adaptée à cette tâche. En utilisant une combinaison de fil d’Ariane hiérarchique et de reclassement LLM léger, il est capable d’extraire avec précision des régions sémantiquement alignées dans les documents avant le début du raisonnement comparatif.
Dans cet article, je partage la conception et les résultats réels d’un comparateur de documents polyvalent capable d’analyser à la fois des accords de crédit financier très complexes et des documents de recherche universitaire. Comme vous le remarquerez dans l’architecture décrite dans la section suivante, le moteur de comparaison principal est séparé du traitement des documents en amont et du formatage et de la génération des rapports en aval, permettant au système d’être facilement adapté à tout nouveau domaine de document (tel que les polices d’assurance, les directives médicales ou les codes fiscaux). Tout ce qui est nécessaire est un pipeline d’extraction en amont pour structurer l’entrée pour la génération d’arborescence hiérarchique, et une mise à jour en aval du personnage analytique et du formateur de rapports du LLM, laissant le pipeline principal de récupération et de comparaison en plusieurs étapes entièrement intact.
De plus, j’ajoute le code complet à mon référentiel github open source Proxy-Pointer existant, ainsi qu’un démarrage rapide de 5 minutes.
Architecture du comparateur de documents
Voici un aperçu de l’architecture logique. Le LLM utilisé est gemini-3-flash avec gemini-embedding-001 (dimension: 1536) pour les intégrations vectorielles.

Niveaux architecturaux
Couche d’extraction en amont
Convertit toute structure de document brut entrant en une hiérarchie standardisée et lisible par machine.
Programmes impliqués
-
extract_pdf_to_md.py: gère l’ingestion en amont, en convertissant les PDF en Markdown propre et formaté hiérarchiquement. build_doc_index.py: analyse les en-têtes Markdown, filtre le bruit administratif et crée la carte de structure hiérarchique JSON (_structure.json).
Moteur de comparaison de base
Coordonne la recherche sémantique sur les nœuds hiérarchiques du document.
Programmes impliqués
criteria_validator.py: Détecte dynamiquement ledoc_type(par exemple, académique ou juridique) et effectue une première vérification de faisabilité sur les critères de comparaison de l’utilisateur, pour vérifier si les critères sont pertinents pour le type de document identifié.section_selector.py: Implémente la récupération de pointeur proxy de l’étape 1. Il identifie et extrait les sections les plus pertinentes du document 1 en fonction des critères de l’utilisateur à l’aide de la recherche sémantique FAISS et d’un reclassement LLM.cross_retriever.py: Implémente la récupération de pointeur proxy de l’étape 2. Il effectue une recherche sémantique ciblée dans l’espace vectoriel du document 2 en utilisant le contexte des sections sélectionnées du document 1 (en associant le contenu de la section Doc 1 aux critères de l’utilisateur comme requête). Le pipeline Proxy-Pointer est extrêmement précis pour identifier les sections sémantiquement analogues correctes à des fins de comparaison.section_comparator.py: Coordonne les évaluations par paires des sections correspondantes, en les transmettant au LLM pour analyser les alignements et les écarts.
Couche de présentation en aval
Adapte le résultat analytique au public cible et formate la visualisation finale.
Programmes impliqués
build_comparison_prompt(danscriteria_validator.py) : L’invite attribue le personnage approprié (par exemple, un chercheur universitaire expérimenté ou un conseiller juridique principal) en fonction du problème détecté.doc_type.report_builder.py: Rend le rapport de comparaison final côte à côte en utilisant des couleurs CSS professionnelles et un formatage de mise en page hautement lisible. Le rapport peut également être téléchargé sous forme de fichier markdown.
Ensemble de données utilisé
Pour le prototype, accessible au public Contrats de crédit, Émerson (136 pages) et Relais routier du Texas (190 pages) sont utilisés. Ceux-ci ont été délibérément sélectionnés car ils ont des structures différentes et appartiennent à des secteurs différents. Emerson est un fournisseur de services publics et son accord se lit comme un document de trésorerie d’entreprise souverain basé sur les notations des agences de crédit, tandis que l’accord de Texas Roadhouse est hautement personnalisé, construit spécifiquement autour des baux de restaurants, des structures de filiales multi-entités et des ratios de levier dynamiques.
De plus, j’ai ajouté la fonctionnalité permettant de comparer les articles de recherche pour lesquels j’ai sélectionné VecteurFusion et Peintre vectorielqui ont été utilisés dans mon article sur Multimodal Answers RAG. Il s’agit tous deux d’articles dans le domaine hautement spécialisé de la génération de graphiques texte en vecteur. Bien que les deux partagent une base technique identique (utilisant le rendu différenciable (tel que DiffVG) pour optimiser les chemins Scalable Vector Graphics (SVG) via des modèles de diffusion), ils diffèrent considérablement dans leur exécution méthodologique. Cette relation étroite de domaine partagé constitue un test difficile pour notre moteur de comparaison, quant à sa capacité à contourner les similitudes au niveau de la surface et à évaluer à la place de subtiles variations architecturales, que nous verrons dans la section suivante.
Comparaison des contrats de crédit
J’ai exécuté plusieurs requêtes différentes avec un ensemble diversifié de critères ; les rapports détaillés sont entièrement inclus dans le référentiel et un instantané est partagé ci-dessous. L’interface utilisateur Streamlit accepte deux documents (soit en .pdf ou .md format) en entrée, la comparaison étant effectuée strictement du point de vue du document 1. Par exemple, si le document 1 est Émerson et le document 2 est Relais routier du Texasla comparaison finale s’articule autour d’Emerson.
Le processus comporte trois étapes. Tout d’abord, il sélectionne toutes les sections de l’accord Emerson qui correspondent aux critères de l’utilisateur. Pour chaque section sélectionnée, il recherche jusqu’à trois sections comparatives dans Texas Roadhouse, puis effectue une analyse côte à côte. Parallèlement à l’analyse détaillée, le système fournit un rôle fonctionnel, une évaluation des écarts et une direction des risques (ou compromis méthodologique pour les articles universitaires).
Dans les quatre cas suivants, le document 1 est Emerson, le document 2 est Texas Roadhouse.
Critère 1 : structure des garanties, sûretés, garanties et exigences en matière de privilèges


Critère 2 : cas de défaut, recours du prêteur, droits d’accélération et délais de guérison


Critère 3 : clauses restrictives financières, exigences en matière de ratio de levier et obligations de conformité des emprunteurs


Critère 4a : déclarations et garanties, clauses sur les effets négatifs importants et obligations de divulgation


Pour les tests de cas extrêmes, voici ce qui précède »garanties » critères avec les documents inversés. Dans ce qui suit, le document 1 est Texas Roadhouse et le document 2 est Emerson.
Critère 4b : déclarations et garanties, clauses sur les effets négatifs importants et obligations de divulgation


Analyse de la comparaison des contrats de crédit
Ce que montrent les résultats ci-dessus, c’est que Proxy-Pointer ne se contente pas de faire correspondre les clauses par mots-clés ou par morceaux incomplets, il les examine du point de vue d’un analyste juridique, quelqu’un qui comprend le fonctionnement du crédit, dans ces secteurs très divers. L’un étant un service public de qualité investissement et l’autre une chaîne de restaurants de taille moyenne. Par exemple, il identifie les conséquences économiques et juridiques cachées sous un langage superficiellement similaire – comme le risque de subordination structurelle dans un gage négatif, la préservation de la valeur de l’entreprise dans les clauses de disposition ou l’exposition à des litiges dans les déclarations de divulgation.
Une autre observation est que l’analyse est restée cohérente dans la direction lorsque les documents ont été retournés. Il ne s’est pas appuyé sur Emerson en tant que document 1, mais a plutôt réévalué les accords du point de vue de Texas Roadhouse. Il a correctement identifié quel accord imposait le plus de restrictions à l’emprunteur, qui donnait aux prêteurs un plus grand contrôle en cas de défaut, qui était plus vulnérable aux actifs mis hors de portée et qui obligeait l’entreprise à divulguer plus d’informations. Aucun de ces éléments n’est explicitement écrit dans les deux accords. Ils deviennent évidents pour un analyste juridique lorsque plusieurs clauses, exceptions, seuils et définitions sont lus ensemble. Le résultat ressemble moins à une simple comparaison de clauses qu’à une compréhension de la manière dont le risque et le contrôle sont partagés entre l’emprunteur et le prêteur.
Comparaison des documents de recherche
Pour les articles VectorFusion et VectorPainter, j’ai comparé en utilisant les critères suivants : Comparez la façon dont chaque article aborde le contrôle de style et l’initialisation primitive dans la synthèse graphique vectorielle. Plus précisément, analysez comment VectorFusion utilise la réinitialisation du chemin et l’initialisation des échantillons raster par rapport à la façon dont VectorPainter extrait et réorganise les traits vectorisés à partir d’une image de référence en utilisant l’apprentissage par imitation de trait et les pertes de style.
Voici une comparaison :


L’analyse montre une comparaison approfondie de domaines, un outil qu’un chercheur peut utiliser pour comparer les deux articles sans les lire dans leur intégralité. Proxy-Pointer va au-delà de la correspondance d’architecture au niveau de la surface et identifie la philosophie de conception plus profonde derrière les deux articles. De plus, il reconnaît correctement que VectorFusion traite la génération SVG comme un problème d’optimisation dynamique avec réinitialisation continue du chemin, tandis que VectorPainter l’aborde comme un problème de synthèse guidée par le style et axé sur la cohérence artistique et l’historique des traits appris. Ce qui était également très intéressant, c’est que cela pouvait relier des idées réparties dans des sections complètement différentes des articles et équilibrer les limites sous-jacentes. Cela démontre une analyse fine de deux systèmes dans le même domaine étroit mais qui fonctionnent différemment.
Référentiel Open Source
Proxy-Pointer est entièrement open source (licence MIT) et est accessible sur Dépôt Github Proxy-Pointer. Le comparateur de documents est ajouté au référentiel en plus des robots de réponse texte uniquement et multimodaux existants.
UN Démarrage rapide en 5 minutes vous permettra de tester rapidement avec les données disponibles.
DocComparator/
├── src/
│ ├── comparison/
│ │ ├── cross_retriever.py # Stage 2 PP Retrieval (Doc 2)
│ │ ├── section_comparator.py # Pairwise LLM evaluation engine
│ │ └── section_selector.py # Stage 1 PP Retrieval (Doc 1)
│ ├── extraction/
│ │ └── extract_pdf_to_md.py # LlamaParse PDF ingestion & formatting
│ ├── indexing/
│ │ └── build_doc_index.py # Skeleton tree & FAISS vector builder
│ ├── report/
│ │ └── report_builder.py # Markdown report generation logic
│ ├── validation/
│ │ └── criteria_validator.py # Persona injection & criteria feasibility
│ └── config.py # Core configurations and model definitions
├── data/ # Unified Data Hub
│ └── uploads/ # Raw PDFs and test documents
├── results/ # Artifact reports for the test cases tried
└── app.py # Streamlit Comparator UIConclusion
La comparaison de documents utilisant une approche Chunk-Embed-Match ne donnera probablement pas de bons résultats. Dans un document d’entreprise complexe tel que les conditions générales du contrat, la signification sémantique est encapsulée dans des sections et sous-sections contenant un texte dense. Chacune de ces sections peut contenir des pages et faire partie d’un très long document. Pour une comparaison et une analyse efficaces, les sections, les définitions, les exceptions et les relations structurelles doivent être extraites ensemble pour avoir un sens lorsqu’elles sont lues ensemble.
Proxy-Pointer, avec son pipeline de récupération précis en deux étapes, est idéal pour cette tâche. Comme le montrent les résultats ci-dessus, même avec un LLM budgétaire tel que gemini-flashon peut comparer des accords ou des documents de recherche de manière à préserver l’intention sous-jacente et les compromis cachés dans des sections structurellement disparates.
L’architecture à 3 niveaux de Document Comparator peut s’adapter à d’autres domaines sans aucune modification du moteur de comparaison lui-même. Cela permet à la récupération sensible à la structure de mieux se généraliser qu’un outil personnalisé qui fonctionne uniquement pour un type spécifique de document. Les organisations peuvent adapter cela à leurs secteurs d’activité et à leurs cas d’utilisation spécifiques, avec un minimum d’efforts d’ingénierie supplémentaires.
Clonez le dépôt. Essayez vos propres documents. Faites-moi part de vos réflexions.
Connectez-vous avec moi et partagez vos commentaires sur www.linkedin.com/in/partha-sarkar-lets-talk-AI
Tous les documents de recherche utilisés dans cet article sont disponibles sur VecteurFusion et Peintre vectoriel avec licence CC-BY. Les contrats de crédit sont accessibles au public sur SEC.gov. Le code et les résultats de référence sont open source sous la licence MIT. Les images utilisées dans cet article sont générées à l’aide de Google Gemini.



