TL;DR
Stop-RAG — метод адаптивного контроля остановок в итеративных системах поиска с генерацией (RAG). Вместо фиксированного числа итераций или оценки "достаточно ли информации сейчас", метод использует forward-looking оценки: улучшится ли финальный ответ, если продолжить поиск. Система формализована как Марковский процесс принятия решений и обучает Q-сеть предсказывать ценность продолжения vs остановки на основе полных траекторий.
Главная находка: промптинг и внутренние сигналы уверенности модели плохо предсказывают нужность дополнительного поиска. Present-focused оценка (насколько хорош текущий ответ) вводит в заблуждение: даже если вся нужная информация собрана, много irrelevant документов дают низкую оценку и запускают лишний поиск, добавляя шум. Или наоборот — уверенный ответ на ранней стадии останавливает процесс, хотя продолжение явно улучшило бы полноту.
Метод решает это через Q(λ) обучение с полными траекториями: для каждого состояния (текущий набор информации) оценивается не только текущее качество ответа, но и все возможные будущие траектории — что будет, если остановиться сейчас vs продолжить. Это даёт forward-looking сигнал: "продолжение улучшит результат на X%". Система обучается на офлайн-датасете полных траекторий multi-hop вопросов.
Схема метода (для системы)
ОФЛАЙН (подготовка):
1. Собрать датасет → полные траектории (без ранних остановок)
2. Каждую траекторию → разбить на состояния (префиксы)
3. Для каждого состояния → оценить rewards обеих действий:
- STOP: качество ответа при остановке
- CONT: качество финального ответа при продолжении
4. Обучить Q-сеть → предсказывать Q(λ) targets
ОНЛАЙН (применение):
На каждом шаге RAG:
Q-сеть оценивает текущее состояние (вопрос + собранные документы)
→ Сравнивает Q(STOP) vs Q(CONT)
→ Если Q(STOP) - Q(CONT) > threshold → остановка
→ Иначе → ещё один раунд retrieval
Критически важно: Метод требует ML-инфраструктуру (обучение нейросети, API retrieval). Прямое применение в чате ChatGPT/Claude невозможно.
Extractable принцип для ручного применения
Суть: При multi-step исследовании в чате не спрашивай модель "достаточно ли информации для ответа". Спрашивай "улучшится ли ответ, если продолжу исследование".
Это два разных вопроса с разными сигналами:
Present-focused (слабый сигнал):
- Фокус на текущем состоянии
- "Могу ли я ответить сейчас?"
- Игнорирует potential gains от продолжения
- Чувствителен к шуму (много документов → низкая уверенность → лишний поиск)
Forward-looking (сильный сигнал):
- Фокус на финальном результате
- "Станет ли ответ существенно лучше, если продолжу?"
- Взвешивает gains vs costs (время, irrelevant info)
- Устойчив к шуму (оценивает ценность БУДУЩЕЙ информации)
Пример применения
Задача: Маркетолог из Digital-агентства готовит питч для клиента из e-commerce. Нужен конкурентный анализ — кто основные игроки, какие стратегии используют. Собрал информацию о трёх компаниях (Wildberries, Ozon, Яндекс.Маркет), думает — продолжать или хватит?
Промпт (плохой — present-focused):
Контекст: Готовлю конкурентный анализ для питча.
Уже собрал:
- Wildberries: маркетплейс, агрессивная ценовая политика, собственная логистика
- Ozon: маркетплейс + экосистема сервисов, фокус на cross-sell
- Яндекс.Маркет: переход от агрегатора к маркетплейсу, интеграция с Яндекс-сервисами
Достаточно ли этой информации для качественного анализа?
Промпт (хороший — forward-looking):
Контекст: Готовлю конкурентный анализ для питча.
Уже собрал:
- Wildberries: маркетплейс, агрессивная ценовая политика, собственная логистика
- Ozon: маркетплейс + экосистема сервисов, фокус на cross-sell
- Яндекс.Маркет: переход от агрегатора к маркетплейсу, интеграция с Яндекс-сервисами
Оцени: если я продолжу исследование и добавлю ещё 2-3 игрока (например,
региональные маркетплейсы, зарубежные аналоги для сравнения), насколько
существенно улучшится финальный анализ?
Взвесь:
+ Какие инсайты/паттерны я могу упустить при текущем охвате
+ Сколько дополнительного времени потребуется
+ Риск добавить irrelevant информацию, которая размоет фокус
Дай рекомендацию: продолжать или достаточно?
Результат:
Модель проанализирует trade-off между:
- Marginal value дополнительных игроков
- Time cost на расширение scope
- Risk размыть core insights шумом
И даст обоснованную рекомендацию с явной логикой — не просто "достаточно/недостаточно", а "вот что ты получишь vs что потеряешь".
Почему это работает
Слабость LLM: При оценке "достаточно ли информации" модель фокусируется на текущем состоянии — может ли она ответить прямо сейчас. Это игнорирует два критических фактора:
- Diminishing returns: Первые N источников дают 80% ценности, следующие N — только 10%. Present-focused оценка не видит этой динамики.
- Noise accumulation: Больше документов ≠ лучше ответ. Irrelevant информация снижает уверенность модели в present-focused фрейме ("много противоречий, надо искать ещё"), хотя на самом деле дополнительный поиск только усилит шум.
Сильная сторона LLM: Модель хорошо экстраполирует последствия действий, если явно попросить. Она может оценить:
- Какие gaps остались в текущей информации
- Какова вероятность найти ценное в дополнительном поиске
- Какие риски добавления irrelevant контента
Как промпт использует сильную сторону: Forward-looking вопрос переключает фокус с "могу ли я ответить" на "стоит ли продолжать". Это активирует reasoning о:
- Expected value дополнительного поиска
- Opportunity cost времени
- Risk-benefit analysis
Модель начинает думать стратегически, не реактивно.
Шаблон промпта
Контекст: {твоя задача multi-step исследования}
Уже собрал:
{текущая информация — источники, факты, инсайты}
Оцени: если я продолжу исследование и {конкретное действие — добавлю N источников,
углублюсь в тему X, проверю альтернативную гипотезу}, насколько существенно
улучшится финальный результат?
Взвесь:
+ Какие критичные gaps/инсайты я могу упустить при текущем охвате
+ Сколько дополнительного времени/усилий потребуется
+ Риск добавить irrelevant информацию, которая размоет фокус
Дай рекомендацию: продолжать или достаточно? Обоснуй логику trade-off.
Заполнение плейсхолдеров:
{твоя задача}— что исследуешь и зачем{текущая информация}— что уже собрал, структурированно{конкретное действие}— что планируешь сделать на следующем шаге
Ключевые элементы:
- "насколько существенно" — запрос на magnitude, не бинарный ответ
- "Взвесь" — явная инструкция на trade-off analysis
- "Обоснуй логику" — запрос на reasoning, не просто вердикт
Ограничения
⚠️ Не для простых задач: Принцип избыточен для вопросов с одним чётким ответом ("столица Франции"). Работает только для multi-step исследований с accumulating evidence.
⚠️ Требует контекста: Модель должна видеть ВСЮ собранную информацию, чтобы оценить marginal value продолжения. В длинных исследованиях (15+ источников) может упереться в context window.
⚠️ Субъективность порога: Что считать "существенным улучшением" — зависит от задачи. В питче для инвестора порог выше (нужна полнота), в быстром research для блога — ниже (достаточно основных точек).
⚠️ Модель не видит будущее: Оценка "что я получу при продолжении" — это экстраполяция на основе паттернов, не знание конкретных источников. Может ошибиться в обе стороны.
Как исследовали
Исследователи взяли три multi-hop QA бенчмарка (MuSiQue, HotpotQA, 2WikiMultihopQA) — это датасеты, где для ответа нужно собрать факты из нескольких источников. Идея: запустить итеративный RAG на полную катушку (10 итераций без остановок), собрать все возможные траектории. Затем каждую траекторию разрезать на префиксы (состояния) и для каждого состояния оценить: что будет, если остановиться сейчас vs продолжить до конца.
Обучили Q-сеть (DeBERTa-v3-large) на Q(λ) targets — это RL-метод, который смешивает краткосрочные и долгосрочные оценки. Фишка в том, что targets строятся по полным траекториям, а не по одному шагу вперёд. Это даёт forward-looking сигнал: "если продолжишь ещё 3 шага, качество ответа вырастет с 0.6 до 0.85".
Сравнили три варианта:
- Raw — фиксированное число итераций (10)
- LLM-Stop — модель сама решает через промпт когда остановиться
- Stop-RAG — их метод с Q-сетью
Почему результаты получились именно такими:
На MuSiQue и 2WikiMultihopQA Stop-RAG выиграл у обоих baseline — это датасеты с контролируемым retrieval corpus (все нужные документы есть, но много шума). Здесь критично найти баланс: собрать достаточно фактов, но не утонуть в irrelevant документах. Forward-looking оценка помогла остановиться в оптимальной точке — чуть позже LLM-Stop (выше recall), но раньше Raw (меньше шума).
На HotpotQA Stop-RAG немного проиграл — это датасет с широким Wikipedia corpus, где recall критичнее precision. LLM-Stop останавливался слишком рано (средний шаг 7.6 vs 10), упуская нужные факты. Raw с полными 10 итерациями собирал больше evidence, и даже с шумом это давало лучший результат.
Удивительное: LLM-Stop в среднем останавливался слишком рано (5-7 шагов вместо 8-10 оптимальных). Модели переоценивают свою готовность ответить — видят частичный ответ и думают "достаточно", хотя продолжение улучшило бы полноту. Это подтверждает главный тезис: present-focused evaluation вводит в заблуждение.
Инсайт для практики: Промптинг "достаточно ли информации" даёт оптимистично искажённый сигнал — модель склонна останавливаться рано. Forward-looking фрейм ("улучшится ли ответ") корректирует этот bias.
Ресурсы
Stop-RAG: Value-Based Retrieval Control for Iterative RAG
Jaewan Park, Solbee Cho, Jay-Yoon Lee
Seoul National University
NeurIPS 2025 Workshop: Multi-Turn Interactions in Large Language Models
Код: https://github.com/chosolbee/Stop-RAG
