Разделы документации
Платформа

Архитектура

Компоненты 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) избавляет от долгой переиндексации при восстановлении.