TL;DR
MedRGAG — метод, который сначала суммирует имеющуюся информацию, затем определяет чего не хватает для ответа, и только потом генерирует недостающий контекст. В отличие от простого поиска (RAG) или простой генерации (GAG), здесь модель делает три последовательных шага внутри одной задачи.
Проблема классических подходов: поиск по базе знаний даёт неполную картину (нашлось 60% нужного, 40% отсутствует), а генерация "из головы" даёт галлюцинации (выдумывает факты). Когда просто смешиваешь найденное и сгенерированное — модель путается и даёт неправильный ответ, потому что не понимает какой источник надёжнее.
MedRGAG решает это через управляемую генерацию: модель сначала читает что нашлось, выделяет пробелы ("тут не хватает информации про X"), и генерирует только недостающие части. Затем выбирает лучшие фрагменты из найденного и сгенерированного. В медицинских тестах это дало +12.5% точности против обычного поиска и +4.5% против простой генерации.
Схема метода
ШАГ 1: Суммаризация
Для каждого найденного документа → извлечь полезное для вопроса
(фильтр шума, убрать нерелевантное)
ШАГ 2: Анализ пробелов
Прочитать все суммари → определить 2-3 ключевых пробела в знаниях
(что КРИТИЧНО для ответа, но отсутствует)
ШАГ 3: Генерация контекста
Для каждого пробела → сгенерировать справочный документ
(заполнить недостающее)
ШАГ 4: Селекция документов
Сгруппировать найденное + сгенерированное по темам → выбрать топ-5 источников
(баланс: факты из поиска + контекст из генерации)
ШАГ 5: Финальный ответ
Использовать отобранные 5 источников → дать ответ
Все шаги выполняются отдельными запросами. Каждый этап — новый промпт с результатами предыдущего.
Пример применения
Задача: Вы консультант и помогаете стартапу выбрать бизнес-модель для SaaS-продукта в b2b-сегменте. У вас есть несколько статей про монетизацию, но информация разрозненная.
Промпт:
У меня 3 статьи про монетизацию SaaS:
[Статья 1]: Freemium модель даёт высокую конверсию в платных сегментах...
[Статья 2]: Enterprise-продажи требуют длинного цикла сделки...
[Статья 3]: PLG-подход снижает CAC через вирусность...
ЗАДАЧА: Определить оптимальную стратегию монетизации для b2b-инструмента автоматизации отчётности (целевые клиенты — средний бизнес в России, 50-500 человек).
Выполни последовательно:
1. СУММАРИЗАЦИЯ: Для каждой статьи — выдели только релевантное для моего кейса (средний b2b, Россия). Если статья не содержит полезного — напиши "Нет полезной информации".
2. АНАЛИЗ ПРОБЕЛОВ: Прочитай все суммари. Определи 2-3 критичных пробела в знаниях — что нужно знать для выбора модели, но отсутствует в статьях?
3. ГЕНЕРАЦИЯ КОНТЕКСТА: Для каждого пробела создай короткую справку (3-4 предложения) с недостающей информацией.
4. СЕЛЕКЦИЯ: Из всех источников (3 статьи + справки) выбери топ-5 самых релевантных для решения. Объясни почему именно эти.
5. ФИНАЛЬНЫЙ ОТВЕТ: На основе отобранных источников дай рекомендацию по стратегии монетизации.
Результат:
Модель выдаст структурированный процесс:
- Шаг 1: Суммари каждой статьи с фокусом на средний b2b
- Шаг 2: Например, "Пробел 1: нет данных о платёжеспособности среднего бизнеса в РФ", "Пробел 2: не описаны риски freemium в b2b"
- Шаг 3: Короткие справки по каждому пробелу
- Шаг 4: Список выбранных источников с обоснованием
- Шаг 5: Финальная рекомендация с опорой на источники
Вы получите явную логику решения — видно откуда взята каждая мысль (статья или сгенерированная справка), и почему модель пришла к выводу.
Почему это работает
Слабость LLM: Модель не знает что именно она не знает. При прямом вопросе она либо выдумывает (галлюцинирует), либо игнорирует пробелы в знаниях и даёт поверхностный ответ.
Сильная сторона LLM: Модель отлично анализирует что есть и логически выводит чего не хватает, если её явно попросить это сделать. Также хорошо генерирует контекст по конкретному запросу ("напиши справку про X"), но плохо генерирует "в целом".
Как метод использует сильную сторону:
- Суммаризация фильтрует шум — вместо "вот 10 документов, разбирайся" модель сначала выделяет суть каждого. Это снижает cognitive load на финальном этапе.
- Явное определение пробелов переводит абстрактную задачу ("дай хороший ответ") в конкретную ("чего именно не хватает?"). Модель перестаёт выдумывать и честно говорит "не знаю про X".
- Целевая генерация создаёт контекст точечно ("справка про X"), а не вообще ("расскажи всё про тему"). Это резко снижает галлюцинации, потому что запрос узкий и проверяемый.
- Селекция не даёт модели утонуть в информации — она сама выбирает топ-5 источников, балансируя факты (из поиска) и логику (из генерации). Без этого шага модель может переоценить сгенерированный контекст (он выглядит связнее) или недооценить найденные факты (они фрагментарны).
Рычаги управления промптом:
- Число пробелов (2-3) → увеличь до 5 для сложных задач, уменьши до 1 для простых — контроль глубины анализа
- Число финальных источников (топ-5) → больше источников = больше контекста, но выше риск шума
- Формат генерации ("3-4 предложения") → задай объём справок под свою задачу
- Критерии селекции → добавь "приоритет фактам из поиска" или "приоритет свежим данным"
Шаблон промпта
У меня есть {источники_информации}.
ЗАДАЧА: {твоя_задача}.
Выполни последовательно:
1. СУММАРИЗАЦИЯ: Для каждого источника — выдели только релевантное для задачи. Если источник не содержит полезного — напиши "Нет полезной информации".
2. АНАЛИЗ ПРОБЕЛОВ: Прочитай все суммари. Определи 2-3 критичных пробела в знаниях — что нужно знать для решения, но отсутствует в источниках?
3. ГЕНЕРАЦИЯ КОНТЕКСТА: Для каждого пробела создай короткую справку (3-4 предложения) с недостающей информацией.
4. СЕЛЕКЦИЯ: Из всех материалов (исходные источники + справки) выбери топ-5 самых релевантных для решения. Объясни почему именно эти.
5. ФИНАЛЬНЫЙ ОТВЕТ: На основе отобранных источников дай решение задачи.
Подстановки:
{источники_информации}— документы, статьи, заметки, или "я провёл поиск и нашёл..."{твоя_задача}— конкретный вопрос или проблема
Если у вас НЕТ готовых источников:
Замени Шаг 1 на:
1. ПОИСК + СУММАРИЗАЦИЯ: Найди в своих знаниях релевантную информацию по теме. Раздели её на 3-4 тематических блока и суммаризуй каждый.
Модель использует внутренние знания как "псевдо-документы" и дальше работает по той же схеме.
Ограничения
⚠️ Число запросов: Метод требует 1 запрос на все шаги (можно в одном промпте) или 5 отдельных запросов (если хотите контролировать каждый этап). Для простых вопросов это избыточно — прямой ответ быстрее.
⚠️ Качество генерации: На Шаге 3 модель может сгенерировать неточные справки, если пробел выходит за рамки её знаний. В медицине это критично (дали неверный факт → неверный диагноз), в бизнесе — терпимо.
⚠️ Оверхед на простых задачах: Если вопрос простой ("столица Франции?"), 5-шаговый процесс вредит — модель может "найти" несуществующие пробелы и усложнить ответ.
⚠️ Субъективные критерии: Метод работает хуже, когда нужна оценка (креатив, стиль), а не факты. Модель не знает какой пробел критичнее: "не хватает данных о метрике X" vs "не хватает мнения эксперта Y".
Как исследовали
Команда взяла пять медицинских датасетов (экзамены врачей, вопросы из PubMed) — всего ~8 тысяч вопросов. Сравнили три подхода: RAG (поиск по медицинским учебникам + Wikipedia), GAG (генерация контекста "из головы" моделью), и MedRGAG (их метод).
Тестировали на трёх reader-моделях (Qwen2.5-7B, LLaMA-3.1-8B, Ministral-8B) — это модели, которые читают контекст и дают финальный ответ. Для генерации использовали LLaMA-3.1-8B, для вспомогательных шагов (суммаризация, анализ пробелов, селекция) — GPT-4o-mini.
Почему результаты такие:
В медицине документы часто фрагментарны — один говорит про симптомы, другой про лечение, третий про механизм болезни. RAG выдаёт все три, модель теряется в объёме. GAG генерирует связный текст, но выдумывает детали (например, неверную дозировку).
MedRGAG сначала читает что нашлось, понимает "тут про симптомы есть, а про механизм болезни — нет", генерирует именно механизм болезни, и потом выбирает: берёт фактические симптомы из поиска + сгенерированный механизм. Это даёт +12.5% точности против чистого RAG.
Самое интересное: когда убрали селекцию документов (Шаг 4) и просто смешали все 10 источников (5 найденных + 5 сгенерированных) — точность упала. Оказалось, модель-reader переоценивает сгенерированные документы (они выглядят связнее) и игнорирует найденные факты (они выглядят разрозненно). Селекция балансирует это — явно говорит "возьми 2 из поиска, 3 из генерации".
Почему метод работает лучше:
Классический RAG берёт топ-5 документов по схожести с вопросом. Но схожий ≠ полезный. Может найтись 5 документов про симптомы, а про лечение — ни одного. MedRGAG анализирует что нашлось и целенаправленно генерирует недостающее.
Классический GAG генерирует 5 документов "про вопрос вообще". Модель выдумывает детали, потому что не знает что именно нужно. MedRGAG сначала определяет пробелы ("нужна информация про X"), и только потом генерирует — это снижает галлюцинации.
Адаптации и экстраполяции
1. Упрощённая версия для одного запроса
Если не хочется делать 5 отдельных запросов, объедините всё в один промпт с явной структурой:
Задача: {твоя_задача}
Исходные материалы: {источники}
Выполни внутренним монологом (не показывай мне промежуточные шаги):
1. Суммаризуй каждый источник
2. Определи 2-3 пробела в знаниях
3. Сгенерируй справки по пробелам
4. Выбери топ-5 источников (исходные + справки)
В финальном ответе покажи:
- Какие источники использовал (укажи найденные vs сгенерированные)
- Ответ на задачу
Модель выполнит все шаги внутри, но покажет только результат. Минус: теряете контроль над каждым этапом.
2. Двухэтапная упрощённая версия
Для ситуаций, когда у вас вообще нет источников (работаете на чистых знаниях модели):
ШАГ 1:
Тема: {твоя_тема}
Найди в своих знаниях всю релевантную информацию. Раздели на 3-4 тематических блока. Для каждого блока — укажи ЧТО знаешь и чего НЕ хватает для полной картины.
ШАГ 2:
На основе пробелов из Шага 1 — создай недостающие справки. Используй блоки + справки для ответа на вопрос: {твой_вопрос}.
Это адаптация для случая, когда внешних документов нет, но нужна структура мышления.
3. Комбинация с Chain-of-Thought
Если задача требует не только знаний, но и логических шагов (например, диагностика проблемы):
Задача: {твоя_задача}
Материалы: {источники}
1. ЗНАНИЯ: Выполни MedRGAG (суммаризация → пробелы → генерация → селекция)
2. РАССУЖДЕНИЕ: На основе отобранных источников — пошаговое рассуждение:
- Что известно?
- Какие гипотезы?
- Как проверить?
- Финальный вывод
Покажи оба процесса отдельно.
Это позволяет разделить накопление знаний (MedRGAG) и логический вывод (CoT).
