Skip to content

Знания — RLM (извлечение без индекса)

Что и зачем

RLM (Recursive Language Models) — это стратегия инференса, а не модель и не ещё один RAG-движок: вместо того чтобы запихивать длинный вход в промпт, вход хранится как переменная во внешнем окружении (REPL / файловая система), а корневая LLM программно просматривает, грепает и режет его — рекурсивно вызывая суб-LLM только на нужных кусках и композируя их ответы. Результат (MIT CSAIL, arXiv:2512.24601): маленькая корневая модель с RLM-циклом обходит большую модель с полным промптом на входах 10M+ токенов при сравнимой или меньшей цене за запрос — потому что ни одна модель не читает вход целиком.

Для нас RLM — второй путь извлечения: LightRAG отвечает из индекса, построенного заранее; RLM отвечает по сырым данным без ингестии вообще, платя в момент запроса.

RLM vs LightRAG — два пути к данным

LightRAG (индекс)RLM (без индекса)
Стоимость заранееДорогая ингестия — LLM-извлечение на каждый чанкНоль — ингестии нет
Стоимость запросаДешёвый (граф + вектор)Выше — peek/grep + вызовы суб-LLM на каждый запрос
Какие данныеКурируемый, стабильный корпус — каталог, правила, документыСырые, свежие, неиндексированные — огромная выгрузка, лог, экспорт, вся история чата
ЛатентностьНизкаяВыше (агентный цикл на запрос)
Когда выигрываетСпросят много раз — индекс окупаетсяСпросят один раз — или данные только что появились

Правило выбора: базу будут спрашивать много раз? Индексируй (LightRAG). Разовый вопрос по чему-то большому или данные только что пришли? RLM. Оба пути имеют одну поверхность для потребителя — MCP-инструменты — поэтому агент выбирает путь под вопрос, как уже выбирает режим извлечения.

RLM — радикальное продолжение идеи «дешёвого пути» из масштабирования: naive vector-RAG пропускает граф; RLM пропускает индекс целиком.

Как это ложится на нашу архитектуру

Схема из статьи переносится один-в-один на двухплоскостной рантайм — с одним жёстким ограничением: у worker'а нет LLM (принято — ключи LLM никогда не попадают в под, MCP sampling выключен). Поэтому RLM-цикл живёт в мозге, а worker служит окружением:

Понятие из статьи RLMВ Agentfy 2.0
Корневая LM — ведёт цикл, никогда не читает весь входХод orchestrator в api (мозг)
REPL-окружение — держит вход как переменнуюWorkspace worker'а — файл на диске, управляется через exec / file по MCP-каналу тулов
peek / grep / sliceВызовы exec (head, grep, split, jq, …) — по каналу 3 возвращаются фрагменты, никогда весь файл
Рекурсивный вызов суб-LMspawn_agent (под-задача = ещё один эфемерный запуск api) для больших кусков; дешёвый вызов system/llm для маленьких
Композиция частичных ответовОбычный LLM-цикл корневого хода

Никакой новой инфраструктуры: worker, канал тулов, под-задачи и дешёвая вспомогательная модель (уже используется для компакшена) на месте. RLM — это паттерн промптинга и оркестрации поверх существующих частей, а не новый сервис.

Куда подключается

1. Задачи worker'а над данными больше окна (основной случай). «Проанализируй этот экспорт на 500 МБ» — файл никогда не влезет в контекстное окно. Мозг ведёт RLM-цикл: положить файл в workspace worker'а, grep/резать через exec, раздать куски в spawn_agent / system/llm, скомпозировать. Это паттерн использования worker'а, а не новый инструмент.

2. Холодный старт знаний — режим извлечения rlm. Магазин подключился и загрузил каталог; графовая ингестия займёт часы очереди и токены. С режимом rlm у MCP-инструмента знаний агент отвечает по сырым документам сразу, пока индекс строится в фоне — потом запросы мигрируют на дешёвый индексированный путь. Закрывает разрыв холодного старта у стены ингестии.

3. Память чата (будущее). RLM-проход по полной истории чата, когда нужен точный ответ, а не семантическое попадание — «какой размер клиент называл три недели назад?». Возможное дополнение к pgvector-поиску в Памяти; направление, а не обязательство.

Ограничения и бюджет

  • Глубина рекурсии ограничена 1 (корень → суб-вызовы, не глубже) — как в статье; держит цену и отладку в норме.
  • Бюджет токенов на запрос — та же философия, что у бюджетов ингестии в runtime/task: RLM-запрос — это ограниченный расход LLM, а не открытый цикл.
  • Латентность реальна: RLM-ответ — это агентный цикл (секунды+), а не lookup. Не отправляйте в RLM вопросы, на которые уже отвечает готовый индекс.
  • Дешёвого корня достаточно. Главный результат статьи получен с маленькой корневой моделью; корень в основном пишет команды grep/slice. Для точки 2 по умолчанию — дешёвая модель из system/llm.

WARNING

RLM (декабрь 2025) ещё моложе LightRAG. Сам паттерн прост и полностью наш end-to-end — но прогоните качество ответов по типам данных (выгрузки каталогов, логи, истории чатов) прежде чем обещать это в продукте.

Смотрите также