TL;DR
MDP — протокол работы с документами, который формализует как сырые, неструктурированные источники (веб-страницы, PDF, длинные тексты) превращаются в компактный, структурированный контекст, готовый для потребления LLM. Вместо типичного RAG-подхода «найди куски → вставь в контекст», MDP определяет три пути трансформации: агентное рассуждение (собирает разрозненные факты в связную историю), память-заземление (накапливает переиспользуемые заметки из прошлых поисков), структурированное кодирование (организует знания в графы, таблицы, формальные схемы).
Главная проблема: обычный RAG скармливает LLM хаос данных — длинные, шумные, несвязные фрагменты, где полезный сигнал размазан по огромному объему текста. Модель видит сотни кусков документов, но не может собрать целостную картину: пропускает связи между фактами, тонет в шуме форматирования и повторов, тратит контекстное окно на мусор. Исследователи называют это Data Chaos — состояние, когда критически важная информация запутана в массе нерелевантного текста, который LLM не может напрямую использовать.
Решение через MDP-Agent (конкретная реализация протокола): система сначала создаёт для каждого документа gist memory — краткую абстракцию темы и структуры без деталей (как человек запоминает суть книги, не пересказ). Потом итеративно расширяет покрытие через диффузию (новые поисковые запросы на основе уже найденного), отсекает 90% шума по gist-памяти без чтения полных текстов, обрабатывает оставшееся параллельно в map-reduce стиле, и синтезирует в структурированную цепочку знаний — последовательность связанных шагов рассуждения с подтверждающими фактами на каждом.
Схема метода MDP-Agent
ПОДГОТОВКА КОРПУСА (делается один раз):
ШАГ 1: Создать gist memory для каждого документа
→ Краткая LLM-абстракция: тема + структура, без деталей
ШАГ 2: Hybrid-индексация
→ Dense embeddings от gist (глобальная семантика)
→ Sparse index от полного текста (точные детали)
ПОИСК ЗНАНИЙ (для каждой задачи):
ШАГ 3: Сформулировать information intent
→ "Какая информация нужна для следующего шага?"
ШАГ 4: Декомпозиция на atomic queries
→ Разбить intent на несколько конкретных поисковых запросов
ШАГ 5: Diffusion search (расширение покрытия)
→ Выполнить запросы → Оценить: достаточно фактов?
→ Если НЕТ → Новые запросы на основе найденного → Повтор
ШАГ 6: Memory-guided filtering
→ Проверка релевантности по gist memory
→ Отсечь ~90% документов без чтения полного текста
ШАГ 7: Parallel synthesis (map-reduce)
→ MAP: Извлечь факты из каждого документа параллельно
→ REDUCE: Синтезировать в knowledge subspace K₁
ШАГ 8: Проверка достаточности K₁ для intent
→ Если ДА → Следующий intent I₂ → Шаги 3-8
→ Повторять до закрытия всех knowledge gaps
ШАГ 9: Построение knowledge chain
→ (Intent₁ → Knowledge₁) → (Intent₂ → Knowledge₂) → ...
→ Организовать в LLM-ready контекст для финального ответа
Система MDP-Agent требует код и API. Но принципы можно применять вручную.
Пример применения
⚠️ Ограничения метода: MDP-Agent как система требует программирование (Python, API, векторные базы). Но принципы работы с большими документами применимы в обычном чате. Пример ниже показывает ручное применение core-идей MDP.
Задача: Анализ годового отчета ПАО «Сбербанк» (200+ страниц PDF). Вопрос: «Какие новые направления бизнеса банк запустил в 2024 и какие показали наибольший рост выручки?»
Промпт (применяем принципы MDP вручную):
Задача: Найти новые направления бизнеса Сбербанка в 2024 и их выручку.
[прикрепляю годовой отчет PDF]
=== ШАГ 1: GIST MEMORY (абстракция без деталей) ===
Создай краткую структурную карту отчета:
- Основные разделы и их темы
- Где упоминаются новые продукты/направления
- Где данные по выручке сегментов
- Структура подачи финансовых показателей
НЕ извлекай конкретные цифры. Цель — понять ГДЕ что находится.
---
=== ШАГ 2: DIFFUSION SEARCH (расширение покрытия) ===
На основе gist-карты:
Intent 1: Найти описания новых бизнес-направлений 2024
→ Atomic query: Какие разделы описывают запуски 2024?
→ Извлечь список направлений
Оценка: Список полный? Если НЕТ:
→ Новый query: Есть ли упоминания новых продуктов в других разделах?
→ Расширить список
---
Intent 2: Найти финансовые показатели по новым направлениям
→ Atomic query: Где данные по выручке каждого направления?
→ Извлечь цифры
Оценка: Все направления покрыты? Если НЕТ:
→ Новый query: Проверить альтернативные источники данных в отчете
→ Дополнить цифры
---
=== ШАГ 3: SYNTHESIS (сборка знаний) ===
Построй knowledge chain:
(Intent 1 → Список направлений) → (Intent 2 → Цифры выручки) → Итоговый ответ
Формат ответа:
1. Направление | Выручка 2024 | Рост к 2023
2. ...
Топ-3 по росту выручки
Результат:
Модель проведёт вас через структурированный процесс:
- Сначала создаст gist-карту отчёта без погружения в детали — вы увидите где что находится
- Потом итеративно расширит поиск: найдёт упоминания новых направлений, проверит не пропущено ли что-то в других разделах, дополнит список
- Затем извлечёт финансовые данные по каждому направлению, снова проверит полноту
- В финале синтезирует в таблицу с рейтингом по росту выручки
Вы получите компактный, структурированный ответ вместо хаоса из кусков 200-страничного PDF.
Почему это работает
LLM плохо работают с data chaos — когда контекст забит длинными, шумными, несвязными фрагментами. Модель видит тысячи токенов, но сигнал размазан по огромному объёму: полезные 5 предложений утоплены в 50 страницах формата, врезок, повторов. Контекстное окно кончается раньше, чем модель находит все связи между фактами. Итог: пропущенные детали, поверхностный анализ, галлюцинации на пробелах.
MDP решает через трансформацию хаоса в порядок на трёх уровнях:
1. Gist memory отсекает шум глобально Вместо «запихни 200 страниц в контекст» модель сначала абстрагирует: «В разделе 3.2 — описание новых продуктов, в приложении Б — финансовые таблицы». Это как оглавление + тематическая карта. Дальше модель знает куда смотреть для каждого вопроса, не читая весь PDF заново. Рычаг: Можете сами задавать детализацию gist — «только темы разделов» для быстрой навигации или «темы + ключевые тезисы» для более информативной карты.
2. Diffusion search покрывает связи Один поисковый запрос часто неполон: формулировка задачи содержит bias, вы не знаете как именно данные структурированы в документе. Диффузия расширяет покрытие: первый запрос → находит 3 направления → модель генерирует второй запрос «а есть ли ещё упоминания в других частях?» → находит ещё 2 → проверяет третьим запросом. Принцип: Не останавливаться на первом результате, итеративно уточнять пока картина не станет полной. Рычаг: Контролируйте глубину через явные условия выхода: «расширяй пока не найдёшь хотя бы 5 примеров» или «останови после 3 итераций».
3. Parallel synthesis структурирует связи Вместо «вот 50 кусков текста, сам разбирайся» модель организует знания в цепочку: Intent₁ (что ищем) → Knowledge₁ (что нашли) → Intent₂ → Knowledge₂ → ... Каждый шаг опирается на предыдущий, логика явная, пробелы видны. Это как разница между кучей стикеров и mind map — те же факты, но связи делают их потребляемыми для рассуждения. Рычаг: Формат knowledge chain можно адаптировать — линейная цепочка для последовательных задач, древовидная для параллельных веток анализа.
В итоге: модель получает не сырые фрагменты, а готовый контекст — компактный, структурированный, где каждый факт привязан к своему шагу рассуждения. Энтропия контекста минимизирована, сигнал максимизирован.
Шаблон промпта
Задача: {описание_задачи}
[прикрепить документ/источник]
=== ШАГ 1: GIST MEMORY ===
Создай структурную карту документа:
- Основные разделы и темы
- Где находится информация по {ключевой_аспект_1}
- Где данные по {ключевой_аспект_2}
- Структура подачи {тип_данных}
НЕ извлекай детали. Цель — карта навигации.
---
=== ШАГ 2: KNOWLEDGE CHAIN ===
Intent 1: {первый_information_gap}
→ Atomic query: {конкретный_вопрос_1}
→ Извлечь {что_именно}
Оценка: {критерий_полноты}?
Если НЕТ:
→ Новый query: {уточняющий_вопрос}
→ Расширить результат
[Повторить для Intent 2, 3, ...]
---
=== ШАГ 3: SYNTHESIS ===
Построй цепочку знаний:
(Intent 1 → Knowledge 1) → (Intent 2 → Knowledge 2) → ... → Ответ
Формат итога: {желаемая_структура_ответа}
Пояснение плейсхолдеров:
{описание_задачи}— что нужно найти/проанализировать{ключевой_аспект_N}— основные информационные потребности (например, «новые продукты», «финансовые показатели»){тип_данных}— какой формат данных ожидается (таблицы, тексты, графики){первый_information_gap}— что нужно узнать на первом шаге{конкретный_вопрос_N}— atomic query для поиска{критерий_полноты}— как понять что нашли достаточно{желаемая_структура_ответа}— в каком виде нужен итог (список, таблица, эссе)
🚀 Быстрый старт — вставь в чат:
Вот шаблон MDP для работы с большими документами.
Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит:
- Какие ключевые аспекты тебя интересуют в документе?
- Как ты поймёшь что информации достаточно?
- В каком формате нужен итоговый ответ?
Она возьмёт трёхшаговую структуру (gist → chain → synthesis) и подставит детали твоей задачи.
Ограничения
⚠️ Требует код для автоматизации: Полная система MDP-Agent (diffusion search, parallel map-reduce, gist indexing) работает только через код и API. В обычном чате вы применяете принципы вручную — каждый шаг как отдельный промпт, итерации контролируете сами.
⚠️ Overhead на простых задачах: Если вопрос решается одним поисковым запросом («столица Франции»), трёхшаговая структура избыточна. MDP-паттерн для сложных, многошаговых задач с разрозненной информацией.
⚠️ Зависимость от качества gist: Если краткая абстракция документа пропустит важный раздел, дальнейший поиск пойдёт мимо. Критично для документов со сложной/нестандартной структурой. Решение: На шаге gist явно запросить «проверь не пропущены ли разделы по теме X».
⚠️ Ограничения контекста всё равно действуют: В чате вы не можете обработать 1000 документов параллельно, как MDP-Agent. Принципы (gist, diffusion, chain) работают, но масштаб ограничен контекстным окном модели.
Как исследовали
Команда проверяла на двух бенчмарках сложного information-seeking: GAIA (450+ реальных запросов требующих multi-step reasoning и инструменты) и WebWalkerQA (680 запросов где нужно обходить множество веб-страниц и собирать разрозненные факты). Сравнивали с тремя типами baseline:
- Прямое рассуждение без инструментов (GPT-4o, DeepSeek-R1, QwQ-32B)
- RAG-методы (vanilla RAG, с query planning, с итеративным refinement)
- Tool-integrated reasoning (ReAct, Search-o1, WebThinker)
MDP-Agent построили на QwQ-32B (центральный reasoning-агент) + Qwen3-7B (вспомогательный для параллельной обработки). Для каждого запроса система собирала top-20 веб-страниц, создавала gist memory, строила hybrid-индекс (BGE-M3 для dense embeddings + BM25 для sparse). Максимальная глубина diffusion search — 5 итераций.
Что удивило: MDP-Agent обошёл даже WebThinker-RL — систему натренированную in-domain на этих задачах через reinforcement learning. При том что MDP-Agent — zero-shot, без специфичной под задачу оптимизации. Почему? WebThinker делает sequential browsing (страница за страницей), а MDP-Agent через diffusion + parallel synthesis покрывает шире за меньшее число шагов и отсекает больше шума через gist-фильтрацию.
Ключевой инсайт из абляций: Diffusion search на глубину 5 даёт скачок качества (+12% accuracy), но дальше saturates — информация уже достаточна. При этом 90% страниц отсекается на этапе gist-фильтрации без чтения полного текста. Это показывает: проблема не в том что LLM не могут обработать много данных, а в том что не умеют фильтровать — gist memory решает именно это.
Токены: рассуждение центрального агента — 8.9K, обработка данных вспомогательным — 227K. В 25 раз больше уходит на data processing! Это валидирует архитектуру: тяжёлый reasoning делает сильная модель (QwQ), bulk-фильтрация и извлечение — лёгкая модель (Qwen3-7B) параллельно.
Оригинал из исследования
Контекст: Исследователи формализуют Data Chaos и объясняют почему RAG не работает на сложных задачах.
We refer to Data Chaos as the state in which essential knowledge is entangled within vast amounts of unstructured, redundant, and noisy data that an LLM cannot directly exploit. Suppose the universal knowledge space is denoted by S. In principle, one could hope to isolate a minimal but sufficient subset K* ⊂ S that contains exactly the information required for producing the answer Y and nothing more. Such a representation would be ideal, as it would minimize entropy and maximize the signal-to-noise ratio of the input context.
In practice, however, retrieval for complex tasks produces large volumes of raw text (e.g., hundreds of web pages or thousands of PDF documents) that remain far from this ideal. The data are dominated by formatting artifacts, boilerplate language, and irrelevant content, with useful knowledge sparsely embedded within. Feeding such raw collections into an LLM is both inefficient and ineffective: the context window is quickly saturated, and the high entropy of the input obscures the information truly relevant to the task. In this sense, retrieved data in their raw form are not LLM-ready, but rather exemplify the disorder of Data Chaos.
Контекст: Определение MDP — протокола трансформации документов.
Let D denote the raw document corpus, composed of unstructured data sources such as web pages, PDFs, and full-text records. A retrieval process based purely on keyword or embedding similarity yields a raw subset R ⊂ D that remains dominated by redundant and noisy information. MDP defines a multi-stage transformation function Φ, which converts the retrieved collection R into a structured knowledge representation _K_MDP that is directly consumable by the model Θ:
_K_MDP = Φ(R; Ψ)
where Ψ represents the protocol specification—a set of transformation pathways and policies that govern how evidence is selected, abstracted, and represented. Formally, Φ is decomposed into three complementary pathways:
Φ = Φ_agentic_ ◦ Φ_memory_ ◦ Φ_structured_
corresponding respectively to:
- Agentic Reasoning Pathway Φ_agentic_: performs iterative reasoning and evidence curation, assembling fragments from R into coherent task-relevant context.
- Memory Grounding Pathway Φ_memory_: accumulates persistent, reusable notes extracted from prior interactions or retrieved data, enriching Φ_agentic_ with historical knowledge.
- Structured Leveraging Pathway Φ_structured_: encodes curated knowledge into structured forms such as key–value caches, relational graphs, or symbolic schemas, enhancing interpretability and reusability.
Адаптации и экстраполяции
💡 Адаптация для анализа научных статей:
Когда читаете несколько статей для literature review, примените MDP-принципы:
Задача: Сравнить подходы к prompt optimization в 5 статьях.
[прикрепить 5 PDF]
=== GIST PHASE ===
Для каждой статьи создай card:
- Название метода
- Core idea (1 предложение)
- Что измеряли
- Главный результат
---
=== DIFFUSION PHASE ===
Intent 1: Какие общие паттерны в методах?
→ Query 1: Классифицируй методы по типу (gradient-based / discrete / hybrid)
→ Query 2: Есть ли методы которые не входят в эти категории?
Intent 2: Где методы противоречат друг другу?
→ Query: Найди конфликтующие выводы между статьями
---
=== SYNTHESIS ===
Построй таблицу сравнения:
Метод | Тип | Baseline | Результат | Ограничения
Затем: 2-3 абзаца про trends и gaps в литературе
🔧 Техника: Gist на уровне секций → быстрая навигация
Для очень длинных документов (500+ страниц) делайте двухуровневый gist:
Шаг 1: Топ-уровень gist
→ Темы глав (без деталей секций)
Шаг 2: Focused gist для релевантных глав
→ Детальная карта только нужных разделов
Это экономит контекст — не абстрагируете весь документ детально.
🔧 Техника: Явные критерии выхода из diffusion → контроль costs
В диффузии можно уйти в бесконечное расширение. Задавайте условия остановки:
Diffusion search с условием:
"Расширяй пока не найдёшь минимум N примеров
ИЛИ пока не выполнишь M итераций
ИЛИ пока новые запросы не начнут повторять уже найденное"
Это балансирует coverage vs efficiency.
Ресурсы
Model-Document Protocol for AI Search (Technical Report) Авторы: Hongjin Qian, Zheng Liu (BAAI — Beijing Academy of Artificial Intelligence)
Исследование показывает benchmark-результаты на GAIA (General AI Assistant) и WebWalkerQA. Сравнение с ReAct, Search-o1, WebThinker, vanilla RAG.
