Uno de los casos de uso de IA más importantes de una empresa en la actualidad es la comparación de documentos, que se ubica junto a los chatbots conversacionales. Las organizaciones dedican una gran cantidad de horas-persona a comparar contratos, políticas, especificaciones técnicas, peticiones legales, trabajos de investigación y mucho más para identificar diferencias, riesgos, revisiones e inconsistencias semánticas.
Sin embargo, la comparación de documentos es mucho más compleja que la diferencia de texto tradicional. Por un lado, estas herramientas están destinadas a ser asistentes eficaces para los profesionales legales y comerciales, científicos y otros que esperan que el análisis tenga el nivel de profundidad y lenguaje que se puede esperar de un profesional junior en el campo.
Un problema aún más grave es que el significado de los documentos empresariales normalmente no está contenido en fragmentos aislados. Está integrado en secciones, jerarquías, agrupaciones de cláusulas y relaciones. Y estas secciones pueden estar dispersas en varias páginas de un documento que abarca más de 100 páginas. Por ejemplo, un acuerdo de crédito puede definir limitaciones de garantía en una sección, excepciones a esas varias páginas más adelante y describir los derechos de ejecución en un artículo completamente diferente. Si se compara otro acuerdo con criterios como “estructura de garantía, derechos de garantía y requisitos de gravamen”, el sistema debe identificar, recuperar y sintetizar todas estas secciones estructuralmente dispersas antes de que pueda ocurrir cualquier comparación significativa.
La arquitectura Proxy-Pointer, con su canal de recuperación consciente de la estructura pero de bajo costo que preserva la jerarquía de documentos durante la recuperación y comparación, es ideal para esta tarea. Utilizando una combinación de incrustaciones de ruta de navegación jerárquica y un reclasificador LLM liviano, es capaz de extraer con precisión regiones semánticamente alineadas entre documentos antes de que comience el razonamiento comparativo.
En este artículo, comparto el diseño y los resultados del mundo real de un comparador de documentos versátil capaz de analizar tanto contratos de crédito financieros altamente complejos como trabajos de investigación académica. Como notará en la arquitectura descrita en la siguiente sección, el motor de comparación principal está separado del procesamiento de documentos ascendente y del formateo y generación de informes descendentes, lo que permite que el sistema se adapte fácilmente a cualquier dominio de documentos nuevo (como pólizas de seguro, pautas médicas o códigos impositivos). Todo lo que se requiere es un proceso de extracción ascendente para estructurar la entrada para la generación de árboles jerárquicos y una actualización posterior de la personalidad analítica y el formateador de informes del LLM, dejando el proceso principal de comparación y recuperación de múltiples etapas completamente intacto.
Además, estoy agregando el código completo a mi repositorio github de Proxy-Pointer de código abierto existente, junto con un inicio rápido de 5 minutos.
Arquitectura del comparador de documentos
A continuación se ofrece una descripción general de la arquitectura lógica. El LLM utilizado es gemini-3-flash junto con gemini-embedding-001 (dimensión: 1536) para incrustaciones de vectores.
Niveles arquitectónicos
Capa de extracción aguas arriba
Convierte cualquier estructura de documento sin procesar entrante en una jerarquía estandarizada y legible por máquina.
Programas involucrados
extract_pdf_to_md.py: maneja la ingesta ascendente, convirtiendo archivos PDF en Markdown limpio y con formato jerárquico. build_doc_index.py: analiza los encabezados de Markdown, filtra el ruido administrativo y crea el mapa de estructura JSON jerárquico (_structure.json).
Motor de comparación principal
Coordina la búsqueda semántica sobre nodos de documentos jerárquicos.
Programas involucrados
criterios_validator.py: detecta dinámicamente el tipo de documento (por ejemplo, académico versus legal) y realiza una verificación de viabilidad inicial de los criterios de comparación del usuario, para determinar si los criterios son relevantes para el tipo de documento identificado. sección_selector.py: implementa la recuperación del puntero proxy de la etapa 1. Identifica y extrae las secciones más relevantes del Documento 1 según los criterios del usuario utilizando la búsqueda semántica FAISS y un reclasificador LLM. cross_retriever.py: implementa la recuperación del puntero proxy de la etapa 2. Realiza una búsqueda semántica específica dentro del espacio vectorial del Documento 2 utilizando el contexto de las secciones seleccionadas del Documento 1 (emparejando el contenido de la sección del Documento 1 con los criterios del usuario como consulta). La canalización Proxy-Pointer es extremadamente precisa a la hora de identificar las secciones semánticamente análogas correctas para comparar. sección_comparator.py: coordina evaluaciones por pares de secciones coincidentes y las pasa al LLM para analizar alineaciones y discrepancias.
Capa de presentación descendente
Adapta el resultado analítico al público objetivo y da formato a la visualización final.
Programas involucrados
build_comparison_prompt (en criterios_validator.py): el mensaje asigna la persona adecuada (por ejemplo, investigador académico experimentado o asesor jurídico senior) según el tipo de documento detectado. report_builder.py: presenta el informe de comparación final uno al lado del otro utilizando colores CSS profesionales y un formato de diseño altamente legible. El informe también se puede descargar como un archivo de rebajas.
Conjunto de datos utilizado
Para el prototipo, se utilizan contratos de crédito disponibles públicamente, Emerson (136 páginas) y Texas Roadhouse (190 páginas). Estos han sido seleccionados deliberadamente porque tienen diferentes estructuras y pertenecen a diferentes industrias. Emerson es un proveedor de servicios públicos y su acuerdo se lee como un documento de tesorería corporativa soberana basado en calificaciones de agencias de crédito, mientras que el acuerdo de Texas Roadhouse es altamente personalizado, construido específicamente en torno a arrendamientos de restaurantes, estructuras subsidiarias de múltiples entidades y índices de apalancamiento dinámicos.
Además, agregué la función para comparar trabajos de investigación para los cuales seleccioné VectorFusion y VectorPainter, que se utilizaron en mi artículo sobre Multimodal Answers RAG. Ambos son artículos en el campo altamente especializado de la generación de gráficos de texto a vector. Si bien ambos comparten una base técnica idéntica (el uso de renderizado diferenciable (como DiffVG) para optimizar las rutas de gráficos vectoriales escalables (SVG) a través de modelos de difusión), difieren significativamente en su ejecución metodológica. Esta estrecha relación de dominio compartido es un caso de prueba difícil para nuestro motor de comparación, de su capacidad para evitar similitudes a nivel de superficie y, en cambio, evaluar variaciones arquitectónicas sutiles, que veremos en la siguiente sección.
Comparación de contratos de crédito
Realicé varias consultas diferentes con un conjunto diverso de criterios; Los informes detallados están completamente incluidos en el repositorio y a continuación se comparte una instantánea. La interfaz de usuario de Streamlit acepta dos documentos (ya sea en formato .pdf o .md) como entrada, y la comparación se realiza estrictamente desde la perspectiva del Documento 1. Por ejemplo, si el Documento 1 es Emerson y el Documento 2 es Texas Roadhouse, la comparación final se enmarca en torno a Emerson.
Hay tres pasos para el proceso. Primero, selecciona todas las secciones del acuerdo de Emerson que son relevantes para los criterios del usuario. Para cada sección seleccionada, busca hasta tres secciones comparativas en Texas Roadhouse y luego realiza un análisis en paralelo. Junto con el análisis detallado, el sistema proporciona un rol funcional, una calificación de discrepancia y una dirección de riesgo (o compensación metodológica para trabajos académicos).
En los cuatro casos siguientes, el Documento 1 es Emerson y el Documento 2 es Texas Roadhouse.
Criterio 1: estructura de garantía, garantías reales, garantías y requisitos de gravamen
Criterio 2: eventos de incumplimiento, remedios del prestamista, derechos de aceleración y períodos de subsanación
Criterio 3: cláusulas financieras, requisitos del índice de apalancamiento y obligaciones de cumplimiento del prestatario
Criterio 4a: declaraciones y garantías, cláusulas de efectos materiales adversos y obligaciones de divulgación
Para las pruebas de casos extremos, aquí están los criterios de "garantías" anteriores con los documentos cambiados. A continuación, el Documento 1 es Texas Roadhouse y el Documento 2 es Emerson.
Criterio 4b: declaraciones y garantías, cláusulas de efectos materiales adversos y obligaciones de divulgación
Análisis de comparación de contratos de crédito
Lo que muestran los resultados anteriores es que Proxy-Pointer no solo hace coincidir cláusulas por palabras clave o fragmentos incompletos, sino que las analiza desde la perspectiva de un analista legal, alguien que entiende cómo funciona el crédito en estas industrias tan diversas. Una es una empresa de servicios públicos con grado de inversión y la otra una cadena de restaurantes de tamaño mediano. Por ejemplo, identifica las consecuencias económicas y legales ocultas bajo un lenguaje superficialmente similar, como el riesgo de subordinación estructural dentro de una promesa negativa, la preservación del valor empresarial dentro de los convenios de disposición o la exposición a litigios dentro de las declaraciones de divulgación.
Otra observación es que el análisis se mantuvo direccionalmente consistente cuando se voltearon los documentos. No se ancló a Emerson como Documento 1, sino que reevaluó los acuerdos desde la perspectiva de Texas Roadhouse. Identificó correctamente qué acuerdo imponía más restricciones al prestatario, cuál daba a los prestamistas un mayor control durante los incumplimientos, cuál era más vulnerable a que los activos se movieran fuera de su alcance y cuál requería que la empresa revelara más información. Ninguno de estos está escrito explícitamente en ninguno de los acuerdos. Se vuelven evidentes para un analista jurídico cuando se leen juntas múltiples cláusulas, excepciones, umbrales y definiciones. El resultado se parece menos a una simple comparación de cláusulas y más a una comprensión de cómo se comparten el riesgo y el control entre el prestatario y el prestamista.
Comparación de trabajos de investigación
Para los artículos VectorFusion y VectorPainter, comparé utilizando los siguientes criterios: Comparar cómo cada artículo aborda el control de estilo y la inicialización primitiva en la síntesis de gráficos vectoriales. Específicamente, analice cómo VectorFusion utiliza la reinicialización de rutas y la inicialización de muestras de ráster versus cómo VectorPainter extrae y reorganiza trazos vectorizados de una imagen de referencia usando el aprendizaje de imitación de trazos y pérdidas de preservación de estilo.
Aquí hay una comparación:
El análisis muestra una comparación profunda de dominios, una herramienta que un investigador puede utilizar para comparar ambos artículos sin leerlos en su totalidad. Proxy-Pointer va más allá de la coincidencia de arquitectura a nivel de superficie e identifica la filosofía de diseño más profunda detrás de ambos artículos. Además, reconoce correctamente que VectorFusion trata la generación de SVG como un problema de optimización dinámica con reinicialización de ruta continua, mientras que VectorPainter lo aborda como un problema de síntesis guiado por estilo centrado en la consistencia artística y el historial de trazos aprendido. Lo que también fue bastante interesante fue que podía conectar ideas repartidas en secciones completamente diferentes de los artículos y equilibrar las limitaciones subyacentes. Esto demuestra un análisis detallado de dos sistemas en el mismo dominio limitado pero que funcionan de manera diferente.
Repositorio de código abierto
Proxy-Pointer es completamente de código abierto (licencia MIT) y se puede acceder a él desde el repositorio de Proxy-Pointer Github. El Comparador de documentos se está agregando al repositorio además de los bots de respuesta multimodal y de solo texto existentes.
Un inicio rápido de 5 minutos le permitirá realizar pruebas rápidamente con los datos disponibles.
DocComparator/ ├── src/ │ ├── comparación/ │ │ ├── cross_retriever.py # Recuperación PP de etapa 2 (Doc 2) │ │ ├── sección_comparator.py # Motor de evaluación LLM por pares │ │ └── sección_selector.py # Recuperación de PP de etapa 1 (Doc 1) │ ├── extracción/ │ │ └── extract_pdf_to_md.py # LlamaParse Ingestión y formato de PDF │ ├── indexación/ │ │ └── build_doc_index.py # Árbol esqueleto y generador de vectores FAISS │ ├── report/ │ │ └── report_builder.py # Lógica de generación de informes Markdown │ ├── validación/ │ │ └── criterios_validator.py # Inyección de persona & viabilidad de criterios │ └── config.py # Configuraciones principales y definiciones de modelos ├── datos/ # Unified Data Hub │ └── cargas/ # PDF sin formato y documentos de prueba ├── resultados/ # Informes de artefactos para los casos de prueba probados └── app.py # Streamlit Comparator UI
Conclusión
No es probable que la comparación de documentos mediante el método Chunk-Embed-Match dé buenos resultados. En un documento empresarial complejo, como los términos y condiciones del contrato, el significado semántico se resume en secciones y subsecciones que contienen texto denso. Cada una de estas secciones podría tener varias páginas y formar parte de un documento muy extenso. Para que la comparación y el análisis sean eficaces, las secciones, definiciones, excepciones y relaciones estructurales deben extraerse juntas para que tengan sentido cuando se lean juntas.
Proxy-Pointer con su proceso de recuperación preciso de dos pasos es ideal para esta tarea. Como muestran los resultados anteriores, incluso con un LLM económico como gemini-flash, se pueden comparar acuerdos o trabajos de investigación de modo que puedan preservar la intención subyacente y las compensaciones ocultas en secciones estructuralmente dispares.
La arquitectura de 3 niveles del Comparador de documentos puede escalarse a otros dominios sin cambios en el motor de comparación en sí. Esto permite que la recuperación consciente de la estructura se generalice mejor que una herramienta personalizada que funciona solo para un tipo específico de documento. Las organizaciones pueden adaptar esto a sus industrias y casos de uso específicos, con un mínimo esfuerzo de ingeniería incremental.
Clona el repositorio. Pruebe sus propios documentos. Déjame saber tus pensamientos.
Conéctese conmigo y comparta sus comentarios en www.linkedin.com/in/partha-sarkar-lets-talk-AI
Todos los trabajos de investigación utilizados en este artículo están disponibles en VectorFusion y VectorPainter con licencia CC-BY. Los acuerdos de crédito están disponibles públicamente en SEC.gov. El código y los resultados de las pruebas comparativas son de código abierto bajo la licencia MIT. Las imágenes utilizadas en este artículo se generan con Google Gemini.