Дорожная карта: Ollama ↔ PostgreSQL
Как подключить локальную Ollama к базе PostgreSQL так, чтобы ответы строились на фактах из задач/проектов.
Глоссарий терминов
Короткие определения, чтобы команда говорила на одном языке.
Views (витрины)
Упрощённые представления в PostgreSQL, где поля и связи сделаны удобными для аналитики и для LLM.
Curated data
Подготовленные данные: нормализованные статусы/даты/связи, без лишних и опасных полей.
Tools
Набор разрешённых функций/эндпоинтов, которые ходят в БД и возвращают JSON (вместо того, чтобы модель писала SQL сама).
Allowlist
Белый список разрешённых операций и параметров. Всё остальное запрещено.
RAG
Подстановка в контекст правил/терминов/регламентов из базы знаний. Оперативные цифры берутся из БД через tools.
RBAC
Права доступа: модель видит только те проекты/задачи, которые разрешены пользователю по сессии.
Eval (golden set)
Набор тестовых вопросов и эталонных ответов/агрегатов для контроля качества и регрессии.
SLA/Latency
Целевые показатели времени ответа и доступности (например, 95-й перцентиль времени ответа).
Шаг 0
Слой данных для LLM (витрины/views)
2–5 дней
Что сделать
- Сделать набор curated views (упрощённые представления) вместо сырых таблиц.
- Стабилизировать статусы/даты/связи (Task ↔ Project ↔ Assignee).
- Добавить словарь данных: описание полей и смысл KPI/метрик.
Результат
- Views для аналитики (например: v_tasks, v_projects, v_overdue_tasks, v_status_daily).
- Чёткие правила трактовки статусов и расчёта метрик.
Инструменты
- PostgreSQL
- Views / materialized views
- Prisma schema (как источник структуры)
Безопасность
- Read-only роль для чтения витрин
- Логи/аудит запросов (по возможности)
Шаг 1
Инструменты (tools) вместо “модель пишет SQL”
3–7 дней
Что сделать
- Реализовать allowlist функций: projectProgress, overdueTasks, tasksByStatus, assigneeLoad и т.д.
- Каждой функции — строгую валидацию параметров и лимиты результата (limit/timeouts).
- Единый формат JSON-ответов (чтобы модель не путалась).
Результат
- Набор безопасных API-инструментов, которые достают факты из PostgreSQL.
- Стабильные цифры/агрегаты без “аналитики из воздуха”.
Инструменты
- Next.js Route Handlers
- Prisma
- Zod (валидация, опционально)
Безопасность
- Rate limiting
- Timeouts
- Запрет опасных операций (только read)
Шаг 2
Цикл ответа: вопрос → tool → ответ
2–6 дней
Что сделать
- Обновить серверный `/api/ai/chat`, чтобы модель могла запрашивать инструменты (или сервер сам подставлял данные).
- Добавить системные правила: кратко, честный отказ вне задач/проектов, ссылки на источники (ID).
- Привязать доступ к данным к сессии пользователя (RBAC).
Результат
- Модель отвечает на основе фактов из БД, а не на “памяти”.
- Снижение галлюцинаций, стабильная аналитика, контролируемые ответы.
Инструменты
- ollama-js
- Ollama локально
- Next.js API routes
Безопасность
- RBAC (видимость проектов/задач)
- Скрытие полей (PII/финансы)
Шаг 3
RAG для правил/терминов (не для оперативных цифр)
4–10 дней
Что сделать
- Сложить в базу знаний: словарь полей, определения KPI, регламенты, примеры корректных интерпретаций.
- Настроить эмбеддинги и поиск, чтобы подставлять релевантные правила в контекст.
- Указывать источники: какие документы/правила использованы.
Результат
- Ассистент правильно трактует поля и метрики, отвечает “по регламенту”.
- Менять правила можно без переобучения модели.
Инструменты
- pgvector или Qdrant
- Embeddings модель
- ETL из docs/wiki
Безопасность
- Санитизация документов
- Контроль доступа к базе знаний
Шаг 4
Качество (eval) и эксплуатация
1–2 недели
Что сделать
- Собрать golden set вопросов (20–100) + эталонные ответы/SQL-агрегаты.
- Сделать автопрогон: краткость, корректность, отказ на нерелевантное, время ответа.
- Добавить мониторинг latency/ошибок и фидбек в UI (полезно/неполезно).
Результат
- Понимание, что ассистент отвечает правильно и безопасно.
- Регресс-контроль при изменениях БД/витрин/моделей/промптов.
Инструменты
- Playwright (UI)
- Скрипты eval
- Monitoring
Безопасность
- Red-team вопросы (зарплаты/персональные данные/финансы)
- Логи без секретов
Что получим на выходе
Итоговый результат внедрения подключения к базе.
- Ассистент в Task.Log, который отвечает на основе фактов из PostgreSQL, а не “памяти”.
- Набор витрин (views) и словарь данных, пригодные для аналитики и LLM.
- Allowlist инструментов (tools) с валидацией, лимитами, таймаутами и форматами JSON.
- RBAC: ответы ограничены правами пользователя (видимость задач/проектов).
- Контур качества: golden set, автопрогоны, мониторинг latency/ошибок, red-team вопросы.
- Платформа для расширения источников (MES/ERP/SCADA) по мере готовности и риск-оценки.