README.md
Rama main · réplica de lectura del repositorio original.
<div align="center">
<img src="assets/prostograf-logo.svg" alt="ПростоГраф" width="84" height="84">
# ПростоГраф
**Графовая RAG-система - для команд и отделов.**
[](LICENSE)
[](#-быстрый-старт)
[](https://github.com/HKUDS/LightRAG)
</div>
---
**ПростоГраф** — это самостоятельно размещаемая система «спроси по своим документам» на основе **графового 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 за основу.