Обновление
Этот документ содержит инструкции по обновлению Alauda Hyperflux до более новой версии.
Содержание
Стандартные шаги обновленияОбновление с v1.3.x до v1.4.x (Переход на другую embedding model)Что обновление выполняет автоматическиРекомендуемое резервное копирование перед обновлениемВыполнение обновленияПроверка обновленияОсобый случай: вы поддерживаете custom knowledge baseОбновление с v1.2.0 до v1.2.1 (Особый случай)Шаг 1: Резервное копирование Knowledge BaseШаг 2: Выполнение обновленияШаг 3: Восстановление Knowledge BaseСтандартные шаги обновления
Для большинства обновлений версий (за исключением v1.2.0 → v1.2.1 и v1.3.x → v1.4.x) вы можете просто выполнить следующие шаги в консоли ACP:
- Загрузите новый version пакета плагина в ACP Marketplace. Загрузите пакет тем же способом, что и при первоначальной установке. После завершения загрузки подождите примерно 10–15 минут, пока платформа автоматически синхронизирует информацию о новой версии.
- Проверьте, что новая версия доступна в Marketplace. Перейдите в Administrator / Marketplace / Upload Packages. Переключитесь на вкладку Cluster Plugin и убедитесь, что для плагина Hyperflux отображается новый номер версии.
- Выполните операцию обновления на кластере. Перейдите в Administrator / Clusters / Clusters. Найдите кластер, в котором установлен плагин Hyperflux; в записи кластера будет отображаться значок обновления. Нажмите, чтобы открыть сведения о кластере, и переключитесь на вкладку Features. В карточке плагина Hyperflux нажмите кнопку Upgrade и подтвердите операцию.
- Проверьте результат обновления. После завершения обновления убедитесь, что номер версии обновлен на вкладке Features. Проверьте нормальную работу через мониторинг состояния плагина или журналы.
Обновление с v1.3.x до v1.4.x (Переход на другую embedding model)
ВАЖНО: в v1.4.0 поставляется новая embedding model (
gte-multilingual-base, заменяющаяparaphrase-multilingual-mpnet-base-v2). Векторные пространства несовместимы, поэтому system knowledge base необходимо повторно встроить. Chart выполняет это автоматически во время обновления — но перед применением обязательно прочитайте этот раздел, особенно если вы создали custom knowledge base.
Что обновление выполняет автоматически
Когда новый chart разворачивается, init container сканирует docvec_sys_kb на наличие любой устаревшей mpnet collection,
которая соответствует правилу в smartdoc.acpKbUpgradeRules (по умолчанию: ACP 4.1 и ACP 4.2 mpnet collections), затем:
- Получает PostgreSQL advisory lock с ключом
acpKbDataVersion, чтобы init второго replica завершился корректно. - Записывает выполняемую замену в строку
kb_swap_state(чтобы можно было восстановиться, если pod будет завершён в процессе swap). - Удаляет таблицы
langchain_pg_embeddingиlangchain_pg_collectionвdocvec_sys_kb. - Выполняет
pg_restoreнового gte dump из/workspace-smart-doc/dumps/(предупреждения о уже существующих extensions/ schemas допускаются, критические ошибки прерывают процесс). - Проверяет, что новое имя collection было создано (
SELECT count(*) ... = 1); в противном случае процесс прерывается. - Переименовывает новую collection обратно в старое имя collection, чтобы работающий сервер продолжал выполнять запросы к тому же
имени. Вам не нужно изменять
pgconnect.pgCollectionName. - Пересоздает ParadeDB BM25 index, если в новом dump он не был включен (в последних gte dump он уже есть).
- Помечает
schema_migrationsзаписью003_data_swap_<old_collection>_<acpKbDataVersion>и очищает выполняющуюся строкуkb_swap_state. - После возврата блока swap безусловный цикл миграций повторно применяет
doc_idbtree (001_add_doc_id_index) и URL-backfill (002_backfill_doc_id_from_url) к только что восстановленной таблице — блок swap сбрасывает их отметки, чтобы цикл считал их "не примененными" и запускал их.
Swap является:
- Идемпотентным — повторный rollout chart без изменения
acpKbDataVersionне выполняет никаких действий. - Устойчивым к сбоям — завершение pod между DROP и RESTORE можно восстановить при следующем запуске.
- Безопасным для нескольких replica — PostgreSQL advisory lock с ключом
acpKbDataVersionсериализует swap.
Рекомендуемое резервное копирование перед обновлением
При swap старая collection удаляется и заменяется новыми данными; старые mpnet vectors не сохраняются.
Хотя поставляемые вместе dump воспроизводимы, перед обновлением создайте резервную копию docvec_sys_kb и docvec_user_kb,
чтобы можно было откатиться, если что-то пойдет не так:
docvec_user_kb и база данных истории чата не затрагиваются этим swap — однако
резервная копия не будет лишней.
Выполнение обновления
Выполните указанные выше Стандартные шаги обновления. Init container автоматически выполнит swap при первом перезапуске smart-doc pod в новой версии.
Проверка обновления
Просматривайте журнал init container и убедитесь, что swap завершился успешно:
При успешном swap выводятся строки вида:
Повторный rollout после завершения swap выводит вообще ни одной строки [upgrade] — сканирование rules не находит
подходящей collection (старое имя было переименовано в pgconnect.pgCollectionName на шаге 6), и блок swap завершается
без вывода. Отсутствие строки журнала при последующих rollout — это ожидаемое состояние после swap.
Строка [upgrade] ... already applied, skipping. зарезервирована для сценария восстановления: в kb_swap_state
существует запись для stamp, который уже был применен (например, pod был завершен после записи stamp, но
до очистки inflight-строки). Это не обычный вывод при идемпотентном повторном rollout.
После того как smart-doc pod перейдет в состояние Ready, выполните в chat UI типовой вопрос, чтобы убедиться, что ответы основаны на новом corpus.
Особый случай: вы поддерживаете custom knowledge base
Если ранее вы следовали инструкции Создание custom knowledge base на модели v1.3.x mpnet, vectors в вашей custom collection несовместимы с сервером v1.4.0. Вам необходимо:
- Перед обновлением: перестроить вашу custom KB с
gte-multilingual-base(см. связанную инструкцию). - Заменить встроенные
acpKbUpgradeRulesна одно правило для вашей custom collection: Встроенные ACP rules здесь не применяются — развертывание с custom KB уже заменило эти collections в v1.3.x, поэтому встроенные OLD имена не совпадут. Оставлять их в списке rules безвредно, но это загромождает конфигурацию. - Применить обновление.
ПРИМЕЧАНИЕ: Init container обрабатывает только первое правило, для которого найдена OLD collection, в
docvec_sys_kbза один запуск, а затем выходит из блока swap. DROP и восстановление очищают всю таблицуlangchain_pg_collection, поэтому chart поддерживает только одну system-KB collection одновременно. Если вам нужно сохранить и custom corpus, и встроенный ACP corpus, загрузите их в одном запускеprepare(см. раздел Caveats в инструкции build-custom-kb) и поставьте один объединенный dump.
Если вы пропустите шаг 1, chart все равно обновится, но retrieval по устаревшей custom collection будет возвращать ноль результатов, а ответы будут сводиться к "I don't have enough information".
Обновление с v1.2.0 до v1.2.1 (Особый случай)
ВАЖНО: Обновление с v1.2.0 до v1.2.1 приведет к повторной инициализации knowledge base. Вы обязаны вручную создать резервную копию и восстановить вашу базу данных, чтобы предотвратить потерю данных.
Шаг 1: Резервное копирование Knowledge Base
Перед выполнением обновления выполните следующие команды:
Шаг 2: Выполнение обновления
Выполните описанные выше Стандартные шаги обновления, чтобы обновить версию плагина через консоль ACP.
Шаг 3: Восстановление Knowledge Base
После завершения обновления восстановите ваши данные:
Дождитесь перезапуска pod Alauda Hyperflux и убедитесь, что knowledge base успешно восстановлена.