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)
Роутер автоматически определяет режим работы агента по ключевым словам в запросе:
| Режим | Ключевые слова | Приоритет |
|---|---|---|
debug | bug, error, stack, trace, crash, fix, issue, panic | 1 (высший) |
plan | plan, estimate, risk, assess, schedule, timeline | 2 |
architecture | design, choose, structure, framework, pattern | 3 |
review | review, refactor, improve, clean, lint, optimize | 4 |
coding | implement, code, function, method, class, feature | 5 |
routine | update, version, config, dependency, setup, init | 6 (низший) |
Каждый режим имеет свои defaults для всех 4 уровней и определяет приоритет типов записей.
Feedback loop
Цикл обучения роутера:
- memory_search — роутер выбирает стратегию на основе Q-таблицы
- Результаты поиска возвращаются агенту, факт показа записывается в
feedback_tracking - memory_judge — агент оценивает полезность найденных записей
- Оценка передается роутеру как reward
- 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-таблицы.