Skip to content

b-on-g/RAGU

 
 

Repository files navigation

Балтийский Берег — Чатбот сервис-деска

Команда 10 из 10 | AI Business SPB Hackathon 2026

LLM-чатбот для сервис-деска ООО «ТД Балтийский Берег». Анализирует 104 000 исторических тикетов и 1 000 KB-статей из MSSQL-базы IntraService, отвечает на вопросы сотрудников.


Архитектура

┌─────────────┐     ┌──────────────────────┐     ┌──────────────┐
│  Frontend   │────▶│   FastAPI + RAGU     │────▶│  MSSQL       │
│  ($mol)     │     │   GraphRAG engine    │     │  104K tickets│
│  :9081      │     │   :8100              │     │  1K KB docs  │
└─────────────┘     └──────────────────────┘     └──────────────┘

3 Docker-сервиса:

  • mssql — Azure SQL Edge, восстановление дампа cleaned.bak
  • api — FastAPI + RAGU (Knowledge Graph + Vector Search), локальный embedder (sentence-transformers)
  • web — $mol фронтенд, брендированный чат

ETL-пайплайн: при первом запуске entrypoint.sh автоматически восстанавливает БД из бэкапа, извлекает тикеты и KB-статьи, строит Knowledge Graph и векторный индекс.


Быстрый старт

1. Скачайте дамп базы

curl -H "X-API-Key: YOUR_API_KEY" \
     https://data.ai-business-spb.ru/data/baltiyskiy-bereg/cleaned.bak \
     -o задание/cleaned.bak

2. Настройте .env

cp .env.example .env
# Укажите ваш API-ключ GitHub Models (или другой OpenAI-совместимый провайдер)

Пример .env:

LLM_API_KEY=github_pat_...
LLM_BASE_URL=https://models.github.ai/inference
LLM_MODEL=openai/gpt-4.1-mini
LLM_RPM=10
RAGU_STORAGE=ragu_data

Embedder локальный (sentence-transformers intfloat/multilingual-e5-small), API-ключ для эмбеддингов не нужен.

3. Запустите

docker compose up -d

Первый запуск займёт ~5-10 минут (восстановление БД + ETL + построение графа знаний).

4. Откройте чат


Структура проекта

├── server/
│   ├── main.py           # FastAPI: /api/query, /api/index, /api/config
│   └── entrypoint.sh     # Авто-восстановление БД + ETL при старте
├── etl/
│   ├── extract_and_index.py  # Извлечение из MSSQL → RAGU Knowledge Graph
│   └── local_embedder.py     # Локальный embedder (sentence-transformers)
├── front/app/
│   ├── app.view.tree     # UI-дерево ($mol)
│   ├── app.view.ts       # Логика чата
│   └── app.view.css.ts   # Стили
├── ragu/                 # RAGU — GraphRAG библиотека
├── docker-compose.yml    # 3 сервиса: mssql, api, web
├── Dockerfile            # Multi-stage: frontend + api
└── задание/              # Дамп БД и описание кейса

Ключевые таблицы БД

Таблица Назначение
Task ~104 000 тикетов: Name, Description, Comment (HTML Q&A thread)
KBDocument ~1 000 KB-статей: Name, Description (HTML)
Service, TaskType, Status, Priority Lookup-таблицы

Технологии

  • RAGU — GraphRAG (Knowledge Graph + Vector Search)
  • sentence-transformers — локальные эмбеддинги (intfloat/multilingual-e5-small, dim=384)
  • FastAPI — API-сервер
  • $mol — реактивный фронтенд
  • Azure SQL Edge — MSSQL-совместимая БД (ARM64/x64)
  • GitHub Models / OpenAI API — LLM для генерации ответов

About

Codebase for the implementaion of graph-rag system

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 66.8%
  • HTML 31.9%
  • Other 1.3%