ПростоГраф # ПростоГраф **Графовая RAG-система - для команд и отделов.** [![License: MIT](https://img.shields.io/badge/License-MIT-orange.svg)](LICENSE) [![Docker Compose](https://img.shields.io/badge/Docker-Compose-2496ED?logo=docker&logoColor=white)](#-быстрый-старт) [![Based on LightRAG](https://img.shields.io/badge/based%20on-LightRAG-7c3aed)](https://github.com/HKUDS/LightRAG)
--- **ПростоГраф** — это самостоятельно размещаемая система «спроси по своим документам» на основе **графового RAG**. По сути глубокий форк LightRAG, точнее от него остался только движок самого графа. Сверху сделана полноценная обвязка, с отдельными страницами администраторов и пользователей, разграничение по отделам, системой сбора обратной связи, небольшую кастомизацию страницы входа и прочее. > Форк [HKUDS/LightRAG](https://github.com/HKUDS/LightRAG): добавлены обязательный вход, роли admin/user, отделы с ACL документов, серверная история чатов с оценками, общий промпт оператора, тестирование провайдеров и русификация интерфейса. ## ✨ Возможности - 🧠 **Графовый RAG** — граф знаний + векторный поиск; режимы `naive` / `local` / `global` / `hybrid` / `mix`. - 👥 **Многопользовательский режим** — обязательный вход (JWT), роли **admin** / **user**, отделы. - 🔒 **Разграничение доступа к документам (ACL)** — запрещённый отделу документ физически не попадёт в ответ пользователю. - 💬 **Чат с историей и оценками** — серверные диалоги, 👍/👎 с причиной, статистика и фильтры в админке. - 🧩 **Любой OpenAI-совместимый провайдер** — OpenRouter, DeepSeek, OpenAI, vLLM / Groq / Together / Mistral, а также локальные **Ollama** и **LM Studio**. Реранкер (Cohere / Jina / Aliyun) — опционально. - 🧪 **Тестирование провайдеров** — кнопка проверяет доступность LLM / эмбеддингов / реранкера и показывает код ответа и задержку. - 📄 **Документы PDF / DOCX / XLSX** и др. — из коробки (pypdf / python-docx / openpyxl); опциональный OCR через MinerU / Docling. - 🎨 **Брендинг** — название, описание страницы входа и заголовок вкладки настраиваются в админке. ## 🚀 Быстрый старт Нужен только **Docker** + **Docker Compose**. ```bash git clone https://github.com/Denis-ya-32/prostograf.git cd prostograf cp .env.example .env # ключи можно вписать сюда или позже в веб-интерфейсе docker compose up -d --build # первая сборка ~2–4 мин (дольше при первой загрузке базовых образов) ``` > 💡 **Windows (PowerShell):** вместо `cp .env.example .env` выполните `Copy-Item .env.example .env`. Откройте **http://localhost:9621/webui** и войдите как **`admin` / `admin`**. Дальше: 1. **Сразу смените пароль `admin`** (админка → пользователи). 2. **Настройки → Провайдеры** — укажите ключ и модель LLM и эмбеддингов (или впишите в `.env`). Нажмите **Тестирование**, чтобы проверить доступность. 3. Загрузите документы → дождитесь индексации → задавайте вопросы во вкладке **Чат**. > ⚠️ Модель эмбеддингов нельзя менять после первой индексации — иначе ранее построенные векторы станут несовместимы. ## 🔧 Конфигурация | Переменная | Назначение | |---|---| | `LLM_BINDING_HOST` / `LLM_MODEL` / `LLM_BINDING_API_KEY` | Языковая модель (любой OpenAI-совместимый эндпоинт) | | `EMBEDDING_*` | Сервис эмбеддингов (фиксируется после первой индексации) | | `RERANK_BINDING` | Реранкер: `null` (выкл) / `cohere` / `jina` / `aliyun` | | `SUMMARY_LANGUAGE` | Язык извлечения и ответов (по умолчанию `Русский`) | | `LIGHTRAG_*_STORAGE` | Бэкенды хранилищ (KV / Vector / Graph / DocStatus) | Полный справочник **всех** переменных — в [`env.example`](env.example) (большой файл-референс; не путать с компактным `.env.example`, который копируется для запуска). Бóльшую часть провайдеров можно настроить прямо в веб-интерфейсе (**Настройки → Провайдеры**), без правки `.env`. ### Режимы запроса - **naive** — простой векторный поиск по фрагментам (без графа). - **local** — окрестность конкретных сущностей. - **global** — обзорные связи и темы по всему графу. - **hybrid** — local + global. - **mix** — граф и вектор вместе (рекомендуется, особенно с реранкером). ### Парсинг документов По умолчанию `.docx` обрабатывает нативный парсер, остальное (`.pdf`, `.xlsx`, `.txt`, `.md`, `.html`, `.csv`…) — legacy (pypdf / openpyxl / python-docx). **Текстовые PDF работают сразу.** Для **сканов и изображений нужен OCR** — поднимите [MinerU](https://github.com/opendatalab/MinerU) или [Docling](https://github.com/docling-project/docling), укажите их эндпоинты в `.env` и добавьте движок в `LIGHTRAG_PARSER`. ## 🛡️ Чеклист для прода - Смените пароль **admin** (по умолчанию `admin/admin`). - Поставьте за **HTTPS**-реверс-прокси; не публикуйте порт наружу напрямую. - Бэкапьте том данных `./data` (`users.db`, `chats.db`, `rag_storage/`, `jwt_secret.txt`). ## 🧱 Технологии FastAPI · React 19 + Vite + Tailwind · граф NetworkX · вектор NanoVectorDB · SQLite (пользователи и чаты) · Docker. ## 📜 Лицензия и благодарности Распространяется под лицензией **MIT** — см. [LICENSE](LICENSE). Построено на [HKUDS/LightRAG](https://github.com/HKUDS/LightRAG) (MIT). Спасибо команде LightRAG за основу.