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

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

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

СоставляющаяСодержание
Образ серверасервер программного интерфейса, обработчик очередей и планировщик задач: один образ, запускаемый тремя отдельными развёртываниями с разными командами запуска
Образ панели управлениявеб-интерфейс сотрудников и администраторов проекта
Образ сервиса векторизациисервер инференса с моделью векторизации deepvk/USER-bge-m3 (размерность вектора 1024), встроенной в образ; из этого образа запускаются два пула — для индексации и для поисковых запросов
Виджетстатический бандл widget.iife.js и widget.css для размещения на сайте или в личном кабинете
Манифесты Kubernetesфайлы репозитория k8s: manifests/00-namespace.yaml, 02-backend.yaml, 02a-embedder-index.yaml, 02b-embedder-query.yaml, 03-celery.yaml, 03a-backend-domains-rbac.yaml, 04-admin-frontend.yaml, 06-ingress.yaml, 06a-ingress-shops.yaml и шаблон секретов docs/secrets-template.yaml: развёртывания, сервисы, маршрутизация, автомасштабирование; учётная запись и права обработчика очередей для подключения собственных доменов проектов
Документациянастоящий документ, Функциональные характеристики, Руководство пользователя и администратора

Перед применением манифестов заказчик заменяет в них адреса образов на версии из реестра поставки и доменные имена на свои, а также удаляет параметры сервисов, которые не использует: приём платежей через Robokassa, Яндекс Метрику. Манифесты маркетингового сайта, документации и мониторинга в поставку не входят.

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

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

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

КомпонентТребование
ОркестраторKubernetes; программа эксплуатируется на версии 1.32. Манифесты используют API apps/v1, autoscaling/v2, networking.k8s.io/v1, rbac.authorization.k8s.io/v1
Узлыархитектура x86-64 (linux/amd64); компоненты поставляются контейнерами и не требуют привилегий на узле: без привилегированного режима, доступа к файловой системе и сети узла. Операционная система узлов — Linux с контейнерным рантаймом, поддерживаемым Kubernetes, в том числе Astra Linux Special Edition 1.8, РЕД ОС 8 и ALT Linux
Сервер метриксервер метрик Kubernetes — автомасштабирование работает по загрузке CPU и памяти подов
Реестр образовOCI-совместимый, доступен из кластера
Входной контроллерingress-nginx или аналог: TLS, маршрутизация по доменным именам, лимит тела запроса не менее 100 МБ, таймауты соединения, отправки и чтения не менее 300 с — ответ ассистента передаётся потоком
Сертификаты TLSвыпускаются cert-manager для входного контроллера по ClusterIssuer, который выбирает заказчик, в том числе по внутреннему удостоверяющему центру заказчика; в облачной установке правообладатель использует публичный удостоверяющий центр
PostgreSQLдве базы: основная и векторная; программа эксплуатируется на PostgreSQL 15
pgvectorрасширение в векторной базе: должен быть доступен тип vector; программа создаёт индексы IVFFlat
Redisброкер очередей и кеш; программа эксплуатируется на Valkey 7.2, совместимом с Redis
Объектное хранилищеS3-совместимое, один бакет
Языковая модельразмещается заказчиком, OpenAI-совместимый программный интерфейс — например, vLLM
Доступ в Интернетне требуется при размещении языковой модели в контуре заказчика, за исключением распознавания речи в аудио и видео (Yandex SpeechKit) и входа через Яндекс ID и VK ID, если эти функции включены. Без доступа к 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адрес панели управления заказчика; используется в ссылках писем
EMAIL_FROMадрес отправителя писем
SHOPS_DOMAINдомен адресов проектов вида проект.домен; используется в адресах проектов и при проверке хоста корпоративного входа (SSO)
INGRESS_LB_IPвнешний адрес входного контроллера; показывается в подсказках по настройке DNS при подключении собственного домена проекта

Параметры FRONTEND_URL, EMAIL_FROM, SHOPS_DOMAIN и INGRESS_LB_IP имеют значения по умолчанию, указывающие на облачную установку правообладателя, поэтому в установке заказчика их необходимо задать.

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

ПараметрЗначение
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почтовый сервер для писем с кодом подтверждения адреса, восстановлением пароля и приглашениями в проект
MAX_UPLOAD_SIZEпредельный размер файла, скачиваемого из источника по ссылке, в байтах; по умолчанию 100 МиБ
YANDEX_SPEECHKIT_API_KEY, YANDEX_SPEECHKIT_FOLDER_ID, SPEECH_LANGUAGESраспознавание речи в аудио и видео через Yandex SpeechKit и языки распознавания

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

Панель управления читает параметры установки из переменных окружения контейнера при запуске. Незаданная переменная оставляет значение, с которым собран образ; переменная с пустым значением отключает соответствующую функцию.

ПараметрНазначение
PARSEWISE_API_URLадрес сервера программного интерфейса; также добавляется в политику безопасности содержимого страниц панели
PARSEWISE_APP_URLадрес панели управления; её хост обслуживает панель, остальные хосты — гостевую страницу проекта
PARSEWISE_ADMIN_HOSTSдополнительные хосты панели через запятую
PARSEWISE_SHOPS_DOMAINдомен адресов проектов вида проект.домен
PARSEWISE_PRIVACY_URL, PARSEWISE_TERMS_URL, PARSEWISE_OFFER_URLссылки на политику обработки персональных данных, условия использования и оферту
PARSEWISE_SALES_EMAILадрес для обращений по тарифам
PARSEWISE_YM_COUNTER_IDсчётчик Яндекс Метрики; пустое значение отключает Метрику
PARSEWISE_YANDEX_CLIENT_ID, PARSEWISE_VK_CLIENT_IDидентификаторы приложений для входа через Яндекс ID и VK ID; пустое значение отключает такой вход
PARSEWISE_WIDGET_SCRIPT_URLадрес файла виджета, который панель подставляет в код подключения

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

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

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
Масштабированиеавтоматическое, в пределах, указанных в таблице ресурсов. Планировщик задач запускается строго в одном экземпляре
Обновлениезаказчик разворачивает новую версию образов по своему решению; схема основной базы обновляется миграциями при запуске сервера
Поддержкадокумент «Техническая поддержка»
НАЧНИТЕ

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

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