До основного вмісту

Векторні бази даних: порівняння Qdrant, Weaviate і Milvus

AI-агенти на VDS · 29.09.2026

Векторна база даних потрібна там, де звичайний WHERE title LIKE '%...%' не знаходить сенс, а знаходить лише точний збіг літер. Ембединг перетворює текст, картинку чи аудіо на вектор чисел, а векторна БД швидко шукає сусідні за змістом записи серед мільйонів. Три найчастіші кандидати на VDS — Qdrant, Weaviate і Milvus. Розберемо, чим вони відрізняються на практиці і що поставити у вашому випадку.

Що таке векторна база даних і навіщо вона потрібна

Класичний індекс шукає точне входження рядка. Векторний індекс шукає найближчі точки у багатовимірному просторі за метрикою відстані — косинусною близькістю або евклідовою. Запит теж перетворюється на вектор тією ж моделлю ембедингів, а база повертає top-k найближчих записів за мілісекунди навіть на десятках мільйонів векторів.

Такий пошук лежить в основі RAG-систем, рекомендацій, дедуплікації та пошуку схожих зображень. Вибір конкретної бази впливає на споживання RAM, швидкість запису та складність експлуатації на власному сервері.

Qdrant: простота і низький поріг входу

Qdrant написаний на Rust, ставиться одним бінарником або Docker-контейнером і не потребує зовнішніх залежностей на кшталт ZooKeeper чи etcd. Зберігає вектори разом із payload-полями та підтримує фільтрацію за метаданими прямо під час пошуку, а не після нього.

docker run -d --name qdrant \
  -p 6333:6333 -p 6334:6334 \
  -v /opt/qdrant/storage:/qdrant/storage \
  qdrant/qdrant:latest

На VDS із 4 ГБ RAM Qdrant спокійно тримає колекцію на пару мільйонів векторів розмірністю 768. Детальне встановлення описане у статті про налаштування Qdrant на VPS.

Weaviate: модулі і вбудована векторизація

Weaviate написаний на Go і додає шар модулів: можна підключити векторизацію тексту через зовнішній API прямо всередині бази, не ганяючи дані через окремий сервіс ембедингів. Схема даних будується через класи з типізованими властивостями, зручно, коли запис має багато атрибутів окрім вектора.

Із мінусів — Weaviate вимогливіший до пам'яті при великій кількості класів і активніше використовує GraphQL-інтерфейс, який доведеться освоїти окремо від звичного REST.

Milvus: масштабування для великих навантажень

Milvus розрахований на десятки і сотні мільйонів векторів та розподілену архітектуру: окремі вузли для прийому запису, індексації та запитів. Така схема виправдана на кластері з кількох серверів, але на одному VDS додає накладні витрати — Milvus у docker-compose піднімає etcd і MinIO як обов'язкові залежності.

wget https://github.com/milvus-io/milvus/releases/download/v2.4.0/milvus-standalone-docker-compose.yml -O docker-compose.yml
docker compose up -d

Standalone-режим Milvus знімає частину складності, але все одно споживає більше RAM у простої, ніж Qdrant чи Weaviate на тому самому завданні.

Порівняння за ключовими параметрами

ПараметрQdrantWeaviateMilvus
Мова реалізаціїRustGoGo + C++
Залежності для стартунемаєнемаєetcd, MinIO
RAM у простоївід 200 МБвід 400 МБвід 1.5 ГБ
Фільтрація за payloadтак, вбудованатак, через класитак, через схему
Найкраще підходитьодин сервер, RAGскладна схема данихкластер, сотні млн векторів

Що поставити на свій VDS

Для чат-бота з базою знань, пошуку по каталогу товарів чи особистого проєкту на VDS із 4-8 ГБ RAM розумний вибір — Qdrant: мінімум рухомих частин, один процес, зрозумілий REST API. Якщо дані вже структуровані як об'єкти з багатьма пов'язаними властивостями і хочеться вбудовану векторизацію — беріть Weaviate. Milvus має сенс лише за явного плану зростання до кластера і десятків мільйонів записів, інакше його etcd і MinIO просто з'їдатимуть ресурси даремно.

Як альтернативу без окремого сервісу варто розглянути pgvector у PostgreSQL, коли у проєкту вже є ця СУБД, а навантаження не перевищує пари мільйонів записів.

  • До 2-5 млн векторів, один сервер — Qdrant.
  • Складна схема об'єктів, потрібна вбудована векторизація — Weaviate.
  • Кластер, десятки-сотні мільйонів векторів — Milvus.
  • Проєкт вже на PostgreSQL, навантаження невелике — pgvector замість окремої БД.

Чек-лист перед вибором

Перш ніж розгортати будь-яку з баз, оцініть три речі: скільки векторів буде за рік, скільки вільної RAM є на сервері та чи потрібна фільтрація за метаданими на кожному запиті. Помилка на цьому кроці коштує дорожче, ніж міграція даних між базами — формат векторів у всіх різний, доведеться заново ганяти ембединги.

  • Порахуйте прогнозовану кількість векторів та їхню розмірність.
  • Перевірте вільну RAM: Milvus без запасу пам'яті падатиме через OOM.
  • Вирішіть, чи потрібна фільтрація за полями разом із векторним пошуком.
  • Почніть із Qdrant, за сумнівів — міграція на важче рішення простіша, ніж відкат з нього.
← Назад до бази знань Поставити питання підтримці