Разделы документации
Архитектура
Компоненты Charo, как они связаны, требования к ресурсам и масштабирование под растущий корпус.
Компоненты
Charo разворачивается Docker Compose-стеком; все компоненты — отдельные контейнеры в общей сети:
| Компонент | Назначение |
|---|---|
| Веб-интерфейс | интерфейс чата и админки |
| API-сервер | бизнес-логика: чаты, поиск, управление коннекторами |
| Фоновые воркеры | индексация, синхронизация прав, очистка устаревших документов |
| PostgreSQL | пользователи, чаты, настройки, метаданные документов |
| Redis | очереди фоновых задач и кэш |
| Qdrant | векторное хранилище: эмбеддинги и текст фрагментов |
| Модельные серверы (2) | локальный инференс эмбеддингов: отдельный экземпляр для запросов и для индексации |
| Файловое хранилище (MinIO) | загруженные файлы и извлечённые изображения |
| Интерпретатор кода | изолированное выполнение кода для одноимённого инструмента |
| Обратный прокси (Caddy) | единая входная точка HTTP |
Наружу открывается только обратный прокси; остальные компоненты общаются по внутренней сети Docker.
Как проходят данные
Индексация: воркер забирает документы из источника через коннектор → разбивает на фрагменты → модельный сервер считает эмбеддинги → фрагменты и векторы записываются в Qdrant, метаданные — в PostgreSQL. Подробно по шагам — «Потоки данных».
Ответ на вопрос: API-сервер выполняет гибридный поиск по Qdrant (векторный
- по ключевым словам) → собранный контекст уходит в языковую модель → ответ со ссылками на источники возвращается в веб-интерфейс.
Требования к ресурсам
Отправная точка для одной машины — в быстром старте: 4 vCPU / 16 ГБ ОЗУ / 50 ГБ SSD. Что расходует ресурсы:
- Память — Qdrant держит векторный индекс в памяти: потребление растёт с числом проиндексированных фрагментов.
- CPU — эмбеддинги на модельных серверах. При активной индексации нагрузка длительная; GPU не обязателен, но заметно ускоряет индексацию.
- Диск — PostgreSQL, Qdrant и файловое хранилище растут с корпусом; следите за свободным местом — переполнение диска останавливает индексацию.
Масштабирование
- Вертикально (первый шаг): больше ОЗУ для Qdrant, больше CPU/GPU для модельных серверов.
- Вынос компонентов: PostgreSQL, Qdrant и модельные серверы можно вынести на отдельные машины — адреса задаются переменными окружения в конфигурации Compose.
Для инсталляций на сотни активных пользователей напишите в поддержку — поможем подобрать конфигурацию.
Отказоустойчивость и резервные копии
Состояние системы — это PostgreSQL, файловое хранилище (MinIO) и Qdrant. Векторный индекс восстанавливается переиндексацией, поэтому минимально достаточная резервная копия — тома PostgreSQL и файлового хранилища; полная копия (с томом Qdrant) избавляет от долгой переиндексации при восстановлении.