Сравнение корпоративных документов: Proxy-Pointer RAG для структуры и иерархии
Иерархическое понимание и сравнение контрактов, научных работ и многого другого.
Делиться

Сегодня сравнение документов занимает одно из важнейших мест среди примеров использования ИИ в корпоративной среде, наряду с разговорными чат-ботами. Организации тратят огромное количество человеко-часов на сравнение контрактов, политик, технических спецификаций, юридических документов, научных работ и многого другого, чтобы выявить различия, риски, необходимые изменения и семантические несоответствия.
Однако сравнение документов — гораздо более сложный процесс, чем традиционное сравнение текста. Во-первых, эти инструменты призваны стать эффективными помощниками для юристов и специалистов в области бизнеса, ученых и других, кто ожидает от анализа уровня глубины и языка, сопоставимого с уровнем начинающего специалиста в данной области.
Ещё более сложная проблема заключается в том, что смысл в корпоративных документах обычно не содержится в отдельных фрагментах. Он встроен в разделы, иерархии, группы пунктов и взаимосвязи. И эти разделы могут быть разбросаны по нескольким страницам документа, насчитывающего более 100 страниц. Например, кредитное соглашение может определять ограничения по залоговому обеспечению в одном разделе, исключения из них — несколькими страницами позже, а права на принудительное исполнение — в совершенно другой статье. Если другое соглашение сравнивается с этим по таким критериям, как «структура залога, обеспечительные интересы и требования к залогу», система должна идентифицировать, извлечь и обобщить все эти структурно разрозненные разделы, прежде чем можно будет провести какое-либо осмысленное сравнение.
Архитектура Proxy-Pointer, благодаря своему структурно-ориентированному, но недорогому конвейеру поиска, сохраняющему иерархию документов во время поиска и сравнения, идеально подходит для этой задачи. Используя комбинацию иерархических векторных представлений и легковесного LLM-переранжировщика, она способна точно извлекать семантически выровненные области из документов до начала сравнительного анализа.
В этой статье я делюсь описанием конструкции и результатами реальной работы универсального компаратора документов, способного анализировать как сложные финансовые кредитные соглашения, так и научные исследовательские работы. Как вы заметите в архитектуре, описанной в следующем разделе, основной механизм сравнения отделен от обработки документов и последующего форматирования и генерации отчетов, что позволяет легко адаптировать систему к любой новой области документов (например, страховым полисам, медицинским рекомендациям или налоговым кодексам). Все, что требуется, — это конвейер извлечения данных для структурирования входных данных для генерации иерархического дерева и последующее обновление аналитического профиля LLM и форматировщика отчетов — при этом основной многоэтапный конвейер поиска и сравнения остается полностью неизменным.
Кроме того, я добавляю полный код в свой существующий репозиторий Proxy-Pointer на GitHub с открытым исходным кодом, а также краткое руководство по быстрому запуску (займет 5 минут).
Архитектура компаратора документов
Здесь представлен обзор логической архитектуры. В качестве LLM используется gemini-3-flash а также gemini-embedding-001 (dimension: 1536) для векторных встраиваний.

Архитектурные ярусы
Слой добычи на вышестоящем уровне
Преобразует любую входящую структуру необработанного документа в стандартизированную, машиночитаемую иерархию.
Участвующие программы
-
extract_pdf_to_md.py: Обрабатывает входные данные, преобразуя PDF-файлы в чистый, иерархически отформатированный Markdown. -
build_doc_index.py: Анализирует заголовки Markdown, отфильтровывает административный шум и строит иерархическую карту структуры JSON (_structure.json).
Основной механизм сравнения
Осуществляет семантический поиск по координатам узлов иерархического документа.
Участвующие программы
-
criteria_validator.py: Динамически определяетdoc_type(например, академический или юридический) и выполняет первоначальную проверку соответствия критериям сравнения, заданным пользователем, чтобы определить, являются ли эти критерии релевантными для указанного типа документа. -
section_selector.py: Реализует первый этап поиска по прокси-указатели. Он идентифицирует и извлекает наиболее релевантные разделы Документа 1 на основе критериев пользователя, используя семантический поиск FAISS и алгоритм переранжирования LLM. -
cross_retriever.py: Реализует второй этап поиска с использованием Proxy-Pointer. Он выполняет целевой семантический поиск в векторном пространстве Документа 2, используя контекст выбранных разделов Документа 1 (сопоставляя содержимое раздела Документа 1 с критериями пользователя в качестве запроса). Конвейер Proxy-Pointer чрезвычайно точен в определении правильных семантически аналогичных разделов для сравнения. -
section_comparator.py: Координаты для попарной оценки совпадающих разделов, передаваемые в LLM для анализа выравниваний и расхождений.
Нижестоящий уровень представления
Адаптирует аналитические данные к целевой аудитории и форматирует итоговую визуализацию.
Участвующие программы
-
build_comparison_prompt(вcriteria_validator.py): Подсказка назначает соответствующую персону (например, опытный научный сотрудник или старший юрисконсульт) на основе обнаруженногоdoc_type. -
report_builder.py: Отображает итоговый сравнительный отчет в режиме бок о бок, используя профессиональные цвета CSS и легко читаемое форматирование макета. Отчет также можно загрузить в виде файла Markdown.
Используемый набор данных
Для прототипа используются общедоступные кредитные соглашения компаний Emerson (136 страниц) и Texas Roadhouse (190 страниц). Они были выбраны намеренно, поскольку имеют разную структуру и относятся к разным отраслям. Emerson — поставщик коммунальных услуг, и его соглашение выглядит как документ суверенного корпоративного казначейства, основанный на рейтингах кредитных агентств, в то время как соглашение Texas Roadhouse в значительной степени адаптировано под конкретные условия аренды ресторанов, многопрофильные дочерние структуры и динамические коэффициенты заемного финансирования.
Кроме того, я добавил функцию сравнения исследовательских работ, для которых я выбрал VectorFusion и VectorPainter, использованные в моей статье на Multimodal Answers RAG. Обе работы относятся к узкоспециализированной области генерации векторной графики из текста. Хотя обе работы имеют идентичную техническую основу — использование дифференцируемого рендеринга (например, DiffVG) для оптимизации путей масштабируемой векторной графики (SVG) с помощью моделей диффузии — они значительно различаются в методологическом исполнении. Эта узкая, общая область применения является сложным тестовым примером для нашего механизма сравнения, проверяющим его способность обходить поверхностные сходства и вместо этого оценивать тонкие архитектурные различия, которые мы рассмотрим в следующем разделе.
Сравнение кредитных соглашений
Я выполнил несколько различных запросов с разнообразными критериями; подробные отчеты полностью включены в репозиторий, а снимок состояния представлен ниже. Пользовательский интерфейс Streamlit принимает в качестве входных данных два документа (в формате .pdf или .md ), при этом сравнение выполняется исключительно с точки зрения Документа 1. Например, если Документ 1 — это Emerson , а Документ 2 — Texas Roadhouse , то окончательное сравнение будет проводиться с учетом Emerson.
Процесс состоит из трех этапов. Во-первых, система выбирает все разделы соглашения Эмерсона, соответствующие критериям пользователя. Для каждого выбранного раздела она находит до трех сравнительных разделов в Texas Roadhouse, а затем проводит сравнительный анализ. Наряду с подробным анализом система предоставляет функциональную роль, оценку расхождений и направление риска (или методологический компромисс для научных работ).
В следующих четырех случаях Документ 1 — это Emerson, Документ 2 — это Texas Roadhouse.
Критерий 1: структура обеспечения, обеспечительные интересы, гарантии и требования к залоговому праву.


Критерий 2: случаи неисполнения обязательств, средства правовой защиты кредитора, права на ускоренное погашение и сроки устранения нарушений.


Критерий 3: финансовые ковенанты, требования к коэффициенту левериджа и обязательства заемщика по соблюдению нормативных требований.


Критерий 4а: заверения и гарантии, положения о существенном неблагоприятном воздействии и обязательства по раскрытию информации.


Для проверки в исключительных случаях, вот вышеуказанные критерии «гарантий» с поменявшимися местами документами. В следующем документе 1 указана компания Texas Roadhouse, а в документе 2 — компания Emerson.
Критерий 4b: заверения и гарантии, положения о существенном неблагоприятном воздействии и обязательства по раскрытию информации.


Анализ сравнения кредитных соглашений
Приведенные выше результаты показывают, что Proxy-Pointer не просто сопоставляет пункты договора по ключевым словам или неполным фрагментам, а рассматривает их с точки зрения юридического аналитика, человека, понимающего, как работает кредитование, в этих крайне разнообразных отраслях. Одна из них — это коммунальное предприятие с инвестиционным рейтингом, а другая — сеть ресторанов среднего размера. Например, он выявляет экономические и юридические последствия, скрытые за внешне похожими формулировками, — такие как риск структурной субординации в случае отрицательного залога, сохранение стоимости предприятия в рамках соглашений о реструктуризации или риск судебных разбирательств в рамках заявлений о раскрытии информации.
Ещё одно наблюдение заключается в том, что анализ оставался последовательно согласованным по направлению, когда документы были перевёрнуты. Он не основывался на документе 1 компании Emerson, а вместо этого переоценивал соглашения с точки зрения Texas Roadhouse. Он правильно определил, какое соглашение накладывало больше ограничений на заёмщика, какое предоставляло кредиторам больший контроль в случае невыполнения обязательств, какое было более уязвимо для перемещения активов за пределы досягаемости и какое требовало от компании раскрытия большего количества информации. Ни одно из этих положений не прописано явно ни в одном из соглашений. Они становятся очевидными для юридического аналитика при одновременном прочтении нескольких пунктов, исключений, пороговых значений и определений. В результате получается не столько простое сравнение пунктов, сколько понимание того, как риск и контроль распределяются между заёмщиком и кредитором.
Сравнение научных работ
Для сравнения работ VectorFusion и VectorPainter я использовал следующие критерии: сопоставить подходы каждой работы к управлению стилем и инициализации примитивов в синтезе векторной графики. В частности, проанализировать, как VectorFusion использует повторную инициализацию контуров и инициализацию растровых сэмплов, по сравнению с тем, как VectorPainter извлекает и перестраивает векторизованные штрихи из эталонного изображения, используя обучение имитации штрихов и функции потерь, сохраняющие стиль.
Вот одно из сравнений:


Анализ демонстрирует глубокое, предметно-ориентированное сравнение, инструмент, который исследователь может использовать для сравнения обеих статей, не читая их полностью. Proxy-Pointer выходит за рамки поверхностного сопоставления архитектуры и выявляет более глубокую философию проектирования, лежащую в основе обеих статей. Кроме того, он правильно определяет, что VectorFusion рассматривает генерацию SVG как задачу динамической оптимизации с непрерывной повторной инициализацией пути, в то время как VectorPainter подходит к ней как к задаче синтеза, управляемой стилем, сфокусированной на художественной согласованности и изученной истории штрихов. Что также весьма интересно, так это то, что он смог связать идеи, разбросанные по совершенно разным разделам статей, и сбалансировать лежащие в их основе ограничения. Это демонстрирует детальный анализ двух систем в одной и той же узкой области, но работающих по-разному.
Репозиторий с открытым исходным кодом
Proxy-Pointer — это полностью открытый проект (лицензия MIT), доступный в репозитории Proxy-Pointer на GitHub. В дополнение к существующим ботам для ответов на текстовые и мультимодальные вопросы, в репозиторий добавляется инструмент сравнения документов.
Пятиминутный экспресс-старт позволит вам быстро провести тестирование с использованием имеющихся данных.
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 UI
Заключение
Сравнение документов с использованием подхода «Встраивание фрагмента — Сопоставление» вряд ли даст хорошие результаты. В сложном корпоративном документе, таком как «Условия и положения контракта», семантическое значение заключено в разделах и подразделах, содержащих плотный текст. Каждый из этих разделов может занимать несколько страниц и являться частью очень длинного документа. Для эффективного сравнения и анализа разделы, определения, исключения и структурные связи необходимо извлекать вместе, чтобы они имели смысл при совместном прочтении.
Proxy-Pointer с его точным двухэтапным конвейером поиска идеально подходит для этой задачи. Как показывают приведенные выше результаты, даже с бюджетным LLM, таким как gemini-flash , можно сравнивать соглашения или исследовательские работы таким образом, чтобы сохранить скрытые намерения и компромиссы, лежащие в основе структурно различающихся разделов.
Трехуровневая архитектура Document Comparator позволяет масштабировать систему на другие области без изменения самого механизма сравнения. Это обеспечивает более высокую обобщаемость результатов поиска с учетом структуры документа по сравнению со специализированными инструментами, работающими только с определенным типом документов. Организации могут адаптировать систему к своим конкретным отраслям и сценариям использования с минимальными дополнительными инженерными затратами.
Клонируйте репозиторий. Попробуйте свои собственные документы. Поделитесь своими впечатлениями.
Свяжитесь со мной и поделитесь своими комментариями на сайте www.linkedin.com/in/partha-sarkar-lets-talk-AI
Все научные статьи, использованные в этой статье, доступны на VectorFusion и VectorPainter под лицензией CC-BY. Соглашения об использовании материалов находятся в открытом доступе на SEC.gov. Код и результаты бенчмаркинга являются открытым исходным кодом под лицензией MIT. Изображения, использованные в этой статье, созданы с помощью Google Gemini.
Парта Саркар. Все материалы от Парты Саркара.
Источник: towardsdatascience.com

Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.