Состав системы и схемы установки
На этой странице описаны все компоненты AI-ассистента, их взаимосвязи, сетевые взаимодействия, зависимости и варианты размещения.
Диаграмма компонентов
Компоненты ассистента
AI-ассистент (LangGraph Assistant)
Это основной сервис, реализующий логику RAG-пайплайна, маршрутизацию вопросов, стриминг ответов, tool-calling (Platform API Tools) и управление сессиями.
Docker-образ ассистента собирается из Dockerfile на базе python:3.11-slim. Docker-образ устанавливает graphviz-dev, зависимости через uv и копирует код приложения.
Порт внутри контейнера |
Порт на хосте |
Протокол |Назначение |
|
|---|---|---|---|
80 |
8090 |
HTTP (SSE)|API ассистента (/stream, /feedback) |
|
Путь в контейнере |
Источник на хосте |
Назначение |
|---|---|---|
/app/clients.json |
./clients.json |
Файл с учётными данными клиентов для JWT-авторизации |
/app/settings.json |
./settings.json |
Runtime-настройки ассистента (в т.ч. параметры LLM) |
/hf_cache |
./hf_cache или ./dev/hf_cache |
Кэш моделей HuggingFace (эмбеддинги) |
Переменные окружения
Переменная |
Описание |
|---|---|
LLM_BASE_URL |
URL LLM-провайдера (OpenAI-совместимый API) |
LLM_API_KEY |
API-ключ для авторизации у LLM-провайдера |
USED_MODEL |
Имя используемой модели |
Переменные LLM_BASE_URL, LLM_API_KEY, USED_MODEL передаются из Платформы в endpoint ассистента и применяются для текущей конфигурации агента.
Переменные также могут быть заданы в env-файле или храниться в settings.json (volume /app/settings.json).
Переменная |
Описание |
|---|---|
DB_HOST |
Хост PostgreSQL с PGVector |
DB_PORT |
Порт PostgreSQL |
DB_NAME |
Имя базы данных |
DB_USER |
Пользователь БД |
DB_PASSWORD |
Пароль БД |
Переменная |
Описание |
|---|---|
CHECKPOINT_DB_HOST |
Хост PostgreSQL для checkpoint |
CHECKPOINT_DB_PORT |
Порт PostgreSQL |
CHECKPOINT_DB_NAME |
Имя базы данных |
CHECKPOINT_DB_USER |
Пользователь БД |
CHECKPOINT_DB_PASSWORD |
Пароль БД |
Переменная |
Описание |
|---|---|
DATASET_DB_HOST |
Хост PostgreSQL для Dataset DB |
DATASET_DB_PORT |
Порт PostgreSQL |
DATASET_DB_NAME |
Имя базы данных |
DATASET_DB_USER |
Пользователь БД |
DATASET_DB_PASSWORD |
Пароль БД |
Переменная |
Описание |
|---|---|
PHOENIX_ENDPOINT |
URL Phoenix для отправки трейсов |
PHOENIX_PROJECT_NAME |
Имя проекта в Phoenix |
Переменная |
Описание |
|---|---|
PLATFORM_API_TOOLS_ENABLED |
Включить Platform API Tools |
Переменная |
Описание |
Примечание |
|---|---|---|
AUTH_ENABLED |
Включает авторизацию (true / false) |
|
AUTH_MODE |
Режим авторизации: ASSISTANT, PLATFORM или DUAL |
Актуальна до модернизации JWT платформы |
AUTH_CLIENTS_FILE |
Путь к файлу с учётными данными клиентов (JSON) |
|
TLS_INSECURE |
Отключает проверку TLS-сертификатов (true / false) |
Переменная |
Описание |
|---|---|
DEFAULT_LANGUAGE |
Язык по умолчанию |
WELCOME_NODE_ENABLED |
Включает welcome-ноду (true / false) |
HF_HOME |
Путь к кэшу моделей HuggingFace |
Зависимости при старте:
Векторная БД (PGVector) должна быть доступна и содержать данные базы знаний.
Checkpoint DB должна быть доступна. Таблицы создаются автоматически при старте через PostgresSaver.setup().
LLM-провайдер должен быть доступен по параметрам, указанным на странице настройки ассистента.
Опциональные зависимости (могут быть недоступны без потери основной функциональности):
Dataset DB — для сохранения обратной связи: like, dislike.
Phoenix — для отправки трейсов.
Platform API — для Platform API Tools (при
PLATFORM_API_TOOLS_ENABLED=true).
Локальная БД (PostgreSQL + PGVector)
Локальная БД — единый контейнер PostgreSQL, обслуживающий две базы данных:
Векторная БД (PGVector) — используется для хранения документов базы знаний в виде векторных эмбеддингов для RAG-поиска;
Checkpoint DB — используется для хранения состояния сессий LangGraph — истории переписки.
Технологии:
PostgreSQL 16.9
Расширение pgvector 0.8.0
Docker-образ cобирается из dev/db/Dockerfile на базе postgres:16.9. Компилирует и устанавливает pgvector из исходников.
Порт внутри контейнера |
Порт на хосте |
Протокол |
Назначение |
|---|---|---|---|
5432 |
5433 |
TCP (PostgreSQL) |
Подключение к PostgreSQL |
Путь в контейнере |
Источник на хосте |
Назначение |
|---|---|---|
/var/lib/postgresql/data/ |
./dev/db/data или ./db/data |
Персистентное хранение данных PostgreSQL |
Переменная |
Описание |
|---|---|
POSTGRES_DB |
Имя основной БД (по умолчанию: rag) |
POSTGRES_USER |
Пользователь БД (по умолчанию: rag) |
POSTGRES_PASSWORD |
Пароль БД (по умолчанию: rag) |
Инициализация:
При первом запуске PostgreSQL создаёт основную БД (rag) с учётными данными из переменных окружения.
В Checkpoint DB таблицы создаются автоматически при старте ассистента через PostgresSaver.setup() — отдельная миграция не требуется.
В векторной БД данные загружаются Flyway-миграциями.
Flyway-миграции базы знаний
Контейнер, выполняющий миграции для инициализации и обновления данных в векторной БД — база знаний. Запускается один раз при развёртывании, после завершения миграций останавливается.
Технологии: Flyway (официальный Docker-образ flyway/flyway:latest)
Фактическая схема таблиц векторной базы знаний:
public.langchain_pg_collection
uuid (uuid, NOT NULL) — первичный ключ;
name (varchar, NOT NULL) — уникальное имя коллекции (UNIQUE);
cmetadata (json, NULL) — метаданные коллекции.
public.langchain_pg_embedding
id (varchar, NOT NULL) — первичный ключ;
collection_id (uuid, NULL) — внешний ключ → langchain_pg_collection.uuid (ON DELETE CASCADE);
embedding (vector, NULL) — вектор эмбеддинга;
document (varchar, NULL) — текст документа/чанка;
cmetadata (jsonb, NULL) — метаданные чанка;
индекс ix_cmetadata_gin (GIN, jsonb_path_ops) по cmetadata.
Dataset DB
Используется для хранения обратной связи пользователей (like/dislike/neutral) по ответам ассистента. Полученные данные используются для анализа качества.
Размещается на внешнем контуре (TantorLabs).
Технологии: PostgreSQL
Схема данных: Таблица dataset (создаётся Flyway-миграцией V1__Create_datasets_table.sql):
message_id, session_id — идентификаторы сообщения и сессии
user_message, assistant_message — тексты
span_id — корреляция с трейсами Phoenix
feedback — оценка (like / dislike / neutral)
start_time, end_time, created_at, updated_at
Сетевое взаимодействие: Ассистент → Dataset DB по протоколу PostgreSQL (TCP, порт 5432). Подключение настраивается через DATASET_DB_* переменные окружения.
Phoenix (трейсинг)
Используется для сбора, хранения и визуализации трейсов запросов к ассистенту, а также для отладки, мониторинга качества и анализа производительности.
Размещается на внешнем контуре (TantorLabs).
Технологии: Arize Phoenix, OpenTelemetry (OTLP)
Порт |
Протокол |
Назначение |
|---|---|---|
6006 |
HTTP |
UI Phoenix + приём трейсов (OTLP/HTTP) |
Сетевое взаимодействие: Ассистент → Phoenix по протоколу OTLP/HTTP (порт 6006). Подключение настраивается через PHOENIX_ENDPOINT.
LLM-провайдер
Ассистент использует языковую модель (LLM) для генерации ответов, классификации вопросов, извлечения ключевых слов и tool-calling.
Размещается на внешнем контуре.
Варианты подключения:
удалённый LLM-сервер Tantor — централизованный инференс-сервер;
локальный инференс-сервер — Ollama, vLLM или аналог, развёрнутый на контуре клиента или рядом;
публичный провайдер — OpenAI, z.ai, Claude и другие.
Протокол: OpenAI-совместимый API (HTTP/HTTPS). Подключение любого провайдера, поддерживающего этот API.
Сетевое взаимодействие: Ассистент → LLM-провайдер по HTTP/HTTPS. Подключение настраивается через следующие переменные:
LLM_BASE_URL— базовый URL API (например: http://127.0.0.1:11434/v1);
LLM_API_KEY— API-ключ для авторизации;
USED_MODEL— имя используемой модели.
Сетевые взаимодействия
Источник |
Назначение |
Протокол |
Порт |
Направление |
Обязательность |
|---|---|---|---|---|---|
Платформа UI |
AI-ассистент |
HTTP (SSE) |
8090 |
Клиент — Клиент |
Обязательно |
Платформа UI |
AI-ассистент |
HTTP/HTTPS (REST) |
8090 |
Клиент — Клиент |
Обязательно |
AI-ассистент |
Локальная БД |
PostgreSQL (TCP) |
5432 (5433 хост) |
Клиент — Клиент |
Обязательно |
AI-ассистент |
LLM-провайдер |
HTTP/HTTPS |
настраивается |
Клиент — Внешний |
Обязательно |
AI-ассистент |
Platform API |
HTTP/HTTPS |
настраивается |
Клиент — Клиент |
Опционально |
AI-ассистент |
Dataset DB |
PostgreSQL (TCP) |
5432 |
Клиент — Внешний |
Опционально |
AI-ассистент |
Phoenix |
HTTP (OTLP) |
6006 |
Клиент — Внешний |
Опционально |
Flyway-миграции |
Локальная БД |
PostgreSQL (TCP) |
5432 |
Клиент — Клиент |
При развёртывании |
Инициализация с нуля
При развёртывании системы с нуля происходит следующее:
PostgreSQL запускается и создаёт основную БД (rag) с пользователем из переменной
POSTGRES_USER/POSTGRES_PASSWORD.Flyway подключается к БД и выполняет SQL-миграции, которые выполняют следующие шаги:
создают расширение pgvector, если миграция содержит
CREATE EXTENSION vector;загружают данные базы знаний — чанки документов с эмбеддингами.
После старта AI-ассистент выполняет следующие шаги:
подключается к БД rag как к векторной БД через
DB_* переменные;подключается к той же БД rag как к checkpoint DB через
CHECKPOINT_DB_* переменные;Важно
Обе базы находятся в одном PostgreSQL-экземпляре.
вызывает PostgresSaver.setup(), который автоматически создаёт необходимые таблицы для checkpoint;
загружает модель эмбеддингов
intfloat/multilingual-e5-largeиз кэша/hf_cacheили скачивает из HuggingFace.
При развёртывании должны быть выполнены следующие условия:
volume /hf_cache должен содержать предзагруженную модель эмбеддингов или контейнер ассистента должен иметь доступ к HuggingFace для скачивания (~2.2 ГБ);
flyway-миграции должны содержать полный дамп базы знаний.
Конфигурация для контура клиента
При установке необходимо задать следующий набор переменных в env-файле:
# === Обязательные ===
# Локальная БД (обычно localhost внутри docker network) DB_HOST=postgres DB_PORT=5432 DB_NAME=rag DB_USER=rag DB_PASSWORD=<secure-password>
# Checkpoint DB (та же БД) CHECKPOINT_DB_HOST=postgres CHECKPOINT_DB_PORT=5432 CHECKPOINT_DB_NAME=rag CHECKPOINT_DB_USER=rag CHECKPOINT_DB_PASSWORD=<secure-password>
# Авторизация AUTH_ENABLED=true AUTH_MODE=PLATFORM AUTH_CLIENTS_FILE=/app/clients.json TLS_INSECURE=false
# === Опциональные (внешние сервисы) ===
# Dataset DB (TantorLabs) DATASET_DB_HOST=<dataset-db-host> DATASET_DB_PORT=5432 DATASET_DB_NAME=dataset DATASET_DB_USER=<user> DATASET_DB_PASSWORD=<password>
# Phoenix (TantorLabs) PHOENIX_ENDPOINT=http://<phoenix-host>:6006 PHOENIX_PROJECT_NAME=<client-name>
# Platform API Tools (если нужна работа с алертами и т.д.) PLATFORM_API_TOOLS_ENABLED=false
# Прочее DEFAULT_LANGUAGE=Russian WELCOME_NODE_ENABLED=true HF_HOME=/hf_cache
Настройка LLM:
LLM_BASE_URL,LLM_API_KEY,USED_MODELпередаются из Платформы в новый endpoint ассистента.Переменные можно указать в env-файле:
LLM_BASE_URL=http://<llm-host>:<port>/v1 LLM_API_KEY=<api-key> USED_MODEL=<model-name>
Чтобы сохранить значения между рестартами, используется settings.json (volume: /app/settings.json)