Qdrant - Vector Database

Установка и первый запуск

Цели урока

  • Запустить Qdrant через Docker с персистентным хранилищем
  • Подключиться к Qdrant Cloud и понять ограничения бесплатного tier
  • Работать с REST API, gRPC и Web UI
  • Выбрать правильный SDK для TypeScript и Python проектов

Предварительные знания

  • Qdrant: что это и зачем нужно

В 2017 году Facebook AI Research выпустил FAISS - первую серьёзную библиотеку для vector similarity search. Но FAISS был C++ библиотекой без HTTP API и без distributed mode. Прошло 4 года - и появился Qdrant. Один `docker run` отделяет от production-ready vector database с REST API, gRPC, фильтрацией и горизонтальным масштабированием.

  • **Local development** - Docker + docker-compose, данные на диске, healthcheck
  • **CI/CD тесты** - Docker без volume, ephemeral, чистый старт каждый раз
  • **Стартап без DevOps** - Qdrant Cloud free tier, быстрый старт за 5 минут
  • **Production** - self-hosted Kubernetes с Helm chart или Qdrant Cloud paid tier
  • **RAG приложения** - embeddings от OpenAI (1536d), поиск похожих документов через REST API

От FAISS к production-ready vector databases

FAISS появился в 2017 как C++ библиотека для approximate nearest neighbor search. Это был breakthrough для ML-исследований, но не production инструмент: нет HTTP API, нет горизонтального масштабирования, нет payload-фильтров. В 2021 появился Qdrant на Rust - с REST/gRPC API, distributed mode и фильтрацией. Это перевело vector search из ML-лабораторий в mainstream backend разработку.

Запуск через Docker

**Qdrant распространяется как Docker-образ** - самый быстрый способ начать. Один контейнер, два порта: 6333 (REST + Web UI) и 6334 (gRPC). Через 30 секунд после `docker run` - работающая vector database с полноценным HTTP API и интерактивным интерфейсом.

От FAISS к production-ready vector databases

FAISS (Facebook AI Similarity Search) появился в 2017 году - первая production-ready библиотека для approximate nearest neighbor search. Но FAISS - это C++ библиотека, не сервер. Не было HTTP API, не было горизонтального масштабирования, не было payload-фильтров. В 2021 году появился Qdrant - написанный на Rust, с REST/gRPC API, distributed mode из коробки и фильтрацией по payload. Это перевело vector search из области ML-лабораторий в mainstream production.

**Конфигурация через переменные окружения** - все настройки из `config.yaml` доступны через `QDRANT__SECTION__PARAM`. Двойное подчёркивание - разделитель уровней вложенности.

**Хранилище на диск обязательно** для production. Без volume данные исчезнут при перезапуске контейнера. `-v $(pwd)/qdrant_storage:/qdrant/storage` монтирует локальную папку.

Qdrant запущен командой `docker run -p 6333:6333 qdrant/qdrant` и контейнер перезапущен. Что произошло с данными?

Qdrant Cloud - managed вариант

**Qdrant Cloud** - официальный managed сервис. Бесплатный tier: 1 cluster, 1GB RAM, 4GB диска. При размерности векторов 1536 (OpenAI `text-embedding-3-small`) - это ~100-150K векторов с учётом HNSW overhead. Регионы: AWS (US/EU), GCP, Azure.

**Когда выбирать Cloud vs self-hosted?** Cloud - когда нет DevOps ресурсов или нужен быстрый старт без настройки инфраструктуры. Self-hosted - при требованиях к data residency, кастомной конфигурации, или при наличии Kubernetes/Docker инфраструктуры.

Бесплатный tier Qdrant Cloud даёт 1GB RAM. При размерности векторов 1536 (OpenAI), сколько приблизительно векторов можно хранить?

REST API, gRPC и Web UI

**Qdrant предоставляет три интерфейса.** REST API - стандарт для большинства клиентов, curl-friendly, легко отлаживать. gRPC - для high-throughput сценариев, в 2-3 раза быстрее по latency за счёт Protocol Buffers. Web UI - для быстрой инспекции данных и отладки без единой строки кода.

**Web UI** доступен на `http://localhost:6333/dashboard`. Позволяет просматривать коллекции, исследовать точки, делать поисковые запросы через графический интерфейс и мониторить производительность.

**OpenAPI документация** автоматически доступна на `http://localhost:6333/openapi`. Импортировать в Postman или Insomnia для интерактивного изучения API.

Когда стоит использовать gRPC вместо REST API в Qdrant?

Клиентские библиотеки

**Официальные SDK** покрывают основные языки. TypeScript/JavaScript - для Node.js бэкендов и AI-приложений. Python - для ML/AI скриптов и Jupyter notebooks. Rust - для максимальной производительности. Go - для системных сервисов.

**В Python-скриптах** для генерации embeddings удобно использовать `qdrant_client` вместе с `sentence-transformers` или `openai`. В NestJS - `@qdrant/js-client-rest` с собственным сервисом-обёрткой. Урок qd-25 покрывает полную интеграцию NestJS + Qdrant.

В NestJS проекте нужен Qdrant. Какой пакет установить?

Ключевые идеи

  • **Docker запуск** - `docker run -p 6333:6333 qdrant/qdrant`. Без `-v` данные эфемерные, с `-v` - персистентные
  • **Три интерфейса:** REST (:6333) для обычной работы, gRPC (:6334) для высокого throughput при batch upsert, Web UI (:6333/dashboard) для отладки
  • **Qdrant Cloud** - бесплатный tier 1GB RAM (~100-150K векторов при размерности 1536), быстрый старт без DevOps
  • **TypeScript SDK** - `@qdrant/js-client-rest`, `QdrantClient` - единый API для self-hosted и Cloud
  • 1536 float32 векторов = ~6KB на вектор; HNSW индекс удваивает потребление памяти
  • Следующий шаг: создать первую коллекцию и загрузить данные

Что дальше

Qdrant запущен - теперь создадим коллекцию и разберём все параметры конфигурации.

  • Первая коллекция — VectorParams, distance, HNSW config - всё что нужно знать при создании
  • HNSW индекс — Алгоритм, обеспечивающий O(log n) поиск по миллиардам векторов

Вопросы для размышления

  • Чем отличается docker-compose подход от docker run для production? Что добавляет docker-compose?
  • Когда бесплатного tier Qdrant Cloud перестанет хватать? Какие метрики отслеживать?
  • При команде из 3 разработчиков - как организовать общий dev-инстанс Qdrant?

Связанные уроки

  • qd-01-intro — Что такое vector search и зачем он нужен
  • qd-03-collections — Первая коллекция, VectorParams, distance metrics
  • qd-06-hnsw — HNSW индекс - алгоритм за vector search в Qdrant
  • aie-10-vector-databases — Сравнение Qdrant, Pinecone, Weaviate, pgvector
  • qd-25-nestjs — Полная интеграция Qdrant с NestJS
  • pg-02-install-config — Похожий паттерн установки и конфигурации через env переменные
  • ml-01-intro
Установка и первый запуск

0

1

Войти