TL;DR
ROG — метод для работы с графами знаний (базами данных, где информация хранится как сеть связей: "Париж → столица → Франция → часть → Европа"). Суть: сложный многоступенчатый запрос разбивается на цепочку простых, каждый шаг обрабатывается LLM отдельно, промежуточные ответы сохраняются и используются дальше. Дополнительная фишка: конкретные названия сущностей заменяются на абстрактные ID (Entity_1, Relation_A), чтобы модель не полагалась на свои знания о мире и не галлюцинировала.
Проблема: LLM плохо справляются со сложными логическими запросами, где нужно выполнить несколько операций подряд — найти пересечение множеств, потом спроецировать на другие связи, потом объединить с чем-то ещё. Если подать всё скопом, модель теряет нить рассуждений и выдаёт неточный результат. Встроенные методы (embedding-based) хорошо работают на простых запросах, но на сложных композициях из 3-4 операций точность проседает на 30-40%.
Решение: разбить сложный запрос на последовательность элементарных шагов, где каждый содержит только одну операцию. Модель отвечает по порядку: шаг 1 → результат сохраняется → шаг 2 использует результат шага 1 → и так далее. Вместо "найди X, где выполняется условие A и B и C" даём три запроса: "найди по A", "найди по B", "пересеки результаты A и B", "найди по C", "объедини с C".
Схема метода
ШАГ 1: Абстракция запроса
Конкретные названия → ID (Entity_1, Relation_A)
Цель: убрать влияние внешних знаний модели
ШАГ 2: Извлечение релевантного контекста
Из графа берём только связи, нужные для запроса
Формат: список троек (сущность - связь - сущность)
ШАГ 3: Декомпозиция запроса
Сложный запрос → цепочка простых под-запросов
Каждый под-запрос = одна операция (проекция/пересечение/объединение)
ШАГ 4: Последовательное выполнение
LLM отвечает на каждый под-запрос по очереди
Промежуточные ответы сохраняются как переменные (A1, A2, A3)
Следующий шаг использует результаты предыдущих
Все шаги выполняются последовательно, каждый под-запрос — отдельный промпт.
Пример применения
⚠️ Метод разработан для графов знаний — специализированных баз данных с готовой структурой связей. Для обычного пользователя ChatGPT/Claude прямое применение ограничено, но принцип декомпозиции и абстракции универсален.
Задача: Анализируешь бизнес-идею для инвестора. Есть три конкурента с разными бизнес-моделями. Нужно найти общие слабые места (пересечение), потом проверить какие из них критичны для твоей идеи (проекция), потом добавить уникальные риски твоего проекта (объединение).
Промпт (адаптация принципа для чата):
Задача: многоступенчатый анализ конкурентов и рисков.
КОНТЕКСТ:
Компания_А: {описание конкурента 1}
Компания_Б: {описание конкурента 2}
Компания_В: {описание конкурента 3}
Моя_Идея: {твоя бизнес-идея}
Выполни по шагам, сохраняя результаты:
ШАГ 1: Слабые места Компании_А → результат [A1]
ШАГ 2: Слабые места Компании_Б → результат [A2]
ШАГ 3: Слабые места Компании_В → результат [A3]
ШАГ 4: Пересечение [A1] ∩ [A2] ∩ [A3] → общие слабости [B1]
ШАГ 5: Какие из [B1] применимы к Моя_Идея → [C1]
ШАГ 6: Уникальные риски Моя_Идея → [C2]
ШАГ 7: Объединение [C1] + [C2] → финальный список рисков
Показывай результат каждого шага явно перед переходом к следующему.
Результат:
Модель выдаст структурированный анализ: сначала три списка слабостей конкурентов, потом их пересечение (что общего), потом проекцию на твою идею (что из общего актуально для тебя), потом добавит специфичные риски. Каждый шаг будет подписан, результаты пронумерованы — видна вся логика рассуждений, можно проверить любой этап.
Почему это работает
LLM хорошо справляются с простыми запросами, но теряются в сложных композициях. Если попросить сразу "найди общее между тремя вещами, потом отфильтруй по условию X, потом добавь Y" — модель может пропустить шаг, перепутать порядок или смешать промежуточные результаты. Аналогично тому как человеку сложно держать в голове 5-6 вложенных условий одновременно.
Модель сильна в пошаговых рассуждениях и работе с явными промежуточными состояниями. Когда видит чёткую структуру "сделай A → сохрани → используй для B → сохрани → используй для C", она выполняет каждый шаг точно, потому что фокусируется на одной операции за раз. Плюс явное сохранение результатов (A1, A2, B1) создаёт anchor points — модель не забывает что уже нашла и не начинает переосмысливать с нуля на каждом шаге.
Абстракция через ID работает потому что отсекает галлюцинации на основе встроенных знаний. Если назвать конкретную компанию или персону, модель привносит своё представление о них — актуальное или устаревшее, точное или искажённое. Заменив "Сбербанк" на "Компания_А", мы заставляем модель работать только с данными из промпта, не додумывая "что я знаю о Сбербанке". Особенно полезно для анализа малоизвестных сущностей или свежей информации, которой нет в обучающей выборке.
Рычаги управления:
- Глубина декомпозиции — для простых задач можно объединить 2-3 шага в один, сэкономив запросы. Для сложных — раздробить ещё мельче.
- Явность промежуточных состояний — убери [A1], [A2] если хочешь более естественный текст, но потеряешь структуру и возможность проверки.
- Абстракция названий — применяй выборочно: где важна объективность (анализ конкурентов) — заменяй на ID, где важен контекст (креативные задачи) — оставь реальные названия.
Шаблон промпта
Задача: {описание многоступенчатой задачи}
КОНТЕКСТ:
{данные, с которыми работаем — можно абстрагировать названия через ID}
Выполни по шагам:
ШАГ 1: {первая операция} → результат [A1]
ШАГ 2: {вторая операция} → результат [A2]
ШАГ 3: {операция над результатами, например: пересечение [A1] ∩ [A2]} → результат [B1]
ШАГ 4: {следующая операция с использованием [B1]} → результат [C1]
...
ШАГ N: {финальная операция} → итоговый результат
Показывай результат каждого шага явно перед переходом к следующему.
Не пропускай промежуточные шаги.
Подстановка:
- {описание задачи} — общая цель, что нужно получить в итоге
- {данные} — исходная информация; если важна объективность, замени конкретные названия на абстрактные (Компания_А, Персона_X)
- {операция} — конкретное действие на шаге: найти, отфильтровать, пересечь, объединить, проверить
- [A1], [A2], [B1] — метки для промежуточных результатов, чтобы ссылаться на них в следующих шагах
Логика шагов: 1. Сначала базовые операции над исходными данными → A1, A2, A3... 2. Потом операции над результатами (пересечение, объединение) → B1, B2... 3. Затем производные операции → C1, C2... 4. Финал — итоговый ответ
Ограничения
⚠️ Узкая специализация: Метод разработан для работы с графами знаний — структурированными базами данных. Для обычного пользователя чата применимы только отдельные принципы (декомпозиция, абстракция), но не полная система.
⚠️ Требует инфраструктуру: Полное применение ROG нужен граф знаний (Neo4j или аналог) и механизм извлечения релевантных подграфов. В обычном чате можно использовать идею, но не технологию.
⚠️ Увеличение запросов: Декомпозиция на N шагов = N запросов к модели. Для сложных задач это 5-10 обращений вместо одного. Расход токенов и время растут пропорционально.
⚠️ Ошибки накапливаются: Если модель ошиблась на шаге 2, все последующие шаги будут работать с неверными данными. Нужна проверка промежуточных результатов.
Как исследовали
Команда взяла два классических бенчмарка для графов знаний — FB15k (на основе Freebase) и NELL995 — и проверила ROG на 14 типах логических запросов разной сложности. Типы запросов: от простых (одношаговая проекция: "кто связан через отношение R") до сложных (пересечение трёх множеств + проекция + объединение с отрицанием).
Сравнивали с тремя baseline-методами: GQE (векторные эмбеддинги), Query2Box (box embeddings для захвата семантических регионов) и CQD (декомпозиция запросов с attention). Все они работают через обучение геометрических представлений сущностей и отношений — это стандартный подход в исследованиях KG.
Метрика — MRR (Mean Reciprocal Rank): насколько высоко в списке кандидатов находится правильный ответ. MRR = 1 если ответ первый, 0.5 если второй, 0.33 если третий и так далее. Усредняется по всем запросам.
Ключевая находка: ROG обогнал все baseline на 35-55% по MRR. Причём на простых запросах (1-2 шага) baseline иногда работали сравнимо, а на сложных (3+ операции, композиции с пересечением и отрицанием) ROG вырывался вперёд значительно. Это подтверждает гипотезу: chain-of-thought декомпозиция критична именно для сложных многоступенчатых рассуждений, где embedding-методы теряют информацию при каждой трансформации.
Интересный момент: традиционные методы обучаются на конкретном графе, оптимизируя эмбеддинги под его структуру. ROG использует общую LLM без дообучения — значит преимущество не в знании конкретного графа, а в способности следовать логической цепочке шаг за шагом. Это говорит о том, что декомпозиция + явные промежуточные состояния — мощная техника для сложных рассуждений, даже без специализированной оптимизации.
Адаптации
🔧 Техника: убрать явные метки промежуточных результатов → более естественный текст
Если задача не требует строгой проверки логики, можно убрать конструкции типа [A1], [B1] и попросить модель вести рассуждения естественным текстом, но с сохранением порядка шагов:
Проанализируй по шагам:
Сначала: слабости первого конкурента
Затем: слабости второго конкурента
Далее: слабости третьего конкурента
После этого: что общего во всех трёх списках
На основе общего: какие риски актуальны для моей идеи
В дополнение: уникальные риски моей идеи
Итого: полный список рисков
Пиши каждый шаг отдельным абзацем, начиная с названия шага жирным.
Читается проще, но теряется строгая структура — модель может "забыть" вернуться к результату шага 2 при выполнении шага 5.
🔧 Техника: добавить проверочный шаг после каждого результата
Для критичных задач, где ошибка на раннем шаге дорого обходится:
ШАГ 1: {операция} → результат [A1]
ПРОВЕРКА: Критически оцени [A1] — что могло быть пропущено или искажено?
ШАГ 2: {операция} → результат [A2]
ПРОВЕРКА: Критически оцени [A2] — корректны ли выводы?
ШАГ 3: {операция над [A1] и [A2]} → результат [B1]
ПРОВЕРКА: Согласуется ли [B1] с исходными [A1] и [A2]?
Удваивает количество шагов, но снижает риск накопления ошибок в цепочке.
Ресурсы
A Large Language Model Based Method for Complex Logical Reasoning over Knowledge Graphs
Ziyan Zhang, Chao Wang, Zhuo Chen, Lei Chen, Chiyi Li, Kai Song
School of Information Science and Engineering, Chongqing Jiaotong University; State Grid Chongqing Electric Power Company
Упоминания бенчмарков: FB15k (Freebase), NELL995, WordNet
Baseline методы: GQE, Query2Box, BetaE, CQD
