TL;DR
MAPS — схема работы поискового агента (RAG: модель ищет в базе знаний и отвечает по найденному). На каждом шаге агент сначала намечает несколько разных направлений поиска, потом пишет по запросу на каждое. После шага он стирает историю прошлых запросов и рассуждений. В памяти остаются только найденные факты и короткая сводка «что мы поняли».
Главная находка: каждый следующий поисковый запрос тянется в ту же сторону, что и предыдущие. Агент не замечает, что ушёл от исходного вопроса, и сам себя не поправляет. Авторы измерили это на запросах агента: чем глубже поиск, тем сильнее новый запрос повторяет накопленный курс. Если первые два запроса ушли вбок, третий уйдёт ещё дальше. Итог: цепочка похожих запросов, повторы и неполные ответы.
Метод ломает инерцию двумя ходами. Первый — параллельные направления: сначала список разных углов поиска, потом запросы по ним. Второй — забывание: в следующий раунд идут факты и сводка, а не прежние запросы. Без любого из ходов качество заметно падает.
Схема метода
СОСТОЯНИЕ (всё, что агент помнит между раундами):
• исходный вопрос q0
• найденные факты O (накопленные)
• сжатая сводка рассуждений r̃ (БЕЗ списка прошлых запросов)
КАЖДЫЙ РАУНД (до 10 раз или пока фактов не хватит):
ШАГ 1: Предложить N разных направлений поиска → список направлений
ШАГ 2: По каждому направлению написать свой запрос → N запросов
ШАГ 3: Выполнить все запросы независимо (топ-5 документов каждый)
ШАГ 4: Свести найденное → обновить факты O и сводку r̃
История прошлых запросов и рассуждений ВЫБРАСЫВАЕТСЯ
ФИНАЛ: ответ по q0 + факты O + сводка r̃
В исследовании это три роли одной модели: предлагающая направления, пишущая запросы и сводящая результаты.
Пример применения
Задача: Предприниматель решает, открывать ли пункт выдачи Wildberries в Казани. Нужно собрать условия партнёрства, экономику точки, конкуренцию в районе и налоговый режим. Данные лежат в разных местах и зависят друг от друга. Обычный агент нащупает «условия WB» и три раза подряд поищет то же самое другими словами.
Промпт:
Ты — исследовательский агент с доступом к веб-поиску.
Исходный вопрос: «Стоит ли открывать пункт выдачи Wildberries в Казани
в 2025 году при бюджете 1,5 млн рублей?»
Работай раундами (максимум 6). Между раундами помни ТОЛЬКО:
<Факты> — найденные факты с источниками
<Сводка> — 3–5 строк: что уже ясно и чего не хватает
НЕ пересказывай и не опирайся на свои прошлые запросы.
В каждом раунде:
1. <Направления> — предложи 3 РАЗНЫХ направления поиска, которые
закрывают то, чего не хватает по <Сводке>.
2. <Запросы> — по каждому направлению напиши один запрос.
3. Выполни все запросы.
4. <Свод> — объедини найденное, обнови <Факты> и <Сводка>.
Остановись, когда <Факты> достаточно для ответа.
Финал: рекомендация «открывать / не открывать» с расчётом
и списком непроверенных допущений.
Результат: Модель выдаст несколько раундов. В каждом будет список из трёх разных направлений (например, экономика точки, конкуренция, налоги), запросы по ним, а затем обновлённые «Факты» и «Сводка». В финале придёт рекомендация с опорой на собранные факты и список того, что не удалось подтвердить.
Почему это работает
Слабость: модель продолжает то, что уже написано в контексте. Прошлые запросы лежат перед глазами, и новый запрос подстраивается под них. Рефлексия («а не ушёл ли я в сторону?») по данным авторов инерцию не гасит. Ошибка раннего шага накапливается.
Сильная сторона: модель хорошо сводит найденное в факты и хорошо придумывает разные углы, если её об этом прямо попросить. Когда в контексте нет цепочки прошлых запросов, а есть только факты и сводка, у модели нет курса, которому нужно следовать. Она смотрит на исходный вопрос и на то, чего не хватает.
Как метод это использует: забывание убирает источник инерции. Параллельные направления страхуют от неверной ставки. Если одно направление пустое, остальные закрывают дыру. Параллельные запросы сами по себе не спасают: конкурент ParallelSearch тоже пишет несколько запросов, но проигрывает. Помогает именно сочетание «разные направления + чистый контекст».
Рычаги управления: - Число направлений N → больше для широких вопросов, меньше (2) для простых, экономия токенов и времени. - Лимит раундов → в исследовании 10. Для рабочих задач 4–6 обычно хватает. - Что хранится в «Сводке» → если не ограничить, она превратится в скрытую историю запросов. Держи её короткой и без формулировок прошлых запросов. - Условие остановки → «фактов достаточно для ответа». Можно заменить на «закрыты все пункты чек-листа».
Шаблон промпта
Важно: в доступном тексте статьи готовых промптов нет, там только формулы и описание ролей. Шаблон ниже собран по структуре метода (состояние, три роли, забывание, условие остановки) и записан как инструкция агенту.
Ты — исследовательский агент с доступом к поиску.
Твоя задача — ответить на исходный вопрос, опираясь на найденные факты.
{исходный_вопрос}
Между раундами хранится ТОЛЬКО:
— найденные факты с источниками (накапливаются)
— краткая сводка: что ясно, чего не хватает ({строк} строк)
ЗАПРЕЩЕНО хранить, пересказывать или опираться на формулировки
прошлых запросов и прошлых рассуждений.
По и предложи {N} РАЗНЫХ
дополняющих направлений поиска. Направления не должны пересекаться.
Выведи список направлений.
Для каждого направления напиши один поисковый запрос,
исходя из исходного вопроса и направления.
Выполни все запросы независимо друг от друга.
Сведи результаты по всем направлениям:
— добавь новые факты в ;
— перепиши ;
— выброси историю запросов.
Остановись, если достаточно для ответа
или достигнут максимум раундов.
Ответь на {исходный_вопрос} по и .
Отметь, что не удалось подтвердить.
Что подставлять: {исходный_вопрос} — вопрос, где данные разбросаны по разным источникам. {N} — 3 для старта. {число_раундов} — 4–6. {строк} — 3–5.
🚀 Быстрый старт — вставь в чат:
Вот шаблон MAPS (поиск с параллельными направлениями и забыванием
истории запросов). Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, какой у тебя исходный вопрос, какие инструменты поиска доступны и насколько глубоким должен быть ответ. Это нужно, чтобы выбрать число направлений и раундов и сформулировать условие остановки. Паттерн она возьмёт из шаблона.
Ограничения
⚠️ Нужен контроль над контекстом: метод работает за счёт того, что история запросов исчезает из контекста. В обычном чате вся переписка остаётся перед глазами модели, поэтому запрет «не опирайся на прошлые запросы» только ослабляет эффект и не гарантирует его. Нужен агент, который сам решает, что передавать в следующий раунд, либо ручной перенос «Фактов» и «Сводки» в новый чат.
⚠️ Оригинал — код, а не промпт: авторы реализовали метод как программный конвейер: свой поисковый индекс, векторный поиск, три вызова модели на раунд. Перенос в инструкцию агенту — наша трактовка, в статье её нет.
⚠️ Проверено на узком классе задач: вопросы с ответом в Википедии и научные вопросы, оценка по совпадению с эталонным ответом. Деловые исследования с неоднозначными источниками и мнениями не проверялись.
⚠️ Только две модели одного семейства (Qwen): на ChatGPT, Claude и Gemini результат не проверялся.
⚠️ Цена: несколько запросов за раунд — это больше токенов и времени. Для простых фактологических вопросов (одна нужная страница) метод избыточен. Разница на однопереходных датасетах заметно меньше.
⚠️ Измерение инерции требует эмбеддингов: сам анализ «поискового импульса» читатель повторить не сможет. Практичен только вывод.
Как исследовали
Сначала авторы разобрались, почему поисковые агенты буксуют. Они взяли траектории Search-o1 (агент, который по ходу рассуждения пишет запросы в поиск) и посмотрели, как смещаются запросы шаг за шагом. По смыслу запросов (в виде векторов) они посчитали накопленное смещение, то есть «импульс» поиска. Затем проверили, совпадает ли направление этого импульса с тем, куда уйдёт следующий запрос. Совпадение росло с каждым шагом: на трёх датасетах многошаговых вопросов оно выросло примерно с 0,3–0,4 на первом шаге до 0,7–0,8 на четвёртом. Это и есть инерция: агент не выходит из колеи, а углубляется в неё.
Затем исследователи собрали MAPS и сравнили с шестью конкурентами: обычной моделью без поиска, обычным RAG, Self-RAG, IRCoT, Search-o1, S3 и ParallelSearch. Тестировали на шести наборах вопросов: два простых, три многошаговых и один научный (GPQA). Моделей две: Qwen3-32B и Qwen3.6-35B-A3B. Поиск шёл по Википедии, лимит 10 раундов, метрика — вхождение эталонного ответа в ответ модели.
Результат: в среднем 56,0 против 49,2 у ParallelSearch и 43,9 у Search-o1 на первой модели; 63,1 против 57,3 и 54,3 на второй. Больше всего MAPS выигрывает на многошаговых вопросах.
Ещё полезнее абляции, то есть эксперименты «отключи компонент и посмотри». Без параллельных направлений среднее падало с 56,1 до 49,8. Без забывания истории — до 50,1. Без шага «сначала направления, потом запросы» — до 51,9. Особенно сильно просела научная часть: на Qwen3-32B с 62 до 45–46. Вывод для практики: важны оба хода сразу. Удивляет, что ParallelSearch, уже умевший писать несколько запросов, всё равно проигрывает. Широта сама по себе не лечит инерцию, нужно ещё чистить контекст.
Адаптации и экстраполяции
🔧 Техника: перенос состояния в новый чат → ручное «забывание»
Раз в 2–3 раунда попроси: «Выведи только блоки <Факты> и <Сводка>». Скопируй их в новый чат и продолжи с них. Старые запросы и рассуждения остаются в прошлом чате. Так в обычном чате получается тот самый «сброс истории», который в статье делает программа.
🔧 Техника: условие остановки по чек-листу → контроль полноты
Вместо «фактов достаточно» задай список обязательных пунктов (экономика, конкуренция, налоги, риски). Раунд заканчивается, когда по каждому пункту есть факт с источником. Это защищает от раннего «хватит».
Экстраполяция: направления + проверка гипотез. Это моя комбинация, в статье её нет. В шаге направлений требуй, чтобы одно из N направлений было опровергающим («найти данные, которые противоречат текущей версии»):
Предложи 3 направления поиска. Одно из них обязано искать свидетельства ПРОТИВ текущей версии в <Сводка>.Идея: если инерция тянет агента подтверждать то, что он уже нашёл, обязательное «против» ломает колею ещё сильнее. Пока это догадка, проверь на своей задаче.
Ресурсы
- Работа: MAPS: Macro-Adaptive Parallel Reasoning for Regulating Search Momentum in Retrieval-Augmented Generation (arXiv, препринт)
- Код: https://github.com/NEUIR/MAPS
- Авторы: Xinze Li, Dingwen Zhang, Zhenghao Liu, Yukun Yan, Shuo Wang, Yu Gu, Ge Yu, Maosong Sun
- Университеты: Northeastern University (Шэньян, Китай); Tsinghua University (Пекин, Китай)
- Связанные работы: Search-o1 (Li et al., 2025), ParallelSearch (Zhao et al., 2025), IRCoT (Trivedi et al., 2023)
