Состав системы и схемы установки
На этой странице описаны все компоненты 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-совместимый эндпоинт. Пример: http://localhost:11434/v1 для Ollama. |
LLM_API_KEY |
строка |
— |
API-ключ для доступа к LLM. Если |
USED_MODEL |
строка |
— |
Имя используемой модели. Например, |
LLM_REQUEST_TIMEOUT_SECONDS |
int |
100 |
Таймаут одного запроса к LLM в секундах. |
LLM_MAX_RETRIES |
int |
2 |
Максимальное число повторных попыток при ошибке запроса к LLM. |
LLM_USE_RESPONSES_API |
bool |
false |
Выбор OpenAI-эндпоинта. Если значение Если значение |
LLM_SAMPLING_PARAMS_ENABLED |
bool |
true |
Включает передачу sampling-параметров: Если значение |
LLM_TEMPERATURE |
float |
0.1 |
Температура сэмплинга. Чем ниже значение, тем более детерминированными будут ответы модели. Применяется, если |
LLM_FREQUENCY_PENALTY |
float |
0.2 |
Штраф за повторение часто встречающихся токенов. |
LLM_PRESENCE_PENALTY |
float |
0.1 |
Штраф за появление уже использованных токенов. |
Переменные передаются из Платформы в эндпоинт ассистента и применяются для текущей конфигурации агента.
Переменные также могут быть заданы в env-файле или храниться в settings.json (volume /app/settings.json).
Переменная |
Описание |
|---|---|
PHOENIX_ENDPOINT |
URL Phoenix для отправки трейсов |
PHOENIX_PROJECT_NAME |
Имя проекта в Phoenix |
Переменная |
Тип |
По умолчанию |
Назначение |
|---|---|---|---|
RUN_TRACE_ENABLED |
bool |
true |
Включает запись пошаговых трейсов запусков. Трейсы хранятся локально в CHECKPOINT_DB. |
RUN_TRACE_MAX_ROWS |
int |
1000 |
Лимит количества хранимых трейсов. |
RUN_TRACE_MAX_AGE_DAYS |
int |
30 |
Срок хранения трейсов в днях. |
Локальная БД (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) с учётными данными из переменных окружения.
В векторной БД данные загружаются Flyway-миграциями.
Phoenix (трейсинг)
Размещается на внешнем контуре (TantorLabs).
Сетевое взаимодействие: Ассистент → 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».
Сетевые взаимодействия
Источник |
Назначение |
Протокол |
Порт |
Направление |
Обязательность |
|---|---|---|---|---|---|
Платформа 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-ассистент |
Phoenix |
HTTP (OTLP) |
6006 |
Клиент — Внешний |
Опционально |
Flyway-миграции |
Локальная БД |
PostgreSQL (TCP) |
5432 |
Клиент — Клиент |
При развёртывании |
Инициализация с нуля
При развёртывании volume /hf_cache должен содержать предзагруженную модель эмбеддингов или контейнер ассистента должен иметь доступ к HuggingFace для скачивания (~2.2 ГБ).
Конфигурация
В процессе установки инсталлятор инициализирует и использует следующие переменные:
# === Обязательные ===
# Локальная БД (обычно 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