3,583 papers
arXiv:2509.18167 86 17 сент. 2025 г. FREE

SIRAG: двухагентная RAG-система с процессным контролем качества

КЛЮЧЕВАЯ СУТЬ
RAG работает как два отдела в компании что не общаются: поиск выдал 10 документов (5 релевантных, 3 повторы, 2 мусор), генератор пытается из каши варить ответ. SIRAG позволяет контролировать качество на каждом шаге поиска — вместо 'найди всё и ответь' делает явные решения: 'достаточно информации? какие документы взять?'. Фишка: между поиском и генерацией два лёгких агента-координатора. Decision Maker решает продолжать поиск или стоп. Knowledge Selector чистит результаты — 'эти 3 релевантны, остальное выброс'. Плюс LLM-Judge оценивает каждый шаг.
Адаптировать под запрос

TL;DR

SIRAG — метод, который вставляет между поиском и генерацией ответа двух лёгких агентов-координаторов. Decision Maker решает когда продолжить поиск, когда остановиться. Knowledge Selector фильтрует найденные документы, оставляя только полезные. Вместо одного большого запроса "найди → ответь" — пошаговый процесс с явными решениями на каждом шаге.

Проблема стандартного RAG: Поисковик и генератор работают независимо — как два отдела в компании, которые не общаются. Поиск выдаёт 10 документов (5 релевантных, 3 повторяют друг друга, 2 вообще не в тему), а генератор пытается из этой каши сварить ответ. Или наоборот — нашёл мало, но генератор уже побежал отвечать. Нет координации, нет контроля качества на промежуточных шагах.

Как SIRAG это чинит: Добавляет два промежуточных фильтра. Первый агент (DM) после каждого поиска решает: "достаточно материала или искать ещё?". Второй агент (KS) чистит результаты: "эти 3 документа релевантны, остальные мусор". Плюс используют LLM-as-Judge — сильную модель, которая оценивает каждое промежуточное действие (хороший ли запрос? полезные ли документы?), а не только финальный ответ. Так система понимает ЧТО именно пошло не так, а не просто "ответ неправильный".


🔬

Схема метода

INPUT: вопрос пользователя

ЦИКЛ (макс 5 раундов):
 ШАГ 1 [Decision Maker]: Решить действие
 → Retrieve(новый_запрос) — сделать поиск
 → Stop & Generate — хватит, генерируй ответ
 
 ЕСЛИ Retrieve:
 ШАГ 2 [Retriever]: Найти документы по запросу
 
 ШАГ 3 [Knowledge Selector]: Отфильтровать документы
 → Вход: вопрос + найденные документы + текущий контекст
 → Выход: подмножество релевантных документов
 
 ШАГ 4 [LLM-Judge]: Оценить качество шага (0-1)
 → Хороший ли запрос?
 → Полезны ли отобранные документы?
 
 Добавить отобранные документы в копилку
 
 ЕСЛИ Stop & Generate:
 ВЫХОД из цикла

ФИНАЛ: Генератор создаёт ответ из накопленных документов

Обучение: Агенты тренируются через PPO (reinforcement learning) с наградами от LLM-Judge + правильность финального ответа.


🚀

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

Задача: Нужно найти информацию о том, какие новые законы по маркетплейсам приняли в России в 2024 году. Обычный RAG выдаст кашу из старых и новых законов, новостей, комментариев — и будет пытаться из всего этого собрать ответ.

С двухагентной схемой (вручную в чате):

Промпт 1 — Decision Maker:

Вопрос: Какие новые законы по маркетплейсам приняли в России в 2024 году?

Текущий контекст: [пусто]

Выбери действие:
1. RETRIEVE: сформулируй новый поисковый запрос
2. STOP: если достаточно информации для ответа

Ответ в формате:
Действие: [RETRIEVE/STOP]
Обоснование: [почему]
Запрос: [если RETRIEVE]

Промпт 2 — Knowledge Selector (после получения результатов поиска):

Вопрос: Какие новые законы по маркетплейсам приняли в России в 2024 году?

Найденные документы:
1. [Закон о защите прав потребителей на маркетплейсах, июль 2024]
2. [Статья РБК про проблемы Wildberries]
3. [Изменения в налогообложении для продавцов, январь 2024]
4. [Обсуждение законопроекта в Госдуме, декабрь 2023]
5. [Новые требования к маркетплейсам от Роскомнадзора, август 2024]

Какие документы ДЕЙСТВИТЕЛЬНО релевантны для ответа?
Отбери только те, что содержат конкретные законы принятые в 2024.

Формат ответа:
Релевантные документы: [номера]
Обоснование для каждого: [почему взяли/отбросили]

Промпт 3 — LLM-as-Judge (оценка качества шага):

Оцени качество действий:

Запрос: "законы маркетплейсы 2024 Россия"
Отобранные документы: #1, #3, #5

Критерии:
- Запрос точный и найдёт нужное?
- Отобранные документы релевантны вопросу?
- Есть ли среди отброшенных что-то важное?

Оценка: [0-1]
Что можно улучшить:

Результат: Через 2-3 итерации (поиск → фильтрация → оценка) модель соберёт именно релевантные документы о конкретных законах 2024 года, отбросив новости, обсуждения и старые законы. В финале генератор получит чистый набор документов и выдаст точный структурированный ответ.


🧠

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

Слабость обычного RAG: Модель видит все найденные документы скопом и пытается из них что-то слепить. Если среди 10 документов 3 релевантных, 4 частично релевантных и 3 мусорных — модель размазывает внимание по всем. Плюс нет механизма "стоп, нужно больше информации" или "эти документы не годятся, поищем иначе".

Сильная сторона LLM: Модели отлично умеют рассуждать пошагово и оценивать качество. Если спросить "эти документы полезны для ответа на вопрос?" — модель даст точную оценку. Если дать роль судьи — будет судить объективно.

Как SIRAG использует это:

  1. Разделяет большую задачу на микрозадачи — вместо "найди и ответь" делает "решить нужен ли поиск → отфильтровать документы → оценить качество → решить повторить или ответить". LLM отлично работает с такими атомарными задачами.
  2. Добавляет петлю обратной связи — LLM-Judge оценивает каждый шаг и даёт сигнал "это действие было полезным". Так система учится не повторять ошибки (если Judge поставил 0.2 — значит запрос был плохой).
  3. Использует специализацию — один агент думает про стратегию поиска (продолжать/остановиться), другой про качество документов (что взять/что выбросить). Как два эксперта с разной экспертизой, а не один универсал.

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

  • Максимальное число раундов (в статье 5) → уменьши до 2-3 для простых вопросов, экономия запросов
  • Критерии для LLM-Judge → добавь свои (например, "документ не старше года")
  • Условие Stop → вместо "достаточно документов" можно "достигнута уверенность 0.8"
  • Роли агентов → вместо безликих DM/KS дай конкретные роли: "придирчивый редактор" и "опытный исследователь"

📋

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

📋

Промпт 1: Decision Maker (Координатор поиска)

Ты — координатор исследования. Твоя задача: решить, нужен ли ещё поиск или достаточно информации для ответа.

Вопрос: {вопрос_пользователя}

Текущий контекст:
{список_собранных_документов}

Раундов поиска выполнено: {число_раундов} / 5

Выбери действие:
1. RETRIEVE — сформулируй новый поисковый запрос (если информации недостаточно)
2. STOP — если накоплено достаточно для полного ответа

Формат ответа:
Действие: [RETRIEVE/STOP]
Обоснование: [почему принял это решение]
Запрос: [если выбрал RETRIEVE — сформулируй точный запрос]

Подставь:

  • {вопрос_пользователя} — исходный вопрос
  • {список_собранных_документов} — что уже найдено (или "пусто" в начале)
  • {число_раундов} — счётчик итераций

📋

Промпт 2: Knowledge Selector (Фильтр документов)

Ты — эксперт по отбору релевантных документов.

Вопрос: {вопрос_пользователя}

Найденные документы:
{список_документов_с_номерами}

Текущий контекст (что уже собрано):
{список_ранее_отобранных}

Задача: отбери ТОЛЬКО те документы, которые:
- Напрямую отвечают на вопрос
- Не дублируют уже собранные
- Содержат конкретные факты/данные

Формат ответа:
Отобранные документы: [номера через запятую]
Для каждого — краткое обоснование (1 строка):
Отброшенные документы: [номера]
Почему отбросил: [причины]

Подставь:

  • {вопрос_пользователя} — исходный вопрос
  • {список_документов_с_номерами} — результаты поиска с нумерацией
  • {список_ранее_отобранных} — что уже в копилке

📋

Промпт 3: LLM-as-Judge (Контроль качества)

Ты — независимый эксперт, оцениваешь качество шагов исследования.

Вопрос: {вопрос_пользователя}

Выполненное действие:
- Поисковый запрос: "{запрос}"
- Отобранные документы: {номера_документов}

Оцени по шкале 0-1:
1. Насколько точен запрос? (найдёт ли нужное)
2. Правильно ли отобраны документы? (релевантны ли вопросу)
3. Не упущено ли что-то важное?

Формат ответа:
Оценка: [0.0 - 1.0]
Сильные стороны:
Что можно улучшить:
Рекомендация: [продолжить поиск / достаточно]

Подставь:

  • {вопрос_пользователя} — исходный вопрос
  • {запрос} — что искали
  • {номера_документов} — какие документы взяли

🚀 Быстрый старт — вставь в чат:

Помоги настроить двухагентную RAG-систему для моей задачи: {твоя_задача}.

Адаптируй эти три промпта под мой вопрос. Задавай вопросы если нужны детали:
- какой тип информации ищем?
- какие критерии качества документов?
- сколько раундов поиска максимум?

[вставить три шаблона выше]

LLM спросит про специфику твоей задачи (область, требования к источникам, критерии релевантности) — потому что каждый тип исследования требует свои фильтры (для медицинских данных — проверенные источники, для новостей — свежесть, для технических вопросов — официальная документация). Модель возьмёт паттерн из шаблонов и адаптирует критерии отбора и оценки под твой домен.


⚠️

Ограничения

⚠️ Токены: Три отдельных промпта на каждую итерацию → в сложных задачах (5 раундов) будет 15+ запросов. Дорого в API, медленно в чате.

⚠️ Субъективные критерии: LLM-Judge хорош для оценки релевантности и полноты, но не для оценки стиля, креатива или этических аспектов. Если задача "найди самую красивую архитектуру" — судья не поможет.

⚠️ Простые вопросы: Для фактических вопросов ("столица Франции") двухагентная схема — overkill. Используй только для сложных исследовательских задач где нужно собирать информацию по кусочкам.

⚠️ Зависимость от поисковика: Если поисковик плохой — никакие агенты не спасут. Метод улучшает координацию между поиском и генерацией, но не качество самого поиска.


🔍

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

Исследователи взяли 4 датасета вопросов — два простых (NQ, PopQA), два сложных multi-hop (2Wiki, HotpotQA). На каждом взяли всего 100 случайных вопросов (вместо полного набора) — небольшая выборка, но для proof-of-concept достаточно.

Что сравнивали: SIRAG против пяти методов:

  • Стандартный RAG (найти → ответить без фильтров)
  • Reranker (переранжировать документы по релевантности)
  • Query-Writer (переписать запрос для лучшего поиска)
  • SelfRAG (самопроверка: модель сама решает когда искать)

Результаты удивили в multi-hop задачах: На простых вопросах SIRAG выиграл скромно (+1.8% на PopQA). Но на сложных, где нужно собирать информацию по частям — рванул вперёд: +9.3% на 2Wiki, +9.2% на HotpotQA. Это логично: чем больше шагов рассуждения, тем важнее координация между поиском и генерацией. Одношаговые вопросы не раскрывают силу метода.

Ключевой инсайт из ablation study: Когда убрали LLM-Judge (оставили только финальный reward "правильно/неправильно"), качество стало нестабильным — иногда проваливалось ниже базовой модели. Почему? Потому что система не понимала какое КОНКРЕТНОЕ действие было плохим — если финальный ответ неправильный, это может быть из-за плохого запроса ИЛИ плохой фильтрации ИЛИ преждевременной остановки. Без процессного контроля — слепое обучение методом тыка.

Практический вывод: Если делаешь multi-step workflow — оценивай каждый шаг, не только результат. Это как в бизнесе: если продажи упали, не просто "плохо" — нужно понять на каком этапе воронки потери (реклама? конверсия? повторные покупки?).


💡

Адаптации и экстраполяции

⚠️

💡 Адаптация для контента с временными ограничениями

SIRAG исследовали на общих вопросах, но метод особенно силён для информации с датами — законы, новости, релизы продуктов.

Промпт для Knowledge Selector с временным фильтром:

Ты — фильтр документов с фокусом на актуальность.

Вопрос: {вопрос} (требуется информация за {период})

Найденные документы:
{документы_с_датами}

КРИТЕРИИ ОТБОРА:
1. Дата документа в пределах {период}
2. Документ содержит конкретные данные/факты
3. Не дублирует уже собранное

Если документ релевантен НО устарел — укажи это явно.

Формат ответа:
Релевантные и актуальные: [номера]
Релевантные но устаревшие: [номера] — [указать что именно устарело]
Нерелевантные: [номера]

Когда применять: Юридические изменения, финансовая отчётность компаний, технические спецификации продуктов, медицинские рекомендации — всё где дата критична.


📌

🔧 Техника: Добавить "уверенность" в Decision Maker → видеть когда модель сомневается

Стандартный Decision Maker выдаёт бинарное решение: RETRIEVE или STOP. Но полезно видеть степень уверенности.

Изменённый промпт:

Действие: [RETRIEVE/STOP]
Обоснование: [почему]
Уверенность: [0-100%]
 - если <50% — поясни что смущает
 - если 80%+ — укажи почему уверен
Запрос: [если RETRIEVE]

Зачем: Если Decision Maker говорит "STOP" с уверенностью 55% — это слабый сигнал, может стоит сделать ещё один раунд поиска. Если "RETRIEVE" с уверенностью 95% — точно есть пробел в знаниях. Уверенность = метрика качества решения.


📌

🔧 Техника: Безликие агенты → конкретные роли → более острая критика

Замени абстрактные "Decision Maker" и "Knowledge Selector" на конкретные роли с характером.

Пример:

Ты — Владимир Познер на пенсии. Ведёшь глубокое расследование.

[...]

Ты сомневаешься в поверхностной информации. Ты знаешь когда нужно копнуть глубже,
а когда достаточно фактов для выводов. Ты не терпишь домыслов — только проверенные источники.

Вместо "Knowledge Selector":

Ты — главред "Медузы". Отбираешь факты для статьи.

[...]

Ты берёшь только проверенные источники. Ты знаешь разницу между фактом и мнением.
Ты отбрасываешь дубли и околотематический мусор безжалостно.

Эффект: Персонажи дают более острые оценки и специфичные критерии. Познер не остановит исследование на первых 3 документах. Главред Медузы не возьмёт сомнительный источник.


🔗

Ресурсы

SIRAG: Towards Stable and Interpretable RAG with A Process-Supervised Multi-Agent Framework — Junlin Wang, Zehao Wu, Shaowei Lu, Yanlan Li, Xinghao Huang (Heyuan Tobacco Monopoly Administration, South China University of Technology)

Упоминания методов: Self-RAG (Asai et al., 2024), Query-Writer, Reranker, REPLUG

Техники: Proximal Policy Optimization (PPO), Generalized Advantage Estimation (GAE), Tree-structured rollout, LLM-as-a-Judge

Retriever: Contriever-msmarco на Wikipedia dump 2018

Модели: Qwen2.5-7B-Instruct (основная), Qwen2-0.5B (агенты)


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

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

RAG работает как два отдела в компании что не общаются: поиск выдал 10 документов (5 релевантных, 3 повторы, 2 мусор), генератор пытается из каши варить ответ. SIRAG позволяет контролировать качество на каждом шаге поиска — вместо 'найди всё и ответь' делает явные решения: 'достаточно информации? какие документы взять?'. Фишка: между поиском и генерацией два лёгких агента-координатора. Decision Maker решает продолжать поиск или стоп. Knowledge Selector чистит результаты — 'эти 3 релевантны, остальное выброс'. Плюс LLM-Judge оценивает каждый шаг.

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

Процесс в цикле (2-5 раундов): первый агент решает 'искать ещё или хватит' → если искать, второй агент фильтрует найденное 'что релевантно, что дубль, что мусор' → LLM-Judge оценивает шаг по шкале 0-1 (хороший ли запрос? полезные ли документы?) → повтор или финальная генерация. Вместо 'найди всё скопом и отвечай' — петля с контролем качества после каждого действия. Как конвейер на заводе: каждый этап делает своё, а не всё разом.

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

Модели плохо работают с размытой задачей 'найди и ответь сразу', но отлично с микрозадачами. Спроси 'эти документы полезны для вопроса?' — даст точную оценку. SIRAG превращает одну большую задачу в цепочку атомарных: решить→отфильтровать→оценить→повторить. Плюс LLM-Judge создаёт петлю обратной связи: оценил шаг на 0.2 — значит запрос был плохой, система учится не повторять эту ошибку. Специализация помогает: один агент думает про стратегию поиска, другой про качество документов — как два эксперта с разной экспертизой.

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

Исследовательские задачи → когда нужно собирать информацию по кусочкам (анализ законодательства за год, технический разбор темы с разных сторон, сбор мнений экспертов), особенно когда первый поиск не даёт полной картины и нужно уточнять. НЕ подходит для простых фактических вопросов ('столица Франции', 'формула площади круга') — трёхступенчатая схема будет overkill.

Мини-рецепт

1. Координатор поиска (Decision Maker): Промпт 'Вопрос: [вопрос]. Текущий контекст: [что собрано или пусто]. Раунд {N}/5. Выбери: RETRIEVE (сформулируй новый запрос) или STOP (хватит для ответа)'. Модель решает продолжать или нет.

2. Фильтр документов (Knowledge Selector): После каждого поиска промпт 'Найденные документы: [нумерованный список]. Текущий контекст: [что уже в копилке]. Отбери ТОЛЬКО релевантные вопросу, не дублирующие собранное, с конкретными фактами'. Модель чистит мусор и дубли.

3. Судья качества (LLM-Judge): Промпт 'Оцени шаг: запрос [текст запроса], отобранные документы [номера]. Насколько точен запрос? правильно ли отобраны документы? не упущено важное?'. Модель ставит оценку 0-1 и даёт рекомендации.

4. Повторить цикл 2-5 раундов пока Decision Maker не скажет STOP. Финал: генератор получает чистый набор отфильтрованных документов и создаёт ответ.

Примеры

[ПЛОХО] : Найди всё о новых законах по маркетплейсам в России за 2024 год и напиши краткое резюме
[ХОРОШО] : Раунд 1 - Decision Maker: Вопрос: Какие новые законы по маркетплейсам приняли в России в 2024? Контекст: пусто. Раунд 1/5. Выбери: RETRIEVE или STOP → модель отвечает 'RETRIEVE: законы маркетплейсы 2024 Россия принятые'. После поиска Knowledge Selector: Найденные: 1) Закон о защите прав потребителей июль 2024, 2) Статья РБК про Wildberries, 3) Изменения налогообложения январь 2024, 4) Обсуждение в Госдуме декабрь 2023, 5) Требования Роскомнадзора август 2024. Отбери только конкретные законы принятые в 2024 → модель отбирает документы 1, 3, 5 с обоснованием. LLM-Judge оценивает качество запроса и отбора. Если нужно — раунд 2 с уточнённым запросом про налоги или требования.
Источник: SIRAG: Towards Stable and Interpretable RAG with A Process-Supervised Multi-Agent Framework
ArXiv ID: 2509.18167 | Сгенерировано: 2026-01-12 01:14

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

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

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