Установка#

Установка Platform V Vector DB (далее - Vector DB) выполняется с помощью архива. Архив распаковывается в один каталог. Каталог содержит бинарные файлы и конфигурационные файлы, которые расположены в подкаталогах. Особенностью установки из архива является отсутствие необходимости получения прав корневого администратора (root) и возможность установки на любом дистрибутиве Linux.

Перед установкой обязательно выполните указания раздела «Подготовка окружения».

Порядок установки#

  1. Шаг 1 Запуск bin-файла (обязательный);

  2. Шаг 2 Настройка порядка загрузки и приоритетов (опциональный);

  3. Шаг 3 Настройка systemd (опциональный);

  4. Шаг 4 Развертывание кластера (опциональный);

  5. Шаг 5 Настройка Secman

Шаг 1 Запуск bin-файла (обязательный)#

Последовательность действий#

Для запуска бинарного файла используется команда ./qdrant

  1. Скачайте дистрибутив Vector DB.

  2. Распакуйте архив:

    tar -xzf Vector-DB-XYZ.tar.gz
    

    Это создаст директорию с содержимым Vector DB, например:

    Vector-DB-XYZ/
     ├── config.yaml
     └── qdrant
    
  3. Переместите Vector DB в системную директорию (опционально):

    sudo mkdir -p /opt/qdrant
    sudo mv Vector-DB-XYZ /opt/qdrant/
    
  4. Запустите Qdrant:

    cd /opt/qdrant/Vector-DB-XYZ
    ./qdrant
    

    Параметры запуска:

    • --config-path – путь к основному конфигурационному файлу (по умолчанию config/config.yaml).

    • --sec-config-path - путь к дополнительному конфигурационному файлу (по умолчанию /config/sec-config.yaml).

    • --storage-path – директория для данных (по умолчанию ./storage).

    Пример запуска продукта с двумя конфигурационными файлами:

    ./target/debug/qdrant --config-path
    ./config/config.yaml --sec-config-path
    ./config/sec-config.yaml```
    

    Пример основного конфигурационного файла config.yaml:

    storage:
    storage_path: "/var/lib/qdrant"
    snapshots_path: "/var/lib/qdrant/snapshots"
    
    service:
    http_port: 6333
    grpc_port: 6334
    
    cluster:
    enabled: false  # Для standalone-режима
    

    Пример дополнительного конфигурационного файла sec-config.yaml:

    audit:
    is_enabled: true
    log_dml: false
    application: "VectorDB"
    system_id: "system_id"
    log_file_path: "/home/admin/audit.log"
    log_file_permissions: 0o644
    buffer_size_bytes: 16```
    

Проверка результата#

Проверьте, что Qdrant отвечает на запросы (например, через HTTP API):

curl http://localhost:6333/collections

Успешным результатом считается JSON-ответ с информацией о коллекциях или успешным статусом 200 OK.

Шаг 2 Настройка порядка загрузки и приоритетов (опциональный)#

Цель выполнения#

Этот шаг направлен на гарантирование корректной последовательности запуска сервисов, необходимых для работы Qdrant, и оптимизацию ресурсов системы. Хотя он необязателен, его настройка особенно важна в сложных инфраструктурах или при наличии зависимостей от других сервисов.

Данный шаг необходим:

  • в продакшн-средах с критичными зависимостями (например, IAM-сервисы, базы данных);

  • в кластерах с несколькими компонентами, где порядок запуска влияет на стабильность;

  • если Qdrant использует внешние ресурсы (например, LDAP, S3, мониторинг).

Последовательность действий#

  1. Определите зависимости:

    • cоставьте список сервисов, которые должны быть запущены до Qdrant, например, сеть (network-online.target), Prometheus, IAM-сервис, база данных и т.д.;

    • проверьте, доступны ли эти сервисы в системе:

      systemctl list-units | grep <имя_сервиса>
      
  2. Отредактируйте файл конфигурации systemd:

    • Откройте файл qdrant.service:

      sudo nano /etc/systemd/system/qdrant.service
      
    • В секции [Unit] добавьте параметры After и Requires:

      [Unit]
      Description=Qdrant Vector Search Engine
      After=network-online.target prometheus.service
      Requires=network-online.target prometheus.service
      

      After: указывает, что Qdrant запустится после указанных сервисов. Requires: гарантирует, что Qdrant не запустится, если указанные сервисы недоступны.

  3. Перезагрузите systemd:

    • Перезагрузите конфигурацию systemd:

      sudo systemctl daemon-reload
      
  4. Настройте автозапуск (если не сделано):

    • Включите автозапуск Qdrant:

      sudo systemctl enable qdrant
      
  5. Проверьте порядок загрузки:

    • Перезагрузите систему:

      sudo reboot
      
    • После перезагрузки проверьте статус Qdrant:

      sudo systemctl status qdrant
      

      Убедитесь, что сервис запущен и зависящие сервисы работают.

Проверка результата#

При запуске Vector DB объединяет несколько источников конфигурации в одну эффективную конфигурацию. Порядок загрузки следующий (от наименее до наиболее значимых):

  1. Встроенная конфигурация по умолчанию.

  2. config/config.yaml.

  3. config/{RUN_MODE}.yaml.

  4. config/local.yaml.

  5. Пользовательский файл конфигурации.

  6. Переменные среды.

Параметры из более поздних источников в списке переопределяют те, что находятся в предыдущих источниках:

  • Настройки в config/{RUN_MODE}.yaml (3) будут переопределять настройки в config/config.yaml (2).

  • Пользовательский файл конфигурации, указанный через аргумент --config-path (5), переопределит все остальные настройки, заданные файлами.

  • Переменные среды (6) имеют наивысший приоритет и переопределяют любые настройки из файлов.

Шаг 3 Настройка systemd (опциональный)#

Цель выполнения#

Настройка systemd направлена на автоматизацию управления процессом, обеспечение надежности работы сервиса и интеграцию с системными инструментами Linux. Этот шаг является опциональным, но рекомендуется для Развертывание в production-среду.

Последовательность действий#

Для работы продукта в фоне как сервис выполните:

  1. Создайте файл /etc/systemd/system/qdrant.service:`

    [Unit]
    Description=Qdrant Vector Search Engine
    After=network.target
    
    [Service]
    User=qdrant
    Group=qdrant
    ExecStart=/usr/local/bin/qdrant --config-path /etc/qdrant/config.yaml
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
  2. Запустите сервис:

    sudo useradd -r qdrant
    sudo mkdir -p /var/lib/qdrant/{data,snapshots}  
    sudo chown -R qdrant:qdrant /var/lib/qdrant
    sudo systemctl enable --now qdrant
    

Проверка результата#

Чтобы убедиться, что сервис Qdrant настроен и работает корректно через systemd, выполните следующие шаги:

  1. Проверка статуса сервиса: используйте команду systemctl для проверки текущего состояния сервиса. Статус должен быть active (running).

  2. Просмотр логов сервиса: проверьте логи через journalctl. Убедитесь, что нет ошибок типа Failed to start qdrant.service или Segmentation fault.

  3. Проверка запущенного процесса: убедитесь, что процесс Qdrant запущен. В выводе будет строка с процессом Qdrant (например: qdrant --config /etc/qdrant/config.yaml).

  4. Проверка автоматического запуска при загрузке системы: убедитесь, что сервис включен в автозагрузку командой:

    sudo systemctl is-enabled qdran
    

    Успешным результатом считается отображение enabled.

  5. Проверка автоперезапуска: если Qdrant завершился аварийно, systemd должен перезапустить его. Чтобы проверить:

    • Остановите Qdrant вручную:

      sudo systemctl stop qdrant
      
    • Подождите 10 секунд и проверьте статус:

      sudo systemctl status qdrant
      

    Если автоперезапуск включен, сервис должен снова запуститься.

Шаг 4 Развертывание кластера (опциональный)#

Цель выполнения#

Развертывание кластера направлено на обеспечение масштабируемости, отказоустойчивости и высокой производительности при работе с векторными данными.

Последовательность действий#

Для отказоустойчивой конфигурации:

  1. Включите кластерный режим в config.yaml:

    cluster:
      enabled: true
      p2p:
        port: 6335
      consensus:
        tick_period_ms: 100
       storage:
        storage_path: "/path/to/node1_data"
    
  2. По умолчанию Vector DB будет использовать порт 6335 для внутренней коммуникации. Все узлы должны быть доступны по этому порту внутри кластера, однако убедитесь, что доступ извне к этому порту изолирован, так как он может использоваться для выполнения операций записи.

    Кроме того, следует предоставить флаг --uri первому узлу, чтобы он мог сообщить другим узлам о том, как его можно достичь:

    ./qdrant --uri 'http://qdrant_node_1:6335'
    
  3. Последующие узлы в кластере должны знать хотя бы один узел существующего кластера, чтобы синхронизироваться с ним и остальными узлами кластера. Для этого им необходимо указать адрес начальной загрузки:

    ./qdrant --bootstrap 'http://qdrant_node_1:6335'
    

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

Использование нового распределенного кластера#

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

  • Создайте новую реплицированную коллекцию, установив параметр replication_factor равным двум или больше и задав параметр количества шардов кратным количеству узлов.

  • Если существующая коллекция не содержит достаточно шардов для каждого узла, нужно создать новую коллекцию, как описано в предыдущем пункте.

  • Если достаточное количество шардов для каждого узла и нужно реплицировать свои данные, создайте новые реплики шардов.

  • Если достаточное количество шардов для каждого узла иданные уже реплицированы, можете переместить данные (без их репликации) на новые узлы путем перемещения шардов.

Проверка результата#

После успешной синхронизации состояние кластера можно наблюдать через REST API:

GET /cluster

Пример результата:

{
 "result": {
   "status": "enabled",
   "peer_id": {peer_id},
   "peers": {
      "{peer_id}": {
       "uri": "http://{ip_address}:6335/"
      },
     "{peer_id}": {
       "uri": "http://qdrant_node_1:6335/"
     }
   },
    "raft_info": {
     "term": 1,
     "commit": 4,
     "pending_operations": 1,
     "leader": {leader_id},
     "role": "Leader"
    }
  },
  "status": "ok",
  "time": 5.731e-06
}

Шаг 5 Настройка Secman#

Цель выполнения#

Интеграция с Secman направлена на обеспечение безопасности, автоматизации управления конфиденциальными данными и улучшение надежности при работе с векторной базой данных.

Последовательность действий#

  1. Выполните редактирование файла конфигурации sec-config.yaml согласно руководству по безопасности.

  2. Выполните запуск продукта с двумя конфигурационными файлами:

    ./target/debug/qdrant --config-path
    ./config/config.yaml --sec-config-path
    ./config/sec-config.yaml```
    

Проверка результата#

Если используется Secman в качестве хранилища секретов, то:

  1. После запуска Vector DB аутентифицируется в Secret Management, используя расшифрованную пару role_id и secret_id, и получает токен доступа.

  2. Используя токен доступа, сервер считывает из хранилища необходимые секреты.

  3. Продукт успешно запустится.