TL;DR
Когда редактируешь длинный структурированный документ через LLM, главная проблема — не качество правки, а потеря связей. Поменял термин в одном разделе — а в трёх других он уже устарел. Переформулировал описание — а ссылки на «этот результат» теперь висят в воздухе. LEDGER решает это через явную карту зависимостей: какой раздел на что ссылается, что от чего зависит по смыслу.
Главный инсайт: LLM при правке длинного документа не отслеживает связи между частями. Получает на вход весь документ — и либо исправляет точечно, не замечая зависимостей, либо пытается держать всё в голове и ошибается. Исследование показало: без явной карты зависимостей согласованность документа после правки — около 56%. С явной картой — 76%.
Суть метода: перед правкой строишь карту — кто на кого ссылается, кто от кого зависит по смыслу. При каждой правке модель получает не весь документ, а только нужный отрывок плюс все связанные с ним части. После правки — проверка: не сломались ли ссылки, не разъехалась ли терминология.
Схема метода
ШАГ 1: Карта зависимостей (один промпт)
→ Явные ссылки: «Раздел 3 ссылается на Рисунок 2»
→ Неявные зависимости: «Раздел 5 опирается на определение из Раздела 2»
→ Смысловые связи: «Раздел 4 и Раздел 7 описывают одно и то же понятие»
ШАГ 2: Целевая правка (отдельный промпт)
→ Передаёшь: редактируемый отрывок + все зависимые секции + карту
→ Модель правит, зная что затронет
ШАГ 3: Проверка согласованности (отдельный промпт)
→ Список изменённых частей → проверка ссылок и терминологии
→ Если что-то сломалось — правка зависимых разделов
Пример применения
Задача: Переписываешь оффер для сайта. Документ — 8 страниц: описание продукта, блок с ценами, FAQ, блок гарантий, отзывы. Меняешь позиционирование с «экономия времени» на «рост выручки». Теперь нужно обновить все места, где упоминается старый смысл — и не пропустить ни одного.
Промпт (Шаг 1 — карта зависимостей):
Перед тобой документ — оффер продукта. Твоя задача:
построй карту зависимостей между разделами.
Для каждого раздела укажи:
1. Явные ссылки: «В этом разделе явно упоминается [другой раздел/блок/термин]»
2. Смысловые зависимости: «Этот раздел опирается на идею/обещание из [другого раздела]»
3. Терминологию: ключевые слова и формулировки, которые повторяются в нескольких местах
Формат:
[Название раздела] → явные ссылки: [...] | зависит от: [...] | термины: [...]
[Вставь документ]
Промпт (Шаг 2 — правка с картой):
Вот карта зависимостей документа:
[вставь карту из шага 1]
Вот разделы, которые нужно обновить в связи с правкой:
[вставь только затронутые разделы + зависимые]
Задача: замени позиционирование «экономия времени» → «рост выручки»
в разделе [X]. Убедись, что все зависимые разделы остаются согласованными.
Выведи:
1. Обновлённые разделы
2. Что изменил в каждом и почему
3. Что нужно проверить вручную
Результат:
На шаге 1 модель вернёт структурированный список: какой блок на что ссылается, какие термины сквозные. На шаге 2 — обновлённые тексты только затронутых разделов и явный список что изменилось и почему. Не нужно читать весь документ самому — модель сама укажет точки риска.
Почему это работает
Слабость LLM при работе с длинными документами: модель не держит в голове структурные связи. Она хорошо правит то, что видит прямо сейчас — но не отслеживает, что поменянный термин в разделе 3 разрушает логику раздела 7. Чем длиннее документ, тем хуже: внимание «размазывается», важное тонет в потоке текста.
Что модель умеет хорошо: следовать явным инструкциям. Если написать «вот что от чего зависит — учти при правке», модель это учтёт. Исследование показало принципиальный результат: явная карта зависимостей заменяет дорогостоящее внутреннее рассуждение. Модель с простыми настройками + явной картой обгоняет ту же модель на максимальной мощности рассуждений, но без карты.
Как метод использует это: карта делает невидимые связи видимыми. Вместо «держи весь документ в голове» — «вот конкретный список что затронет правка». Это убирает двусмысленность и фокусирует внимание точно туда, куда нужно.
Рычаги управления: - Детализация карты — для простого текста достаточно ключевых терминов; для договоров и техзаданий нужны явные ссылки - Шаг проверки — можно пропустить для черновых правок, обязателен для финальных версий - Контекст правки — передавай только затронутые разделы + зависимые, не весь документ
Шаблон промпта
Шаг 1: Карта зависимостей
Проанализируй документ и построй карту зависимостей.
Для каждого раздела/блока укажи:
- Явные ссылки: на какие другие разделы, рисунки, таблицы или понятия ссылается
- Смысловые зависимости: какие утверждения/обещания из других разделов
необходимы для понимания этого раздела
- Сквозные термины: ключевые слова, которые встречаются в нескольких местах
Формат вывода:
[Название раздела]
→ Явные ссылки: [список]
→ Зависит от: [список]
→ Сквозные термины: [список]
Документ:
{документ}
Шаг 2: Правка с учётом зависимостей
Карта зависимостей документа:
{карта_из_шага_1}
Разделы для правки и их зависимости:
{затронутые_разделы}
Задача: {описание_правки}
Требования:
- Внеси изменение в целевой раздел
- Проверь все зависимые разделы на согласованность
- Выведи: обновлённые тексты | что изменил | что требует ручной проверки
Шаг 3: Проверка согласованности
После правки проверь согласованность документа.
Что изменилось: {список_изменений}
Карта зависимостей: {карта}
Проверь:
1. Все ли явные ссылки из изменённых разделов остаются корректными?
2. Не разъехалась ли терминология в зависимых разделах?
3. Не противоречат ли смысловые зависимости новой версии?
Выведи конкретный список проблем или подтверди согласованность.
Плейсхолдеры:
- {документ} — вставь весь текст
- {карта_из_шага_1} — результат первого шага
- {затронутые_разделы} — только те части, которые меняются + зависимые из карты
- {описание_правки} — что именно нужно изменить и зачем
- {список_изменений} — краткое описание что поменял на шаге 2
🚀 Быстрый старт — вставь в чат:
Вот шаблон для работы с длинными документами — карта зависимостей
и правка с проверкой согласованности. Адаптируй под мою задачу:
{твоя задача — например, «обновить оффер» или «отредактировать договор»}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит про структуру документа и характер правки — потому что карта зависимостей строится под конкретный тип документа (оффер, договор, инструкция, статья), и от этого зависит что считать «зависимостью».
Ограничения
⚠️ Структурная реорганизация: LEDGER показывает только 54% согласованности при перестановке разделов, переименовании или изменении иерархии. Это самый сложный сценарий — каскадный. В чате: если двигаешь блоки местами, карту придётся перестраивать заново.
⚠️ Требует ручного ведения карты: в отличие от системы LEDGER, ты обновляешь карту сам после каждой итерации. Для коротких документов (до 5-7 разделов) и разовых правок это избыточно.
⚠️ Карта устаревает: если вносишь последовательные правки без обновления карты, зависимости начинают врать. Лучший подход: пересоздавать карту раз в несколько итераций.
⚠️ Неявные смысловые зависимости: LLM находит явные ссылки хорошо, смысловые — хуже. В маркетинговых текстах, где логика строится на эмоциях и нарративе, часть связей останется неуловленной.
Ресурсы
LEDGER: Scaling Agentic Document Editing with Dependency-aware Graph Retrieval
Mike Hang Wang, Utkarsh Garg, Reza Davari, Huitian Jiao, Hao Cheng, Baolin Peng, Si-Qing Chen, Tao Ge
Microsoft Research
Связанные направления: ChatGPT Canvas, Agent Mode in Word (Microsoft)
