Векторные БД — новая нефть, но нефть бывает разной
Когда речь заходит о поиске по эмбеддингам, глаза разработчика обычно стекленеют: «Pinecone, Qdrant, Milvus, pgvector... ещё один?»
Ну, да. Только не «ещё один», а Zvec — легковесная, безумно быстрая векторная база данных от Alibaba. Не от стартапа с красивой презентацией, а от инженеров, которым приходилось искать товары среди миллиардов изображений на Taobao и Tmall.
Zvec выложили на GitHub в начале 2025 года, а к концу мая 2026 он собрал 9 204 звезды — и это не хайп. Это лидерство в бенчмарках VectorDBBench, где Zvec обогнал всех, кого принято считать «шустрыми».
Ключевая цифра: на датасете 10 миллионов 768-мерных векторов Zvec выдает латентность 0,8 мс при recall@10 = 0,99. Это в 5-7 раз быстрее, чем Qdrant (4,2 мс) и OpenSearch (8,3 мс). А Zilliz Cloud того же ранга — практически улитка с 12+ мс.
Китайский код — китайские скорости
Zvec написан на C++ (Rust только для обвязки) и использует собственный алгоритм индексации, который Alibaba обкатывала внутри с 2019 года под именем Proxima.
Но есть нюанс: Zvec — это не просто форк Proxima. Это переписанная с нуля СУБД с упором на:
- Минимальное потребление RAM (индекс хранится в mmap'd файлах, почти не жрет память при старте);
- Гибридный поиск: можно смешивать скалярные фильтры и ANN-поиск без потери скорости (ключевая фича для RAG);
- Встроенное квантование PQ (Product Quantization) из коробки;
- Zero-деплой — база поднимается через один бинарник без зависимостей.
Звучит магически. Но почему тогда не все побежали ставить Zvec вместо Qdrant? Причина — документация. Она переведена с китайского машинным способом, примеры иногда работают не с первого раза. Сообщество маленькое, issues на английском долго висят.
Реальный минус: если вам нужна enterprise-поддержка, SLA и «оно просто работает» — Zvec пока сыроват для продакшна без собственного SRE. Зато для Pet project и локального RAG на домашнем сервере — самое то. Кстати, мы писали подробный гайд, как развернуть Zvec для локального RAG на граничных устройствах — там все шаги разжеваны.
Сравнение — не на бумаге, а на real-бенчмарках
Команда Zvec опубликовала результаты тестов из VectorDBBench (бенчмарк от DataCanvas). Вот как выглядят средние показатели при равных условиях (10M векторов, 768 фичей, 10-NN запросы, recall = 0,99):
| Система | Средняя латентность (ms) | Пропускная способность (qps) | Потребление RAM (ГБ) |
|---|---|---|---|
| Zvec | 0,8 | 12 500 | 2,1 |
| Qdrant (v1.14 в докере) | 4,2 | 2 380 | 4,8 |
| LanceDB (v0.18) | 5,1 | 1 960 | 3,3 |
| Milvus (cloud-free) | 8,6 | 1 160 | 6,0 |
| OpenSearch (KNN plugin) | 8,3 | 1 200 | 5,2 |
Zvec жрет в два раза меньше памяти, чем ближайший конкурент. Эта магия — результат того, что индекс пилится на диске, а в RAM хранятся только самые горячие сегменты. Для тех, кто считает каждый гигабайт на edge-устройствах — это подарок.
Кстати, у нас есть статья про EdgeVec — векторный поиск прямо в браузере, там другие цифры экономии, но подход схожий.
Как Zvec выглядит в реальном коде
Ставится одной командой (бинарник под Linux/Mac/Windows):
wget https://github.com/alibaba/zvec/releases/download/v0.4.2/zvec-linux-amd64
chmod +x zvec-linux-amd64
./zvec-linux-amd64 --data-dir ./zvec_data --http-port 8080
После старта — привычный REST API. Создать коллекцию и вставить векторы:
POST /v1/collections
{
"name": "products",
"dimension": 768,
"metric": "cosine",
"index": {
"type": "ivf_pq",
"params": {
"nlist": 4096,
"m": 16,
"nbits": 8
}
}
}
Вставка батча:
POST /v1/collections/products/vectors
{
"vectors": [
{ "id": "doc1", "vector": [0.12, 0.45, ...], "metadata": {"source": "wiki"} },
{ "id": "doc2", "vector": [0.89, 0.02, ...], "metadata": {"source": "arxiv"} }
]
}
Поиск по 10 ближайшим соседям:
POST /v1/collections/products/search
{
"vector": [0.33, 0.78, ...],
"topk": 10,
"filters": {"source": "arxiv"}
}
И всё — ответ приходит за 0,3–0,8 мс. Без лишних зависимостей, без Java или Python.
Есть и gRPC-интерфейс, и клиенты для Python, Go, Rust. Вот как выглядит поиск из Python:
from zvec import Client
client = Client("http://localhost:8080")
results = client.search("products", query=[0.33, 0.78], top_k=5)
print(results)
# [{"id": "doc42", "score": 0.98, "metadata": {...}}, ...]
API интуитивно понятен, если вы хоть раз трогали Qdrant или Milvus. Но есть разница: в Zvec фильтры работают во время поиска, а не пост-фильтрацией, поэтому скорость не проседает, даже если вы ищете «среди документов 2026 года с категорией A».
Кому Zvec реально нужен (а кому — нет)
Давай без воды. Zvec — это не серебряная пуля.
Пойдёт:
- Инженерам, которые хотят засунуть ANN-поиск в IoT / edge-устройства (малину, jetson, nas) — весит 20 МБ, запускается из коробки.
- Стартапам, у которых мало серверов и хочется сэкономить на облачных инстансах: 2 ГБ RAM на 10M векторов вместо 5-6 — это прямая экономия.
- Командам, пилящим демо/PoC для RAG — Zvec поднимается за 10 секунд и легко тюнится.
Не пойдёт:
- Если нужно продовое «включил и забыл» с support 24/7 — берите Qdrant Cloud или Zilliz Cloud.
- Если в проекте уже стоит pgvector и всех всё устраивает — менять ради скорости смысла нет, если только вы не упираетесь в миллиарды векторов.
- Если документацию на родном языке читать некому — китайские комментарии в исходниках, часть README на mandarin.
Будущее: куда движется Zvec?
Alibaba явно планирует внедрить Zvec в свою облачную платформу (как сделали с Qwen 3.5 — о лицензии которого мы писали вот здесь). Судя по коммитам, скоро будет поддержка распределённой конфигурации через raft и S3-хранение снапшотов.
Уже сейчас Zvec — единственная open-source векторная БД, которая обгоняет коммерческие решения в скорости поиска при сравнимом recall. Если бы не плохая документация — я бы поставил её на каждый второй pet-проект.
Лучший совет: скачайте, поднимите на ноутбуке, вставьте 100K случайных векторов и пощупайте латентность. Один раз — и вы уже не захотите ждать 5 мс на Qdrant. Ссылка на GitHub: github.com/alibaba/zvec.