3,583 papers
arXiv:2509.01238 77 1 сент. 2025 г. FREE

AnchorRAG: параллельный поиск от нескольких кандидатов

КЛЮЧЕВАЯ СУТЬ
RAG на графе знаний ломается если промахнулся в стартовой точке — весь поиск впустую. Спросил про Фицджеральда, система нашла не того Fitzgerald в базе — всё, результат мусор. AnchorRAG позволяет компенсировать ошибки якорной сущности через параллельный поиск от нескольких кандидатов одновременно. Вместо одной гипотезы «откуда начать» запускается 3-5 агентов — каждый исследует граф от своего кандидата, supervisor собирает результаты и выбирает лучший путь. Один агент зашёл в тупик? Остальные компенсируют.
Адаптировать под запрос

TL;DR

AnchorRAG — multi-agent фреймворк для поиска в графах знаний, который работает без предопределённой стартовой точки. Вместо одной гипотезы "откуда начать поиск" система запускает несколько параллельных агентов, каждый исследует граф от своего кандидата. Predictor-агент находит возможные якорные сущности, retriever-агенты исследуют пути от каждой, supervisor-агент синтезирует результаты и решает продолжать или остановиться.

Главная проблема RAG на графах знаний — не сам поиск, а найти с чего начать. Когда спрашивают "Кто вдохновил Фицджеральда?" — нужно сначала найти сущность "Fitzgerald" в графе. Но там может быть несколько Fitzgerald, или написание с ошибкой, или сокращённое имя. Ошибка на старте = весь поиск впустую. Существующие методы выбирают один якорь и идут от него — если промахнулись, всё ломается.

AnchorRAG решает это параллелизмом и двухуровневой фильтрацией. Сначала predictor находит 3-5 кандидатов в якорные сущности (rough pruning) — не только по названию, но и по структурному окружению в графе (какие связи у сущности, насколько они релевантны вопросу). Потом каждый retriever-агент исследует свой путь независимо, применяя точную фильтрацию (fine filtering) на каждом шаге. Supervisor собирает результаты всех агентов и выбирает лучший ответ. Если один агент зашёл в тупик — остальные компенсируют.


🔬

Схема метода

Predictor Agent:
- Извлечь ключевые слова из вопроса
- Найти кандидатов по семантике + структурному контексту
→ Топ-3 кандидата в якорные сущности

Retriever Agents (параллельно для каждого кандидата):
Итерация 1:
- Rough pruning: отобрать топ-3 релевантных связи
- Fine filtering: из связанных сущностей выбрать релевантные факты
- Early stopping: если путь бесперспективен — завершить этого агента
→ Набор фактов от каждого агента

Supervisor Agent:
- Синтез результатов всех активных агентов
- Решение: достаточно для ответа? → Да: ответ / Нет: следующая итерация

Если ни один агент не нашёл ответ за L итераций (обычно 3) — supervisor отвечает на основе внутренних знаний LLM.


🚀

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

⚠️ Важно: Сам метод требует граф знаний и API — не применим в обычном чате. НО его принципы (multi-agent collaboration, parallel exploration, two-stage filtering) extractable.

Задача: Оценить стоит ли открывать своё digital-агентство в Екатеринбурге — применяем принцип параллельных агентов

Промпт:

Проанализируй идею открытия digital-агентства в Екатеринбурге с трёх независимых позиций. Каждая позиция — отдельный агент с чёткой ролью:

**Агент "Оптимист":**
Найди 5 факторов, которые делают эту идею перспективной:
- Рыночные возможности
- Конкурентные преимущества
- Тренды в пользу идеи
Будь конкретным — цифры, примеры, кейсы.

**Агент "Пессимист":**
Найди 5 рисков и проблем, которые могут убить бизнес:
- Барьеры входа
- Конкуренция
- Экономические риски
Будь жёстким — что ТОЧНО пойдёт не так?

**Агент "Реалист":**
Определи 3-5 ключевых метрик для проверки ДО запуска:
- Что измерить?
- Какие показатели должны быть?
- Как тестировать гипотезы минимальными ресурсами?

После анализа всех трёх агентов — синтезируй выводы и дай финальную рекомендацию: запускать / отложить / переделать концепцию. Укажи при каких условиях решение меняется.

Результат: Модель выдаст три независимых блока анализа — каждый со своей логикой и фокусом. Оптимист покажет возможности (может быть 5-7 пунктов с конкретикой), пессимист — риски (тоже детально), реалист — метрики для валидации. В финале — взвешенное решение, которое учитывает все три точки зрения, а не только ту, которая пришла модели в голову первой.


🧠

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

Слабость LLM: Модель склонна к confirmation bias — находит аргументы в пользу первой версии, которая пришла в голову. Если LLM решила "да, агентство — хорошая идея", она будет генерировать подтверждающие доводы. Противоречия всплывут только если явно попросить.

Сильная сторона: LLM отлично выполняет чётко заданные роли. Когда говоришь "ты пессимист" — модель генерирует текст в этом ключе. Когда "ты оптимист" — противоположное. Это не разные модели, это разные паттерны генерации от одной.

Как метод использует: Multi-agent framework заставляет явно рассмотреть альтернативы через структуру промпта. Вместо "подумай со всех сторон" (размытая инструкция) даёшь конкретные роли с конкретными задачами. Параллельность критична — агенты не влияют друг на друга на этапе анализа, каждый идёт своим путём. Только на финале supervisor синтезирует без предвзятости, т.к. все данные уже собраны.

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

  1. Количество агентов (2-5):
    • 2 агента (за/против) — для бинарных решений
    • 3-4 агента (оптимист/пессимист/реалист/эксперт) — для многогранного анализа
    • 5+ агентов — избыточно, размывает фокус
  2. Роли агентов (безликие vs конкретные):
    • Безликие: "Агент 1", "Агент 2" — нейтрально
    • Конкретные: "Финансовый директор", "Техлид", "Маркетолог" — острее выполнение роли
    • Персонажи: "Павел Дуров", "Тинькoff" — ещё острее, но рискованно (стереотипы)
  3. Инструкции агентам (широкие vs узкие):
    • Широкие: "проанализируй с позиции X" — больше свободы, но размытость
    • Узкие: "найди ровно 5 рисков, каждый с цифрами" — конкретика, но может ограничить
  4. Формат финального синтеза:
    • Убери "синтезируй" → получишь 3 отдельных блока без вывода (для самостоятельного анализа)
    • Добавь "с оценкой 1-10 и обоснованием" → числовая метрика + аргументы
    • Добавь "с планом действий на 30 дней" → actionable выход

📋

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

Проанализируй {задачу/идею/решение} с {N} независимых позиций:

**Агент 1 — {роль_1}:**
{инструкция_1}
{формат_вывода_1}

**Агент 2 — {роль_2}:**
{инструкция_2}
{формат_вывода_2}

**Агент {N} — {роль_N}:**
{инструкция_N}
{формат_вывода_N}

После анализа всех агентов — синтезируй выводы и дай {формат_финального_вывода}.

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

  • {задачу/идею/решение} — что анализируем (бизнес-идея, карьерный выбор, инвестиционное решение)
  • {N} — количество агентов (обычно 2-4)
  • {роль_X} — специализация агента (оптимист/пессимист, финансист/маркетолог, новичок/эксперт)
  • {инструкция_X} — конкретная задача агента (найти риски, оценить потенциал, проверить feasibility)
  • {формат_вывода_X} — как оформить (список, таблица, абзац с обоснованием)
  • {формат_финального_вывода} — итоговый output (рекомендация ДА/НЕТ, рейтинг 1-10, план действий)

Совет: Для каждого агента давай конкретную числовую цель — "найди 5 рисков", "3 ключевых метрики", "топ-3 преимущества". Это заставляет модель не размазывать анализ, а быть точечной.


⚠️

Ограничения

⚠️ Токены: Каждый агент = отдельный блок текста. 3 агента могут съесть в 3 раза больше контекста, чем один прямой ответ. Для моделей с малым context window (4K-8K) это критично.

⚠️ Сложность задачи: Для простых вопросов ("когда основана Москва?") избыточно. Нужна реальная многогранность — где ответ зависит от точки зрения или критериев оценки.

⚠️ Противоречия: Если агенты дают несовместимые выводы (один говорит "точно да", другой "точно нет"), финальный синтез может быть размытым. Иногда лучше оставить противоречие явным и решать самому.

⚠️ Качество ролей: Если роли агентов слабо различимы (все три примерно про одно), метод вырождается в повтор одних мыслей разными словами. Роли должны быть контрастными по фокусу.


🔍

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

Исследователи взяли 4 датасета для вопросно-ответных задач (WebQSP, GrailQA, CWQ, WebQuestions) и граф знаний Freebase с миллионами фактов. Сравнивали с методами, которые получают anchor entity "на блюдечке" (closed-world assumption).

Интересный ход: создали open-world версии датасетов — добавили опечатки в вопросы ("Romny" вместо "Romney"), чтобы exact match с графом не работал, и вопросы, ответы на которые вообще нет в графе. Это реалистичный сценарий — пользователи делают ошибки, задают вопросы про редкие сущности.

Результаты: AnchorRAG обогнал все базовые методы на 6-20% по точности. Особенно сильно — на сложном GrailQA (+20.7%), где сущности и вопросы семантически далеки (например, вопрос про "университет Ромни" может ссылаться на Mitt Romney, George W. Romney, или Romney Marsh — все в графе).

Критический инсайт: На open-world версиях стандартный метод ToG (Think-on-Graph) проседал на 11-23%, AnchorRAG — всего на 3-12%. Почему? Параллельные агенты компенсировали ошибки в определении якорной сущности. Если один агент ошибся и пошёл от Romney Marsh, другие от Mitt Romney и нашли ответ.

Ablation study показало: модуль entity grounding (определение якоря с учётом структурного окружения, а не только названия) даёт +6.3% на WebQSP и +20.6% на GrailQA. Это подтверждает: точность на старте критична для всего поиска.


💡

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

💡 Адаптация: двухуровневая фильтрация для найма

Rough pruning + fine filtering можно применить к отбору резюме:

**Шаг 1 — Грубая фильтрация:**
Из 50 резюме отбери 10-15, которые точно подходят по hard skills и опыту. 
Критерии: [Python 3+ года, опыт с API, английский B2+]. 
Убери очевидно не подходящих. Без детального анализа — только проверка чек-листа.

**Шаг 2 — Точная фильтрация:**
Из оставшихся 10-15 выбери топ-3 по soft skills, культурному фиту и мотивации. 
Для каждого дай развёрнутое обоснование: почему этот кандидат, какие риски, что проверить на интервью.

Эффект: Экономия времени (не анализируешь 50 резюме глубоко) + меньше шанс пропустить хорошего кандидата (широкий охват на первом проходе).


🔧 Техника: structural context вместо голых ключевых слов

AnchorRAG ищет якорные сущности не только по названию, но и по окружению (какие связи у сущности). Адаптация:

Вместо:
"Найди информацию про компанию Ozon"

Лучше:
"Найди информацию про компанию Ozon. 
Контекст: российский e-commerce, конкурент Wildberries, основана 1998, IPO 2020. 
Это важно чтобы не путать с озоновым слоем или другими Ozon."

Или для найма:

Вместо:
"Найди кандидатов с опытом в Python"

Лучше:
"Найди кандидатов с опытом в Python.
Контекст: нужен для backend API на FastAPI, работа с PostgreSQL, интеграции с внешними сервисами.
Это важно чтобы отсеять тех, кто знает Python только для Data Science."

Принцип: Не голое ключевое слово, а слово + смежные концепты. Это сужает семантическое пространство поиска и повышает точность.


🔗

Ресурсы

Towards Open-World Retrieval-Augmented Generation on Knowledge Graph: A Multi-Agent Collaboration Framework

Jiasheng Xu, Mingda Li, Yongqiang Tang, Peijie Wang, Wensheng Zhang

Institute of Automation, Chinese Academy of Sciences

Граф знаний: Freebase (Bollacker et al. 2008)

Базовые методы: Think-on-Graph (Sun et al. 2023), Plan-on-Graph (Chen et al. 2024)

Датасеты: WebQSP, GrailQA, CWQ, WebQuestions


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

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

RAG на графе знаний ломается если промахнулся в стартовой точке — весь поиск впустую. Спросил про Фицджеральда, система нашла не того Fitzgerald в базе — всё, результат мусор. AnchorRAG позволяет компенсировать ошибки якорной сущности через параллельный поиск от нескольких кандидатов одновременно. Вместо одной гипотезы «откуда начать» запускается 3-5 агентов — каждый исследует граф от своего кандидата, supervisor собирает результаты и выбирает лучший путь. Один агент зашёл в тупик? Остальные компенсируют.

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

Классический подход: выбрал один якорь → если ошибся = весь поиск сломался. AnchorRAG идёт от нескольких якорей параллельно. Predictor-агент находит 3-5 кандидатов в стартовые сущности (не только по названию, но и по структуре связей в графе). Каждый retriever-агент исследует свой путь независимо — применяет грубую фильтрацию (rough pruning) для отсева нерелевантных связей, потом точную (fine filtering) для выбора фактов. Supervisor синтезирует находки всех агентов и решает: достаточно для ответа или запустить следующую итерацию. Если ни один не нашёл за 3 итерации — отвечает по внутренним знаниям LLM.

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

Модель склонна к предвзятости подтверждения — цепляется за первую версию которая пришла в голову, генерирует аргументы в её пользу. Если LLM решила «да, хорошая идея» — будет подтверждать, противоречия всплывут только если явно попросить. Multi-agent framework заставляет явно рассмотреть альтернативы через структуру промпта — не размытое «подумай со всех сторон», а конкретные роли с конкретными задачами. Агенты не влияют друг на друга на этапе анализа (каждый идёт своим путём), только на финале supervisor синтезирует без предвзятости — все данные уже собраны. Принцип из оригинального метода: если один путь поиска оказался ошибочным, параллельные пути компенсируют — вместо 100% провала получаешь частичный успех.

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

Многогранные задачи где ответ зависит от точки зрения или критериев — бизнес-решения (запускать стартап или нет), анализ идей (инвестировать или пройти мимо), карьерные выборы (менять работу или остаться). Особенно когда один прямой ответ модели может быть предвзятым — она решит за тебя на основе первой пришедшей мысли. НЕ подходит для простых фактоидных вопросов («когда основана Москва?») — там нет многогранности, избыточно.

Мини-рецепт

1. Задай 2-4 роли агентам с контрастными фокусами: Агент «Оптимист» — найди 5 возможностей, Агент «Пессимист» — найди 5 рисков, Агент «Реалист» — определи 3 метрики для проверки
2. Конкретные инструкции каждому: не «проанализируй», а Будь конкретным — цифры, примеры, кейсы и Будь жёстким — что ТОЧНО пойдёт не так?
3. Числовые цели для каждого агента: «найди ровно 5 рисков», «топ-3 метрики» — заставляет модель не размазывать анализ
4. Финальный синтез от supervisor: После анализа всех агентов — синтезируй выводы и дай рекомендацию: запускать / отложить / переделать концепцию
5. Опционально: добавь условия изменения решения: Укажи при каких условиях рекомендация меняется

Примеры

[ПЛОХО] : Проанализируй идею открытия агентства в Екатеринбурге со всех сторон — размытая инструкция, модель выдаст то что первым пришло в голову, остальное подгонит под эту версию
[ХОРОШО] : Проанализируй с трёх позиций: Агент «Оптимист»: найди 5 факторов перспективности — рыночные возможности, тренды. Цифры и примеры. Агент «Пессимист»: найди 5 рисков которые могут убить бизнес — барьеры входа, конкуренция. Будь жёстким. Агент «Реалист»: определи 3 ключевые метрики для проверки ДО запуска — что измерить, какие показатели должны быть. После всех агентов — синтезируй и дай рекомендацию: запускать / отложить / переделать — получишь три независимых блока анализа с разной логикой, финальное решение учтёт все точки зрения вместо первой пришедшей
Источник: Towards Open-World Retrieval-Augmented Generation on Knowledge Graph: A Multi-Agent Collaboration Framework
ArXiv ID: 2509.01238 | Сгенерировано: 2026-01-12 02:24

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

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

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