3,583 papers
arXiv:2509.12811 83 16 сент. 2025 г. FREE

ConvergeWriter: данные сначала, структура потом

КЛЮЧЕВАЯ СУТЬ
Парадокс: Логично сначала план статьи, потом поиск материалов. Но это заставляет LLM выдумывать факты. ConvergeWriter позволяет создавать длинные аналитические статьи (15-20k слов) где каждое утверждение проверяемо по источнику — ни одного додуманного факта. Фишка: переворачивает процесс. Сначала собери все источники и раздели на тематические группы (кластеры). Только потом создай outline. Каждая секция пишется строго из документов своего кластера. Результат: 100% проверяемая статья без выдуманных фактов.
Адаптировать под запрос

TL;DR

ConvergeWriter — метод создания длинных статей на основе внешних источников (Wikipedia, корпоративные базы знаний). Суть: сначала собирается весь массив документов, затем он кластеризуется на группы, и только потом создаётся outline. Каждая секция статьи явно привязана к конкретному кластеру документов. Это противоположность обычному подходу, когда сначала придумывают структуру, а потом ищут под неё материалы.

Традиционный "top-down" подход создаёт mismatch между планом и реальными данными. LLM сначала генерирует outline ("напишу про AI в медицине, образовании, бизнесе"), потом ищет под него материалы. Проблема: в источниках может быть мало про образование и много про финансы — но outline уже создан. Результат: модель додумывает (hallucination) или пишет поверхностно. Второй сценарий: модель находит кучу материалов про квантовые компьютеры, но в outline такой секции нет — информация теряется.

Метод работает через "Retrieval-First for Knowledge, Clustering for Structure". Первый этап: двухраундовый поиск с расширением релевантности (базовые keywords → поиск → для каждого найденного документа генерируем новые keywords → углублённый поиск). Второй этап: кластеризация всех документов по смысловой близости через K-means. Третий этап: создание summary для каждого кластера. Четвёртый этап: генерация outline где каждая main section = один кластер. Пятый этап: написание каждой секции с retrieval только из соответствующего кластера. Это гарантирует, что каждое утверждение в статье traceable к источнику.


🔬

Схема метода

ЭТАП 1: Расширяющийся поиск (два раунда в одном чате или несколько промптов)
 Round 1: Базовые keywords → Поиск → Фильтрация релевантных
 Round 2: Для каждого документа → Генерация новых keywords → Углублённый поиск → Фильтрация
 → Итог: массив документов D*

ЭТАП 2: Кластеризация и summarization (один промпт)
 → Группировка документов по смысловой близости
 → Summary каждого документа
 → Summary каждого кластера
 → Итог: набор кластеров {C1, C2, ..., Ck} с описаниями

ЭТАП 3: Создание outline (один промпт)
 → LLM генерирует outline на основе cluster summaries
 → Правило: каждая main section соответствует одному кластеру
 → Итог: outline O

ЭТАП 4: Секционная генерация (отдельный промпт на каждую секцию)
 Для каждой секции:
 → Retrieval документов из соответствующего кластера
 → Reranking
 → Генерация контента секции
 → Introduction и Conclusion пишутся после основных секций
 → Финальная полировка всей статьи
 → Итог: готовая статья

🚀

Пример применения

Задача: Аналитик в российской компании должен написать обзорную статью про развитие рынка электромобилей в РФ. У него 30 отчётов от разных аналитиков, статьи из Коммерсанта, РБК, заявления Минпромторга. Нужна структурированная статья на 15-20 тысяч слов с чёткой трассировкой каждого утверждения к источникам.

Промпт (Round 1 — базовый поиск):

Задача: написать обзорную статью про рынок электромобилей в России.

Источники: [список 30 документов]

Шаг 1: Проанализируй все источники и определи какие из них релевантны теме "рынок электромобилей в РФ". 

Критерии релевантности:
- Содержит данные о продажах, производстве, инфраструктуре электромобилей в России
- Обсуждает политику государства, тренды, прогнозы
- Описывает игроков рынка, их стратегии

Выведи список релевантных документов с краткой аргументацией почему каждый релевантен.

Промпт (Round 2 — углублённый поиск):

У меня есть 18 релевантных документов про рынок электромобилей в РФ:
[список документов с краткими описаниями]

Для каждого документа предложи 2-3 новых поисковых запроса, которые помогут найти дополнительную информацию для углубления темы.

Например, если в документе упоминается "рост продаж на 40% в 2024", новые запросы могут быть: "статистика продаж электромобилей РФ 2024", "факторы роста рынка электромобилей Россия".

Сформулируй запросы так, чтобы найти:
- Подтверждающие данные
- Контекст и причины
- Детали по конкретным аспектам

Затем проведи поиск по этим запросам в оставшихся документах и отфильтруй релевантные.

Промпт (Кластеризация):

У меня 30 документов про рынок электромобилей в РФ.

Задача: Раздели их на тематические группы (кластеры) по смысловой близости.

Каждая группа должна:
- Объединять документы с похожими темами/аспектами
- Иметь чёткий фокус (не "разное")
- Быть достаточно крупной для полноценной секции статьи

Для каждой группы:
1. Название кластера (короткое, описательное)
2. Список документов в кластере
3. Краткое summary (3-4 предложения): какую тему покрывает кластер, какие ключевые утверждения/данные содержатся

Оптимальное количество кластеров: 4-6.

Промпт (Outline):

У меня 5 кластеров документов про рынок электромобилей в РФ:

Кластер 1 "Продажи и статистика": [summary]
Кластер 2 "Инфраструктура и зарядные станции": [summary]
Кластер 3 "Производители и модели": [summary]
Кластер 4 "Господдержка и законодательство": [summary]
Кластер 5 "Тренды и прогнозы": [summary]

Создай outline статьи "Обзор рынка электромобилей в России".

Требования:
- Каждая основная секция (кроме Introduction и Conclusion) должна соответствовать ОДНОМУ кластеру
- Последовательность секций должна быть логичной (от текущего состояния к будущему, от фактов к прогнозам)
- Используй Markdown формат
- Для каждой секции укажи в скобках соответствующий кластер: ## 2. Продажи и статистика [Кластер 1]

Промпт (Генерация секции):

Напиши секцию "Продажи и статистика" для статьи про рынок электромобилей в РФ.

Outline всей статьи:
[полный outline]

Документы кластера "Продажи и статистика":
[список документов из Кластера 1]

Требования:
- Используй ТОЛЬКО информацию из документов кластера
- Каждое утверждение должно иметь источник (укажи номер документа в квадратных скобках)
- Объём: 2000-3000 слов
- Включай конкретные цифры, даты, факты
- Логичная структура: от общего к частному

Если в документах недостаточно информации для какого-то аспекта — пропусти его, не додумывай.

Результат:

Модель выдаст структурированную статью где:

  • Round 1-2 поиска покажут какие документы релевантны и найдут дополнительные материалы через расширение keywords
  • Кластеризация разобьёт документы на 4-6 смысловых групп с чёткими темами
  • Outline будет логично структурирован и каждая секция привязана к кластеру
  • Каждая секция написана только на основе документов своего кластера с явными ссылками
  • Introduction и Conclusion создадутся после основных секций на основе всего контента

Вся статья 100% traceable — любое утверждение можно проверить по номеру источника. Нет hallucination, потому что LLM пишет строго в границах доступных данных.


🧠

Почему это работает

Слабость LLM: Модели склонны к hallucination когда создают план до того как увидели данные. Top-down подход ("сначала структура, потом поиск") заставляет LLM либо додумывать контент под outline, либо игнорировать найденную информацию которая не вписывается в план. Результат: фрагментированность, поверхностность, недостоверность.

Сильная сторона LLM: Модели отлично группируют информацию по смыслу и создают структуру на основе данных. Они видят паттерны, связи, могут организовать хаос в логичную иерархию. Это работает когда данные уже есть и задача — найти в них порядок.

Механика метода: Bottom-up подход использует сильную сторону (организация данных) и обходит слабость (план без данных). Сначала модель видит весь доступный массив знаний через расширяющийся поиск. Затем кластеризует его на группы — это показывает какие темы реально покрыты источниками. Outline создаётся строго на основе этих кластеров — это гарантирует, что каждая секция имеет надёжную базу. При генерации каждой секции модель работает только с документами из соответствующего кластера — это предотвращает drift и hallucination.

Рычаги управления:

  • Количество раундов retrieval (2 в оригинале) — увеличь до 3-4 для очень глубоких тем; уменьши до 1 для быстрого overview
  • Количество кластеров (4-6 оптимально) — больше кластеров = больше детализация, меньше = обобщённее статья
  • Depth of summarization — можно сделать два уровня summary: document → sub-cluster → main cluster для очень больших массивов
  • Retrieval strategy для секций — по умолчанию reranking, можно заменить на semantic similarity или keyword matching
  • Порядок секций — можно дать модели свободу переставить последовательность, или задать жёсткий порядок

📋

Шаблон промпта

Этап 1: Расширяющийся поиск

Задача: написать статью про {тема}.

Источники: {список_документов}

ШАГ 1 — Базовый поиск:
Определи какие документы релевантны теме "{тема}". 
Критерии релевантности: {критерии}.
Выведи список релевантных документов.

ШАГ 2 — Углублённый поиск:
Для каждого релевантного документа предложи 2-3 новых поисковых запроса для углубления темы.
Проведи поиск по этим запросам в оставшихся документах.
Выведи финальный список всех релевантных документов.

Этап 2: Кластеризация

У меня {N} документов про {тема}.

Раздели их на {K} тематических групп (кластеров) по смысловой близости.

Для каждого кластера выведи:
1. Название кластера
2. Список документов
3. Summary (3-4 предложения): какую тему покрывает кластер

Этап 3: Outline

У меня {K} кластеров документов про {тема}:

{список_кластеров_с_summary}

Создай outline статьи "{название_статьи}".

Требования:
- Каждая основная секция (кроме Introduction и Conclusion) = один кластер
- Markdown формат
- Для каждой секции укажи соответствующий кластер: ## 2. {название} [{Кластер N}]

Этап 4: Генерация секции

Напиши секцию "{название_секции}" для статьи про {тема}.

Outline всей статьи:
{outline}

Документы кластера "{название_кластера}":
{список_документов}

Требования:
- Используй ТОЛЬКО информацию из документов кластера
- Каждое утверждение должно иметь источник [номер документа]
- Объём: {объём} слов
- Если данных недостаточно — пропусти аспект, не додумывай

Плейсхолдеры:

  • {тема} — тема статьи
  • {список_документов} — ваши источники
  • {критерии} — критерии релевантности для вашей темы
  • {N} — количество документов
  • {K} — желаемое количество кластеров (4-6 оптимально)
  • {название_статьи} — название итоговой статьи
  • {список_кластеров_с_summary} — результат этапа 2
  • {outline} — результат этапа 3
  • {название_секции} / {название_кластера} — конкретная секция
  • {объём} — желаемый объём секции

⚠️

Ограничения

⚠️ Многошаговость: Метод требует минимум 4 отдельных промпта (retrieval → clustering → outline → generation) плюс по одному промпту на каждую секцию статьи. Для статьи с 6 секциями это ~10 промптов. Быстро не получится.

⚠️ Размер knowledge base: Работает лучше всего когда источников много (20+). С малым количеством документов (<10) кластеризация теряет смысл — проще просто прочитать всё.

⚠️ Не для креативных задач: Метод оптимизирован для фактической точности, не для творческого письма. Если нужна яркая, живая статья с метафорами и стилем — этот подход будет слишком "сухим" и академичным.

⚠️ Качество кластеризации зависит от LLM: В исследовании использовали K-means на embeddings. В чате LLM делает кластеризацию "на глаз" — результат может быть менее точным, особенно если документы разнородные.


🔍

Как исследовали

Команда проверила метод на датасете WildSeek — это реальные пользовательские запросы к STORM (популярной системе генерации статей). Тестировали на темах которые люди действительно хотели изучить, не на синтетических примерах. Единственный источник знаний — Wikipedia API. Это важно: закрытая knowledge base, проверяется может ли метод работать строго в её границах.

Сравнивали с четырьмя baseline: наивный RAG (поиск → генерация одним запросом), двухэтапный RAG (outline → секционная генерация), STORM (симуляция диалогов для сбора знаний), OmniThink (динамическое расширение через "information tree"). Все baseline работали в режиме top-down — сначала план, потом поиск.

Тестировали на двух моделях: Qwen3-14B (базовые reasoning) и Qwen3-32B (с Deep Thinking Mode). Это показывает работает ли метод на разных масштабах и уровнях рассуждений. Ограничение контекста — 24K токенов для всех.

Ключевая метрика — Document Coverage: какой процент параграфов статьи реально подтверждён источниками. Для каждого параграфа LLM искала два самых похожих документа из knowledge base и проверяла: есть ли support или нет. Это прямо измеряет hallucination — если coverage 80%, значит 20% контента взято "из головы" модели.

Результаты удивили: ConvergeWriter показал coverage 80.14% на 14B модели против 53.88% у лучшего baseline (OmniThink). Разница огромная — почти на треть меньше hallucination. При этом по качеству оценок (relevance, breadth, depth, novelty) ConvergeWriter тоже выиграл. Особенно сильно по Novelty (4.22 vs 3.35) — это показывает, что кластеризация помогает найти неочевидные связи между документами.

Интересная находка: В ablation study убрали clustering — просто разделили документы на 5 равных частей. Результат: Novelty обвалилась с 4.58 до 3.60. Это доказывает, что именно смысловая группировка даёт value, не просто "разделить документы". Без кластеризации статья превращается в механическую конкатенацию кусков, теряется логика.

Вывод исследования: Bottom-up подход работает на любых моделях (14B, 32B), в любых режимах (standard, deep thinking). Преимущество стабильное — это означает ценность в самой идее "данные → структура", не в тонкостях реализации.


📋 Дайджест исследования

Ключевая суть

Парадокс: Логично сначала план статьи, потом поиск материалов. Но это заставляет LLM выдумывать факты. ConvergeWriter позволяет создавать длинные аналитические статьи (15-20k слов) где каждое утверждение проверяемо по источнику — ни одного додуманного факта. Фишка: переворачивает процесс. Сначала собери все источники и раздели на тематические группы (кластеры). Только потом создай outline. Каждая секция пишется строго из документов своего кластера. Результат: 100% проверяемая статья без выдуманных фактов.

Принцип работы

Стандартный подход (сверху вниз): План → Поиск → Написание. Проблема: модель придумала структуру про AI в медицине, образовании, бизнесе. А в источниках мало про образование и много про финансы. Результат: либо выдумывает под план, либо игнорирует найденное. ConvergeWriter (снизу вверх): Сначала все данные, потом структура под них. Двухраундовый поиск с расширением ключевых слов → группировка документов по темам → outline на основе групп → генерация секций только из соответствующих документов. Модель видит весь массив знаний ДО создания плана.

Почему работает

LLM отлично группирует информацию по смыслу. Но плывёт когда создаёт план до того как увидела данные. Стандартный подход заставляет модель додумывать контент под outline. Или игнорировать информацию которая не вписывается в готовую структуру. Снизу вверх использует сильную сторону: модель сначала видит весь массив источников, делит на тематические группы — это показывает какие темы РЕАЛЬНО покрыты данными. Outline создаётся строго на основе этих групп. При генерации секции модель работает только с документами из своего кластера — предотвращает съезжание с темы и выдумывание фактов.

Когда применять

Аналитические обзоры и research-based статьи → конкретно для задач где нужна полная проверяемость (корпоративные отчёты, научные обзоры, экспертные материалы с десятками источников), особенно когда источников 20+ и важна фактическая точность. НЕ подходит для креативных статей и opinion pieces — метод даёт академичный сухой стиль.

Мини-рецепт

1. Расширяющийся поиск: Базовые ключевые слова → поиск релевантных документов → для каждого найденного генерируй 2-3 новых ключевых слова → углублённый поиск. Итог: массив всех релевантных источников.

2. Разбивка на кластеры: Раздели документы на 4-6 тематических групп по смысловой близости. Для каждого кластера: название, список документов, краткое описание темы (3-4 предложения).

3. Outline на основе кластеров: Создай структуру статьи где каждая основная секция соответствует одному кластеру. Формат: <секция>## 2. Продажи и статистика [Кластер 1]

4. Генерация по кластерам: Для каждой секции делай поиск только из документов соответствующего кластера → пиши с явными ссылками на источники [номер документа]. Правило: если данных недостаточно — пропусти аспект, не додумывай. Introduction и Conclusion создавай после основных секций на основе всего контента.

Примеры

[ПЛОХО] : Напиши обзор рынка электромобилей в России на основе этих 30 источников
[ХОРОШО] : Этап 1 — Кластеризация: У меня 30 документов про рынок электромобилей в РФ. Раздели на 5 кластеров по смысловой близости. Для каждого: название, список документов, summary темы (3-4 предложения). Этап 2 — Outline: Создай структуру обзора где каждая секция = один кластер. Формат: ## 2. Продажи [Кластер 1] Этап 3 — Секция: Напиши секцию "Продажи" используя ТОЛЬКО документы Кластера 1. Каждое утверждение с источником [номер документа]. Если данных мало — пропусти, не выдумывай.
Источник: ConvergeWriter: Data-Driven Bottom-Up Article Construction
ArXiv ID: 2509.12811 | Сгенерировано: 2026-01-12 01:30

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с