Установка и эксплуатация

Документ содержит сведения, необходимые для установки и эксплуатации программы «Парсвайс» в инфраструктуре заказчика: состав поставки, требования к среде, настройку, порядок установки и эксплуатации.

1. Комплект поставки

СоставляющаяСодержание
Образ серверасервер программного интерфейса, обработчик очередей и планировщик задач: один образ, запускаемый тремя отдельными развёртываниями с разными командами запуска
Образ панели управлениявеб-интерфейс сотрудников и администраторов проекта
Образ сервиса векторизациисервер инференса с моделью векторизации deepvk/USER-bge-m3 (размерность вектора 1024), встроенной в образ; из этого образа запускаются два пула — для индексации и для поисковых запросов
Виджетстатический бандл widget.iife.js и widget.css для размещения на сайте или в личном кабинете
Манифесты Kubernetesразвёртывания, сервисы, маршрутизация, автомасштабирование, шаблоны секретов
Документациянастоящий документ, Функциональные характеристики, Руководство пользователя и администратора

Образы передаются архивом OCI для загрузки в реестр заказчика либо через реестр образов правообладателя.

Образы собираются из зеркал правообладателя: базовые образы, пакеты Python и пакеты npm при сборке не загружаются из публичных репозиториев. Для обработки аудио и видео в образ сервера входит ffmpeg из дистрибутива Debian. Модель векторизации при установке и запуске не загружается. Процессы в контейнерах сервера и панели управления работают от непривилегированного пользователя.

2. Требования к среде

КомпонентТребование
ОркестраторKubernetes; программа эксплуатируется на версии 1.32. Манифесты используют API apps/v1, autoscaling/v2, networking.k8s.io/v1
Узлыархитектура x86-64 (linux/amd64); компоненты поставляются контейнерами
Сервер метриксервер метрик Kubernetes — автомасштабирование работает по загрузке CPU и памяти подов
Реестр образовOCI-совместимый, доступен из кластера
Входной контроллерingress-nginx или аналог: TLS, маршрутизация по доменным именам, лимит тела запроса не менее 100 МиБ, таймауты соединения, отправки и чтения не менее 300 с — ответ ассистента передаётся потоком
PostgreSQLдве базы: основная и векторная; программа эксплуатируется на PostgreSQL 15
pgvectorрасширение в векторной базе: должен быть доступен тип vector; программа создаёт индексы IVFFlat
Redisброкер очередей и кеш; программа эксплуатируется на Valkey 7.2, совместимом с Redis
Объектное хранилищеS3-совместимое, один бакет
Языковая модельразмещается заказчиком, OpenAI-совместимый программный интерфейс — например, vLLM
Доступ в Интернетне требуется при размещении языковой модели в контуре заказчика. Исключение — распознавание речи в аудио и видео: оно выполняется облачным сервисом Yandex SpeechKit и требует доступа к нему; без него файлы сохраняются, но речь из них не извлекается

Каждый под сервера и обработчика очередей открывает до 40 подключений к PostgreSQL. При большом числе реплик рекомендуется пул соединений, например PgBouncer или Odyssey.

Вычислительные ресурсы

КомпонентРепликиЗапрос CPU / RAMЛимит CPU / RAMАвтомасштабирование
Сервер программного интерфейса1–10500m / 512Mi2000m / 2GiCPU 70%, память 80%
Обработчик очередей4–10500m / 1Gi2000m / 4GiCPU 70%, память 80%
Планировщик задачровно 150m / 128Mi200m / 256Miнет
Векторизация, индексация2–61000m / 2.5Gi4000m / 4GiCPU 70%
Векторизация, запросы2–6500m / 2.5Gi2000m / 4GiCPU 70%
Панель управления1–10200m / 256Mi1000m / 1GiCPU 70%

Сумма запросов ресурсов без системных компонентов Kubernetes: около 5,8 vCPU и 14,9 ГиБ памяти при минимальном числе реплик, около 21,1 vCPU и 47,6 ГиБ при максимальном. Узел должен вмещать под векторизации с запросом памяти 2,5 ГиБ.

Конфигурация, на которой программа эксплуатируется правообладателем: 4–10 узлов по 4 vCPU и 8 ГиБ с автоматическим добавлением узлов; основная и векторная базы — отдельные кластеры PostgreSQL 15 по 2 vCPU и 8 ГиБ с диском 20 ГиБ и автоматическим увеличением до 64 ГиБ; Valkey 7.2 — 2 vCPU и 4 ГиБ.

3. Настройка

Параметры сервера, обработчика очередей и планировщика задаются переменными окружения из секретов Kubernetes. Все три развёртывания получают одинаковые параметры подключения к базам, Redis и объектному хранилищу.

Обязательные

ПараметрНазначение
DATABASE_URLосновная база PostgreSQL
VECTOR_DATABASE_URLвекторная база с pgvector. Без этого параметра векторное хранилище не запускается: подстановка основной базы намеренно запрещена
REDIS_URLброкер очередей и кеш
SECRET_KEYключ подписи токенов сессии
R2_ENDPOINT, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, R2_BUCKET, R2_PUBLIC_URLобъектное хранилище: адрес, ключи доступа, бакет и публичный адрес файлов. Имена параметров исторические, подходит любое S3-совместимое хранилище
DOCS_USERNAME, DOCS_PASSWORDлогин и пароль доступа к документации программного интерфейса по адресу /v1/docs
FRONTEND_URLадрес панели управления заказчика; используется в ссылках писем

Языковая модель

ПараметрЗначение
LLM_SERVICEopenai — любая модель с OpenAI-совместимым интерфейсом
LLM_BASE_URLадрес модели заказчика, например http://llm.internal:8000/v1
LLM_MODELимя модели. Без LLM_BASE_URL и LLM_MODEL подключение к модели не инициализируется
OPENAI_API_KEYключ доступа к модели, если сервер модели его требует; необязательно
LLM_MODEL_QUERYотдельная модель для переформулировки поискового запроса; необязательно, по умолчанию используется LLM_MODEL

Векторизация

ПараметрНазначение
LOCAL_EMBEDDING_URLадрес сервиса векторизации для индексации
QUERY_EMBEDDING_URLадрес пула векторизации для поисковых запросов; если не задан, используется LOCAL_EMBEDDING_URL

Необязательные

ПараметрНазначение
SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD, SMTP_USE_TLS, SMTP_START_TLS, EMAIL_FROMпочтовый сервер для писем с кодом подтверждения адреса, восстановлением пароля и приглашениями в проект
MAX_UPLOAD_SIZEпредельный размер файла, скачиваемого из источника по ссылке, в байтах; по умолчанию 100 МиБ
INGRESS_LB_IPвнешний адрес входного контроллера; показывается в подсказках по настройке DNS при подключении собственного домена проекта
YANDEX_SPEECHKIT_API_KEY, YANDEX_SPEECHKIT_FOLDER_ID, SPEECH_LANGUAGESраспознавание речи в аудио и видео через Yandex SpeechKit и языки распознавания

Панель управления и виджет

КомпонентКак задаётся адрес сервера программного интерфейса
Панель управленияпеременная окружения контейнера PARSEWISE_API_URL, читается при запуске; без неё используется адрес, заданный при сборке
Виджетпараметр apiUrl в window.ParsewiseConfig на странице, вместе с идентификатором проекта shopId

Одна и та же сборка панели управления и виджета работает в любой установке: пересобирать их под адрес заказчика не нужно.

4. Установка

  1. Подготовить PostgreSQL: основную и векторную базы. В векторной базе должен быть доступен тип vector. Если его нет, программа выполняет CREATE EXTENSION IF NOT EXISTS vector; если у роли приложения нет такого права, администратор базы выполняет CREATE EXTENSION vector заранее.
  2. Подготовить Redis и бакет S3-совместимого объектного хранилища.
  3. Загрузить образы в реестр, доступный кластеру, и указать их адреса в манифестах.
  4. Создать пространство имён и секреты с параметрами из раздела 3.
  5. Указать в манифесте маршрутизации доменные имена программного интерфейса и панели управления, настроить TLS.
  6. Применить манифесты. При запуске сервер создаёт недостающие таблицы основной базы и применяет миграции, входящие в образ; векторное хранилище создаёт свои таблицы и индексы.
  7. Разместить файлы виджета на статическом сервере или в объектном хранилище заказчика.
  8. Проверить установку:
    • все поды в состоянии готовности; поды векторизации загружают модель до трёх минут;
    • запрос GET /v1/public/health к серверу программного интерфейса возвращает {"status": "ok"};
    • в журнале сервера есть строка Alembic migrations applied (head reached) и нет сообщений Alembic upgrade failed и ошибок pgvector.

5. Начало работы

  1. Войти в панель управления и создать проект.
  2. Настроить персону ассистента: имя, аватар и правила ответов.
  3. Наполнить базу знаний: загрузить файлы, импортировать товары или профили из файла либо подключить источник по ссылке.
  4. Пригласить участников команды и назначить роли.
  5. Подключить виджет на страницы сайта или личного кабинета:
<script>
  window.ParsewiseConfig = {
    shopId: "ИДЕНТИФИКАТОР_ПРОЕКТА",
    apiUrl: "https://АДРЕС_СЕРВЕРА_API",
  };
</script>
<script async src="https://АДРЕС_СТАТИКИ/widget.iife.js"></script>

Подробный порядок работы в панели управления — в Руководстве пользователя и администратора.

6. Эксплуатация

ЗадачаПорядок
Резервное копированиевыполняет заказчик: основная и векторная базы PostgreSQL, объектное хранилище
Мониторингсостояние подов и журналы средствами кластера. Проверки состояния: сервер — GET / на порту 8000, панель управления — GET / на порту 3000, векторизация — GET /health на порту 8080, обработчик очередей — команда celery inspect ping
Масштабированиеавтоматическое, в пределах, указанных в таблице ресурсов. Планировщик задач запускается строго в одном экземпляре
Обновлениезаказчик разворачивает новую версию образов по своему решению; схема основной базы обновляется миграциями при запуске сервера
ПоддержкаТехническая поддержка
НАЧНИТЕ

Проверьте на своих данных

Загрузите свои документы и каталог — и задайте ассистенту те вопросы, которые задают вам. Это единственная проверка, которая что-то значит.