Установка#
Состав дистрибутива#
Примечание
x.y.z - версия продукта;
vectordb-qdrant-client - клиент Qdrant (клиентское приложение).
После распаковки архива Vector-DB-x.y.z.zip пользователь получает следующую структуру файлов:
Vector-DB-x-y-z/
├── Vector-DB-x-y-z
│ ├── qdrant-client-x-y-z-darwin-amd64.zip
│ ├── qdrant-client-x-y-z-darwin-arm64.zip
│ ├── qdrant-client-x-y-z-win64.zip
│ ├── vectordb-qdrant-x-y-z-1.x86_64.rpm
│ ├── vectordb-qdrant-x-y-z-1.x86_64.tgz
│ ├── vectordb-qdrant-client-x-y-z-1.x86_64.rpm
│ ├── vectordb-qdrant-client-x-y-z-1.x86_64.tgz
│ ├── vectordb-vault-encryptor-x-y-z-1.x86_64.rpm
│ └── vectordb-vault-encryptor-x-y-z-1.x86_64.tgz
├── Vector-DB-x-y-z-build-log.txt
└── Vector-DB-docker-x-y-z
Файлы в архиве можно разделить на следующие группы:
Бинарные файлы для Linux x86_64:
vectordb-qdrant-x-y-z-1.x86_64.tgz- TAR-архив с бинарными файлами сервиса;vectordb-qdrant-client-x-y-z-1.x86_64.tgz- TAR-архив с клиентом Qdrant;vectordb-vault-encryptor-x-y-z-1.x86_64.tgz- TAR-архив с утилитой шифрования.
RPM-пакеты для установки на системах Linux:
vectordb-qdrant-x-y-z-1.x86_64.rpm- RPM-пакет сервиса;vectordb-qdrant-client-x-y-z-1.x86_64.rpm- RPM-пакет клиента Qdrant;vectordb-vault-encryptor-x-y-z-1.x86_64.rpm- RPM-пакет утилиты шифрования.
Клиентские архивы для других операционных систем:
qdrant-client-x-y-z-win64.zip- ZIP-архив с клиентом Qdrant для Windows 64-bit;qdrant-client-x-y-z-darwin-amd64.zip- ZIP-архив с клиентом Qdrant для macOS AMD64;qdrant-client-x-y-z-darwin-arm64.zip- ZIP-архив с клиентом Qdrant для macOS ARM64.
Дополнительные файлы:
Vector-DB-x-y-z-build-log.txt- файл с логами сборки;Vector-DB-docker-x-y-z/- директория с примером Docker-развертывания.
Установка#
Установка Platform V Vector DB (далее - Vector DB) выполняется с помощью архива или RPM-пакета. В данном примере будем ставить из архива. Архив распаковывается в один каталог. Каталог содержит бинарные файлы. Особенностью установки из архива является отсутствие необходимости получения прав корневого администратора (root) и возможность установки на любом дистрибутиве Linux.
Перед установкой обязательно выполните указания раздела «Подготовка окружения».
Порядок установки#
Шаг 1 Распаковка архива и подготовка бинарных файлов#
Последовательность действий#
Скачайте дистрибутив Vector DB.
Распакуйте архив:
export UNPUCKED_PATH=$(pwd)/unpacked unzip -o Vector-DB-x-y-z.zip -d ${UNPUCKED_PATH}Пример вывода команды:
Archive: Vector-DB-255.255.255-SNAPSHOT.zip creating: ./unpacked/Vector-DB-255.255.255-SNAPSHOT/ inflating: ./unpacked/Vector-DB-255.255.255-SNAPSHOT/vectordb-vault-encryptor-255.255.255~SNAPSHOT-1.x86_64.tgz inflating: ./unpacked/Vector-DB-255.255.255-SNAPSHOT/vectordb-qdrant-client-255.255.255~SNAPSHOT-1.x86_64.tgz inflating: ./unpacked/Vector-DB-255.255.255-SNAPSHOT/vectordb-qdrant-255.255.255~SNAPSHOT-1.x86_64.tgz extracting: ./unpacked/Vector-DB-255.255.255-SNAPSHOT/qdrant-client-255.255.255-SNAPSHOT-win64.zip extracting: ./unpacked/Vector-DB-255.255.255-SNAPSHOT/qdrant-client-255.255.255-SNAPSHOT-darwin-arm64.zip extracting: ./unpacked/Vector-DB-255.255.255-SNAPSHOT/qdrant-client-255.255.255-SNAPSHOT-darwin-amd64.zip inflating: ./unpacked/Vector-DB-255.255.255-SNAPSHOT/vectordb-vault-encryptor-255.255.255~SNAPSHOT-1.x86_64.rpm inflating: ./unpacked/Vector-DB-255.255.255-SNAPSHOT/vectordb-qdrant-client-255.255.255~SNAPSHOT-1.x86_64.rpm inflating: ./unpacked/Vector-DB-255.255.255-SNAPSHOT/vectordb-qdrant-255.255.255~SNAPSHOT-1.x86_64.rpm inflating: ./unpacked/Vector-DB-255.255.255-SNAPSHOT-build-log.txt creating: ./unpacked/Vector-DB-docker-255.255.255-SNAPSHOT/ inflating: ./unpacked/Vector-DB-docker-255.255.255-SNAPSHOT/start-demo-cluster.sh inflating: ./unpacked/Vector-DB-docker-255.255.255-SNAPSHOT/generate_certificates.sh inflating: ./unpacked/Vector-DB-docker-255.255.255-SNAPSHOT/entrypoint.sh inflating: ./unpacked/Vector-DB-docker-255.255.255-SNAPSHOT/docker-compose.yaml creating: ./unpacked/Vector-DB-docker-255.255.255-SNAPSHOT/configs/ creating: ./unpacked/Vector-DB-docker-255.255.255-SNAPSHOT/configs/config/ inflating: ./unpacked/Vector-DB-docker-255.255.255-SNAPSHOT/configs/config/sec-config.yaml inflating: ./unpacked/Vector-DB-docker-255.255.255-SNAPSHOT/configs/config/config.yml inflating: ./unpacked/Vector-DB-docker-255.255.255-SNAPSHOT/build.sh inflating: ./unpacked/Vector-DB-docker-255.255.255-SNAPSHOT/README.md inflating: ./unpacked/Vector-DB-docker-255.255.255-SNAPSHOT/Dockerfile extracting: ./unpacked/Vector-DB-docker-255.255.255-SNAPSHOT/.gitignoreЕсли необходимо вручную поднять Standalone Vector DB TLS, то перейдите к следующему пункту. Если необходимо сразу поднять кластер Vector DB с TLS через Docker Compose, то перейдите к Шаг 4 Запуск кластера Vector DB с TLS через Docker Compose.
Перейдите в директорию с распакованным архивом:
cd ${UNPUCKED_PATH}/Vector-DB-x-y-z/Распакуйте бинарные файлы:
tar --touch -vxzf vectordb-qdrant-255.255.255~SNAPSHOT-1.x86_64.tgz -C . tar --touch -vxzf vectordb-qdrant-client-255.255.255~SNAPSHOT-1.x86_64.tgz -C . tar --touch -vxzf vectordb-vault-encryptor-255.255.255~SNAPSHOT-1.x86_64.tgz -C .Пример вывода команды:
./opt/vectordb/bin/qdrant ./usr/bin/qdrant ./opt/vectordb/bin/qdrant-client ./usr/bin/qdrant-client ./opt/vectordb/bin/vault-encryptor ./usr/bin/vault-encryptorПроверьте, что бинарные файлы распаковались:
ls -la ${UNPUCKED_PATH}/Vector-DB-x-y-z/opt/vectordb/bin/Примерный вывод команды:
total 155456 drwxr-x---. 2 admin admin 64 Mar 16 14:03 . drwxr-x---. 3 admin admin 17 Mar 16 14:03 .. -rwxr-x---. 1 admin admin 94652080 Mar 16 14:03 qdrant -rwxr-x---. 1 admin admin 14551275 Mar 16 14:03 qdrant-client -rwxr-x---. 1 admin admin 6184659 Mar 16 14:03 vault-encryptorДолжен отобразиться файл
qdrantи другие бинарные файлы.
Шаг 2 Создание конфигурационных файлов#
Последовательность действий#
Создайте конфигурационные файлы в текущей директории с использованием механизма heredoc (механизм в Unix-подобных оболочках, который позволяет создавать многострочные строки без использования кавычек):
Создайте файл
config.yaml:cat > config.yaml << 'EOF' service: enable_tls: false http_port: 6333 grpc_port: 6334 cluster: enabled: false log_level: DEBUG EOFСоздайте файл
sec-config.yaml:Задайте переменные с учетными данными:
export QDRANT_LOGIN='bob' export QDRANT_PASSWORD='qwe123'Захешируйте пароль с помощью утилиты Vault-encryptor:
export PASSWORD_HASH=$(echo $QDRANT_PASSWORD | ./opt/vectordb/bin/vault-encryptor password-hash)Запишите файл с секретами:
cat > sec-config.yaml << EOF token: expiration: "1h" auth: enable_rbac: true auth_flow: - bootstrap - local_storage subject_regex: "CN=([^,]+)" bootstrap: principals: - principal_name: $QDRANT_LOGIN password_hash: "$PASSWORD_HASH" roles: - bootstrap roles: "bootstrap": - cluster_manage - collection_cluster_manage - collection_info - collection_manage - cluster_info - snapshot_upload - snapshot_download - snapshot_info - snapshot_write - snapshot_recover - points_write - points_read - read_principal - write_principal - read_role - write_role ephemeral_api_key: enabled: true rotation_interval: "8h" EOF
Шаг 3 Запуск Standalone Vector DB#
Последовательность действий#
Запустите Qdrant:
nohup ./opt/vectordb/bin/qdrant \
--config-path ./config.yaml \
--sec-config-path ./sec-config.yaml \
> qdrant.log 2>&1 &
Параметры запуска:
--config-path– путь к основному конфигурационному файлу (по умолчанию./config.yaml).--sec-config-path- путь к дополнительному конфигурационному файлу (по умолчанию./sec-config.yaml).
Пример вывода команды запуска:
[1] 1296361
Просмотр логов Qdrant после запуска:
cat qdrant.log
Пример вывода:
nohup: ignoring input
__ __ _ ____ ____
\ \ / /__ ___| |_ ___ _ __| _ \| __ )
\ \ / / _ \/ __| __/ _ \| '__| | | | _ \
\ V / __/ (__| || (_) | | | |_| | |_) |
\_/ \___|\___|\__\___/|_| |____/|____/
Version: 255.255.255-SNAPSHOT, qdrant version: 1.16.3, build: 712aa383
2026-03-16T12:38:01.398176Z WARN sbertech::security::configs: Config file not found: config/config
2026-03-16T12:38:01.398203Z WARN sbertech::security::configs: Config file not found: config/development
2026-03-16T12:38:01.398245Z INFO qdrant: Security auth is enabled
2026-03-16T12:38:01.398330Z INFO storage::content_manager::consensus::persistent: Initializing new raft state at ./storage/raft_state.json
2026-03-16T12:38:01.407218Z DEBUG storage::content_manager::consensus::persistent: State: Persistent { state: RaftState { hard_state: HardState { term: 0, vote: 0, commit: 0, special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None }, cached_size: CachedSize { size: 0 } } }, conf_state: ConfState { voters: [7845040305748983], learners: [], voters_outgoing: [], learners_next: [], auto_leave: false, special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None }, cached_size: CachedSize { size: 0 } } } }, latest_snapshot_meta: SnapshotMetadataSer { term: 0, index: 0 }, apply_progress_queue: EntryApplyProgressQueue(None), first_voter: Some(7845040305748983), peer_address_by_id: RwLock { data: {} }, peer_metadata_by_id: RwLock { data: {} }, arbiter_peer_ids: RwLock { data: {} }, cluster_metadata: {}, this_peer_id: 7845040305748983, path: "./storage/raft_state.json", dirty: false }
2026-03-16T12:38:01.417932Z INFO storage::audit::logger: Audit is disabled
2026-03-16T12:38:01.418028Z INFO qdrant: Distributed mode disabled
2026-03-16T12:38:01.418070Z INFO qdrant: Telemetry reporting disabled
2026-03-16T12:38:01.431041Z INFO qdrant::actix: TLS disabled for REST API
2026-03-16T12:38:01.431236Z INFO qdrant::actix: Qdrant HTTP listening on 6333
2026-03-16T12:38:01.431249Z INFO actix_server::builder: starting 1 workers
2026-03-16T12:38:01.431261Z INFO actix_server::server: Actix runtime found; starting in Actix runtime
2026-03-16T12:38:01.431268Z INFO actix_server::server: starting service: "actix-web-service-0.0.0.0:6333", workers: 1, listening on: 0.0.0.0:6333
2026-03-16T12:38:01.444180Z DEBUG qdrant: Waiting for thread web to finish
2026-03-16T12:38:01.476416Z INFO qdrant::tonic: Qdrant gRPC listening on 6334
2026-03-16T12:38:01.481049Z INFO qdrant::tonic: TLS disabled for gRPC API
2026-03-16T12:38:01.533834Z INFO qdrant: Successfully submitted new API key
Проверка результата#
Получите JWT-токен для авторизации:
JWT=$(curl http://localhost:6333/auth -d "{\"username\": \"$QDRANT_LOGIN\", \"password\": \"$QDRANT_PASSWORD\"}" -s 2>/dev/null | jq -r .result.token)
Эта команда выполняет HTTP POST запрос к точке подключения /auth на локальном хосте на порту 6333 с JSON данными для аутентификации пользователя $QDRANT_LOGIN с паролем $QDRANT_PASSWORD. Результат запроса обрабатывается через jq для извлечения поля result.token, который затем сохраняется в переменной JWT.
Внимание
Команда сама по себе не выводит никаких данных на экран. Она просто сохраняет токен в переменную для дальнейшего использования.
Проверьте состояние кластера с использованием полученного токена:
curl http://localhost:6333/cluster -H "authorization: Bearer ${JWT}" | jq
Пример вывода команды проверки кластера:
{
"result": {
"status": "disabled"
},
"status": "ok",
"time": 0.000002487
}
Завершение работы (опциональный шаг)#
После завершения работы с демонстрационным примером рекомендуется очистить временные данные и остановить запущенный процесс:
kill $(pgrep -f "qdrant.*config-path.*config.yaml")
Шаг 4 Запуск кластера Vector DB с TLS через Docker Compose#
Данный шаг обеспечивает запуск демонстрационного кластера с использованием Docker Compose.
Кластер состоит из трех узлов:
qdrant-node-0(порт 6333);qdrant-node-1(порт 6433);qdrant-node-2(порт 6533).
Все узлы используют TLS для связи.
Последовательность действий#
Перейдите в директорию с примером Docker-развертывания:
cd ${UNPUCKED_PATH}/Vector-DB-docker-x.y.zЗапустите скрипт для автоматического запуска кластера:
./start-demo-cluster.shСкрипт выполнит следующие шаги:
Сборку Docker образа.
Генерацию TLS сертификатов (если они не существуют).
Запуск кластера Qdrant через Docker Compose.
Ожидание доступности API.
Получение JWT токена для аутентификации.
Проверку состояния кластера.
Пример вывода команды:
$ ./start-demo-cluster.sh ==> Step 1: Build Docker image [+] Building 63.9s (10/10) FINISHED docker:default ... ==> Step 2: Generate TLS certificates (if missing) Using openssl: /usr/bin/openssl == Generate CA key == Generate CA certificate == Generate private key == Generate CSR == Sign certificate Certificate request self-signature ok subject=C = RU, ST = Tatarstan, L = Innopolis, O = VectorDB, OU = Platform, CN = qdrant-node-0 Generated certificates: certs/ca.pem certs/certificate.pem certs/private_key.key Verify: openssl verify -CAfile certs/ca.pem certs/certificate.pem ==> Step 3: Start Qdrant cluster [+] up 4/4 ✔ Network vector-db-docker-255255255-snapshot_default Created 0.1s ✔ Container qdrant-node-0 Created 0.1s ✔ Container qdrant-node-1 Created 0.0s ==> Step 4: Wait until API becomes available Created 0.0s API is ready ==> Step 5: Obtain JWT token JWT token obtained ==> Step 6: Wait until cluster networking is healthy Cluster still stabilizing (message_send_failures=1)... Cluster communication is healthy { "result": { "status": "enabled", "peer_id": 4610463616206733, "peers": { "4610463616206733": { "uri": "https://qdrant-node-0:6335/" }, "8566963506758044": { "uri": "https://qdrant-node-1:6335/" }, "3828474674756769": { "uri": "https://qdrant-node-2:6335/" } }, "raft_info": { "term": 1, "commit": 11, "pending_operations": 0, "leader": 4610463616206733, "role": "Leader", "is_voter": true, "is_arbiter": false, "is_leader_lost": false, "is_leader_lost_locked": false }, "consensus_thread_status": { "consensus_thread_status": "working", "last_update": "2026-03-16T13:28:00.229301463Z" }, "message_send_failures": {} }, "status": "ok", "time": 6.78e-06 }После успешного запуска кластер будет доступен по адресу:
HTTPS API:
https://localhost:6333
Для аутентификации используются учетные данные:
Логин:
bob.Пароль:
qwe123.
Проверка результата#
После запуска кластера можно проверить его состояние:
Получение JWT-токена:
export QDRANT_LOGIN='bob'
export QDRANT_PASSWORD='qwe123'
JWT=$(curl https://localhost:6333/auth \
-d "{\"username\": \"$QDRANT_LOGIN\", \"password\": \"$QDRANT_PASSWORD\"}" \
--cert certs/certificate.pem \
--key certs/private_key.key \
--cacert certs/ca.pem \
-k \
-s 2>/dev/null | jq -r .result.token)
Авторизация и проверка:
curl -H "authorization: Bearer ${JWT}" \
--cert certs/certificate.pem \
--key certs/private_key.key \
--cacert certs/ca.pem \
-k \
https://localhost:6333/cluster \
-s 2>/dev/null | jq
Завершение работы (опциональный шаг)#
После завершения работы с кластером остановите контейнеры:
docker compose down
Также можно удалить временные файлы и директорию распаковки:
cd ${UNPUCKED_PATH}/..
rm -rf ${UNPUCKED_PATH}
Шаг 5 Настройка Secman#
Цель выполнения#
Интеграция с Secman направлена на обеспечение безопасности, автоматизации управления конфиденциальными данными и улучшение надежности при работе с векторной базой данных.
Последовательность действий#
Выполните редактирование файла конфигурации
sec-config.yamlсогласно Руководству по безопасности.Выполните запуск продукта с двумя конфигурационными файлами:
./target/debug/qdrant --config-path ./config/config.yaml --sec-config-path ./config/sec-config.yaml
Проверка результата#
Если используется Secman в качестве хранилища секретов, то:
После запуска Vector DB аутентифицируется в Secret Management, используя расшифрованную пару
role_idиsecret_id, и получает токен доступа.Используя токен доступа, сервер считывает из хранилища необходимые секреты.
Продукт успешно запустится.