engram

Q-Learning роутер

Адаптивный выбор стратегии через reinforcement learning

Q-Learning роутер

Engram использует иерархический Q-Learning роутер для адаптивного выбора параметров поиска. Роутер обучается на feedback от агента и со временем оптимизирует стратегию под конкретные паттерны использования.

4 уровня принятия решений

Роутер принимает решения на четырех независимых уровнях. Каждый уровень имеет собственную Q-таблицу.

1. Search Strategy

Выбор порога similarity для фильтрации результатов.

ДействиеОписание
high_thresholdТолько высокорелевантные результаты
medium_thresholdБаланс точности и полноты
low_thresholdМаксимальный охват

2. LLM Selection

Выбор модели LLM для вспомогательных задач (HyDE, scoring).

ДействиеОписание
cheapБыстрая и дешевая модель
balancedБаланс скорости и качества
expensiveМаксимальное качество

3. Contextualization

Как подготовить результаты для агента.

ДействиеОписание
rawВернуть как есть
summarizeСуммировать через LLM

4. Proactivity

Уровень проактивности при поиске.

ДействиеОписание
passiveТолько явно запрошенные результаты
proactiveДополнительные предупреждения и связанные записи

Epsilon-greedy exploration

Роутер использует epsilon-greedy стратегию:

  • С вероятностью epsilon (по умолчанию 0.15) — случайный выбор действия (exploration)
  • С вероятностью 1 - epsilon — выбор лучшего действия по Q-таблице (exploitation)

Это обеспечивает баланс между использованием проверенных стратегий и исследованием новых.

Определение режима (Mode Detection)

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

РежимКлючевые словаПриоритет
debugbug, error, stack, trace, crash, fix, issue, panic1 (высший)
planplan, estimate, risk, assess, schedule, timeline2
architecturedesign, choose, structure, framework, pattern3
reviewreview, refactor, improve, clean, lint, optimize4
codingimplement, code, function, method, class, feature5
routineupdate, version, config, dependency, setup, init6 (низший)

Каждый режим имеет свои defaults для всех 4 уровней и определяет приоритет типов записей.

Feedback loop

Цикл обучения роутера:

  1. memory_search — роутер выбирает стратегию на основе Q-таблицы
  2. Результаты поиска возвращаются агенту, факт показа записывается в feedback_tracking
  3. memory_judge — агент оценивает полезность найденных записей
  4. Оценка передается роутеру как reward
  5. Q-таблица обновляется: Q(s,a) += alpha * (reward - Q(s,a))

Шкала оценки

ScoreИнтерпретация
0.8-1.0Напрямую решило проблему
0.5-0.7Полезный контекст
0.1-0.4Косвенно связано
нет judgeНеявный сигнал низкой полезности

Q-таблица

Хранится в SQLite таблице q_table:

CREATE TABLE q_table (
    router_level TEXT,    -- search, llm, context, proactivity
    state TEXT,           -- mode: debug, architecture, coding...
    action TEXT,          -- действие уровня
    value REAL,           -- Q-значение
    update_count INTEGER  -- количество обновлений
);

Параметр обучения alpha (по умолчанию 0.1) определяет скорость обучения. Чем больше update_count, тем стабильнее значение Q-таблицы.