✦ модель

pgctl-v2

Специализированная модель для аудита PostgreSQL. Небольшая, быстрая, работает на одной потребительской видеокарте — и при этом отдаёт строгий, проверяемый результат: критичность, доказательства с числами, расчёты и конкретные действия.

База
Qwen2.5-3B-Instruct
4-bit квантование
Дообучение
QLoRA
на одной NVIDIA RTX 3060 12 ГБ
Обучающих примеров
~4 600
4 слоя данных в финальном миксе
Инференс
Локально, на той же GPU
данные не покидают периметр

Контракт вывода

Модель не пишет «эссе». Каждый ответ — структура, которую можно проверить и по которой можно действовать:

  • severityinfo / warning / critical — сбалансировано: не паникует на норме, ловит действительно опасное
  • evidenceметрики с единицами измерения — реальные числа из снапшота, не выдуманные
  • calculationsформулы расчёта, по которым сделан вывод
  • reasoningпричинно-следственная цепочка — почему это проблема
  • recommendationsконкретные действия: VACUUM, terminate_backend, изменение параметра — без галлюцинаций GUC
Пороги настраиваются — передаются в запросе, а не зашиты в модель. Один и тот же аудит под разную нагрузку и SLA.
{
  "task": "alert_analysis",
  "thresholds": {"long_tx_sec": 120, "dead_pct": 20},
  "alert": {
    "kind": "long_transaction",
    "details": {"pid": 3980, "sec": 372, "state": "idle in transaction"}
  },
  "stats": { "sessions": [...], "locks": [...], "queries": [...] }
}

→

{
  "severity": "critical",
  "evidence": [{"metric": "xact_age", "value": 372, "unit": "s"},
               {"metric": "blocked_by_pid", "value": 7}],
  "calculations": ["372 / 120 = 3.1x порога"],
  "reasoning": "idle in transaction держит блокировку на orders;
                7 сессий в очереди — каскад",
  "recommendations": [
    {"action": "terminate_backend", "pid": 3980},
    {"action": "set_parameter",
     "name": "idle_in_transaction_session_timeout",
     "suggested_value": "5min"}
  ]
}

На чём обучена: четыре слоя данных

~4 600 примеров в финальном миксе. Каждый слой закрывает свою способность — от знания предметной области до работы с реальным форматом агента.

pg_senior

~2 800

Знания PostgreSQL 18: параметры конфигурации, системные представления, wait events, пороговые значения. Фундамент — «что означает эта метрика и когда это плохо».

pg_reasoning

117 × 4

Причинно-следственные цепочки и диагностические деревья: от симптома к корню. Учит модель рассуждать, а не подбирать похожие ответы.

pg_log_investigation

~400 × 2

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

Собственный генератор

272 × 3

Реальный формат снапшота и алерта нашего агента + детерминированные эталоны с правильными действиями (VACUUM, terminate_backend). Оба режима — audit и alert, 7 сценариев с балансом критичности. Именно этот слой делает модель «своей» для DBAigent.

Что умеет

✓Читает реальный снапшот агента и возвращает корректный JSON-аудит
✓Правильные действия и рекомендации — без выдуманных параметров на аудите
✓Баланс критичности: не паникует на норме, ловит critical
✓Анализ конкретного алерта + свободные объяснения в чате
✓Валидный JSON, evidence с реальными числами, формулы расчёта
✓Работает на одной RTX 3060 — без облака и внешних API