Установка и эксплуатация
Документ содержит сведения, необходимые для установки и эксплуатации программы «Парсвайс» в инфраструктуре заказчика: состав поставки, требования к среде, настройку, порядок установки и эксплуатации.
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–10 | 500m / 512Mi | 2000m / 2Gi | CPU 70%, память 80% |
| Обработчик очередей | 4–10 | 500m / 1Gi | 2000m / 4Gi | CPU 70%, память 80% |
| Планировщик задач | ровно 1 | 50m / 128Mi | 200m / 256Mi | нет |
| Векторизация, индексация | 2–6 | 1000m / 2.5Gi | 4000m / 4Gi | CPU 70% |
| Векторизация, запросы | 2–6 | 500m / 2.5Gi | 2000m / 4Gi | CPU 70% |
| Панель управления | 1–10 | 200m / 256Mi | 1000m / 1Gi | CPU 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_SERVICE | openai — любая модель с 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. Установка
- Подготовить PostgreSQL: основную и векторную базы. В векторной базе должен быть доступен тип
vector. Если его нет, программа выполняетCREATE EXTENSION IF NOT EXISTS vector; если у роли приложения нет такого права, администратор базы выполняетCREATE EXTENSION vectorзаранее. - Подготовить Redis и бакет S3-совместимого объектного хранилища.
- Загрузить образы в реестр, доступный кластеру, и указать их адреса в манифестах.
- Создать пространство имён и секреты с параметрами из раздела 3.
- Указать в манифесте маршрутизации доменные имена программного интерфейса и панели управления, настроить TLS.
- Применить манифесты. При запуске сервер создаёт недостающие таблицы основной базы и применяет миграции, входящие в образ; векторное хранилище создаёт свои таблицы и индексы.
- Разместить файлы виджета на статическом сервере или в объектном хранилище заказчика.
- Проверить установку:
- все поды в состоянии готовности; поды векторизации загружают модель до трёх минут;
- запрос
GET /v1/public/healthк серверу программного интерфейса возвращает{"status": "ok"}; - в журнале сервера есть строка
Alembic migrations applied (head reached)и нет сообщенийAlembic upgrade failedи ошибокpgvector.
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 |
| Масштабирование | автоматическое, в пределах, указанных в таблице ресурсов. Планировщик задач запускается строго в одном экземпляре |
| Обновление | заказчик разворачивает новую версию образов по своему решению; схема основной базы обновляется миграциями при запуске сервера |
| Поддержка | Техническая поддержка |
Проверьте на своих данных
Загрузите свои документы и каталог — и задайте ассистенту те вопросы, которые задают вам. Это единственная проверка, которая что-то значит.
