Векторная БД Qdrant на VPS: полный старт
Qdrant — быстрая векторная база на Rust, которую любят за простоту и производительность. Поднимем её на VPS, настроим коллекцию, закроем API-ключом и организуем бэкапы.
Содержание
Зачем нужна векторная БД
['Обычная БД ищет по точному совпадению, векторная — по смысловой близости. Вы храните эмбеддинги (числовые представления текста, картинок, кода) и ищете ближайшие по косинусному расстоянию. Это фундамент семантического поиска, RAG, рекомендаций и антифрод-систем.', 'Qdrant выделяется среди аналогов: написан на Rust, ест мало памяти, умеет фильтрацию по метаданным и квантование векторов. Для self-hosted развёртывания на VPS это один из лучших вариантов.', 'Отдельно стоит отметить фильтрацию по payload. К каждому вектору вы прикрепляете метаданные — категорию, дату, автора, права доступа — и при поиске отсекаете лишнее прямо в базе. Например, ищете похожие документы, но только за последний месяц и только те, что доступны конкретному пользователю. Это превращает Qdrant из простого поиска по векторам в полноценный движок для приложений.']Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS для QdrantУстановка в Docker
['Проще всего запустить официальный образ. Обязательно монтируем volume, иначе данные исчезнут при пересоздании контейнера.', 'apt update && apt install -y docker.io\nmkdir -p /opt/qdrant/storage\ndocker run -d --name qdrant --restart unless-stopped \\\n -p 6333:6333 -p 6334:6334 \\\n -v /opt/qdrant/storage:/qdrant/storage \\\n qdrant/qdrant', 'Порт 6333 — REST и веб-дашборд, 6334 — gRPC (быстрее для больших нагрузок). Проверяем:', 'curl http://localhost:6333/healthz']
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Закрываем доступ API-ключом
['По умолчанию Qdrant открыт всем, кто дотянется до порта. На публичном сервере это дыра. Задаём ключ через переменную окружения и не публикуем порт наружу без нужды.', 'docker run -d --name qdrant --restart unless-stopped \\\n -e QDRANT__SERVICE__API_KEY=ВАШ_ДЛИННЫЙ_КЛЮЧ \\\n -p 127.0.0.1:6333:6333 \\\n -v /opt/qdrant/storage:/qdrant/storage qdrant/qdrant', 'Привязка к 127.0.0.1 означает, что порт виден только с самого сервера. Приложение ходит в базу локально, а снаружи ничего не торчит. Если доступ нужен извне — пускайте через nginx с TLS.']
Создаём коллекцию
['Коллекция задаёт размерность векторов и метрику. Для модели multilingual-e5-base размерность 768, метрика Cosine.', 'curl -X PUT http://localhost:6333/collections/kb \\\n -H "api-key: ВАШ_КЛЮЧ" -H "Content-Type: application/json" \\\n -d \'{"vectors": {"size": 768, "distance": "Cosine"}}\'', 'Qdrant по умолчанию строит HNSW-индекс — он даёт быстрый приближённый поиск. Параметры m и ef_construct можно тюнить: больше значения — точнее поиск, но выше RAM и время индексации.', 'Добавлять данные удобно через upsert — точки с id, вектором и payload. Если id уже существует, точка обновится, если нет — создастся. Это позволяет обновлять базу инкрементально, не пересоздавая коллекцию:', 'curl -X PUT http://localhost:6333/collections/kb/points \\\n -H "api-key: ВАШ_КЛЮЧ" -H "Content-Type: application/json" \\\n -d \'{"points": [{"id": 1, "vector": [0.1, 0.2],\n "payload": {"src": "faq.md"}}]}\'', 'Поиск с фильтром по payload выглядит так же просто — вы передаёте условие рядом с вектором запроса, и Qdrant отдаёт только подходящие точки, отсортированные по близости.']
Ресурсы и производительность
['Оценить память просто: число векторов × размерность × 4 байта плюс накладные на HNSW (примерно ×1.5). Миллион 768-мерных векторов — около 4–5 ГБ RAM. Квантование (scalar/binary) режёт это в несколько раз.', 'Скорость поиска критично зависит от диска и CPU. На AMD EPYC + NVMe у MAATRIX HNSW-обход идёт по памяти, а подгрузка сегментов с NVMe не тормозит — латентность запроса остаётся в единицах миллисекунд.', '- До 500k векторов — 2 vCPU / 4 ГБ
- 1–3 млн — 4 vCPU / 8–16 ГБ
- Больше — включайте квантование и шардирование
Бэкапы коллекций
['Qdrant умеет снапшоты. Делаем снапшот коллекции и складываем в надёжное место:', 'curl -X POST http://localhost:6333/collections/kb/snapshots \\\n -H "api-key: ВАШ_КЛЮЧ"', 'Файлы лежат в /opt/qdrant/storage/snapshots. Их подхватывают ежедневные бэкапы MAATRIX, поэтому даже при полном сбое диска коллекцию можно восстановить.']
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS для QdrantНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Qdrant или pgvector?
Qdrant быстрее на больших объёмах и богаче по фильтрам и квантованию. pgvector удобен, если вы и так живёте в PostgreSQL и объёмы небольшие.
Нужен ли Docker?
Не обязательно — есть бинарник, но Docker проще для обновлений и изоляции. На VPS с root-доступом оба варианта работают.
Как масштабировать?
Qdrant поддерживает распределённый режим с шардами и репликами. Начните с одного узла — вертикального масштабирования хватает надолго.
Безопасно ли открывать порт наружу?
Только с API-ключом и TLS. Лучше держать порт на 127.0.0.1 и ходить через nginx-прокси или SSH-туннель.