Урок курса
Векторная база данных: что это и как выбрать
Vector DB & RAG DeveloperВекторная база данных хранит эмбеддинги и быстро ищет ближайшие к запросу векторы. Обычно вместе с вектором сохраняются исходный текст, идентификатор документа и metadata: язык, дата, источник, категория и права доступа.
Почему обычного перебора недостаточно
Точный поиск сравнивает запрос с каждым вектором. На небольшом наборе это работает, но стоимость растёт вместе с числом объектов. Для больших коллекций применяют approximate nearest neighbors — приближённый поиск соседей.
Распространённые индексы:
- HNSW строит граф связей между близкими векторами и даёт хорошую скорость и recall ценой памяти;
- IVF делит пространство на кластеры и во время запроса просматривает только часть из них;
- PQ сжимает векторы и уменьшает память, допуская потерю точности.
Параметры индекса управляют компромиссом между скоростью, памятью и полнотой выдачи. Их нельзя выбирать отдельно от реальных запросов.
FAISS, Qdrant и Weaviate
FAISS — библиотека индексов, а не полноценная многопользовательская база. Она удобна для локальных экспериментов, batch-обработки и систем, где хранением, резервным копированием и API управляет само приложение.
Qdrant — специализированная vector database с сервером, коллекциями, payload-фильтрами и HTTP/gRPC API. Она подходит, когда нужны персистентность, фильтрация, несколько клиентов и самостоятельное развёртывание.
Weaviate сочетает векторное хранилище со схемой объектов, модулями и готовыми интеграциями. Выбор зависит не от таблицы «кто быстрее вообще», а от конкретной нагрузки и инфраструктуры.
При выборе проверьте:
- размер коллекции и частоту обновлений;
- фильтрацию до или во время vector search;
- требования к latency и recall;
- backup, репликацию и multi-tenancy;
- место развёртывания и стоимость эксплуатации;
- поддержку нужной метрики и размерности вектора.
Метаданные и безопасность
В реальном RAG одной похожести недостаточно. Пользователь из отдела продаж не должен получить документ юридического отдела только потому, что он семантически близок. Идентификатор tenant и ACL должны участвовать в фильтре до выдачи результатов.
Храните связь с исходником: document_id, chunk_id, version, page и checksum. Тогда документ можно обновить без накопления старых копий, а ответ — снабдить проверяемой ссылкой.
Начинайте с простого baseline. На десятках тысяч векторов локальный индекс может быть достаточен. Переход к отдельной базе оправдан, когда появляются конкурентные записи, фильтрация, управление доступом, мониторинг и требования к восстановлению.
Векторная база ускоряет поиск, но не исправляет плохие эмбеддинги и чанкинг. Сначала измерьте retrieval quality, затем оптимизируйте инфраструктуру.
Попробуйте решить
В каком случае отдельная векторная база особенно оправдана?
Продолжить с проверкой и прогрессом
Откройте интерактивный раннер с заданиями урока.
