векторная база данных
Векторная база данных — специализированная система управления данными, оптимизированная для хранения, индексирования и поиска высокоразмерных векторных представлений (эмбеддингов). В отличие от реляционных баз, где поиск ведётся по точному совпадению значений, векторные БД находят семантически близкие объекты с помощью приближённого поиска ближайших соседей (ANN).
Зачем нужны векторные базы данных
Современные AI-системы преобразуют текст, изображения, аудио и другие данные в числовые векторы — эмбеддинги. Семантически близкие объекты имеют близкие векторы в многомерном пространстве. Задача: для данного запроса быстро найти k ближайших векторов среди миллионов или миллиардов хранящихся. Брутфорс-поиск (сравнение со всеми) слишком медленен; ANN-индексы решают эту задачу за миллисекунды.
Алгоритмы индексирования
HNSW (Hierarchical Navigable Small World)
Строит иерархический граф: вершины — это векторы, рёбра соединяют близких соседей. Поиск начинается с редкого верхнего уровня и постепенно углубляется к точному соседству. Высокая recall и скорость поиска, но требует памяти пропорционально числу рёбер.
IVF (Inverted File Index)
Векторы кластеризуются (k-means), поиск ведётся только в ближайших кластерах. Масштабируется на очень большие коллекции, поддаётся сжатию через Product Quantization (PQ).
ANNOY (Approximate Nearest Neighbors Oh Yeah)
Дерево случайных проекций. Хорошо подходит для read-heavy нагрузок с предзагруженными индексами.
Метрики расстояния
Косинусное сходство — стандарт для текстовых эмбеддингов: измеряет угол между векторами, игнорируя их длину. Евклидово расстояние — для пространственных данных. Dot product — эффективен, когда векторы нормализованы. Выбор метрики зависит от модели, генерировавшей эмбеддинги.
Основные векторные базы данных
Pinecone
Полностью управляемый облачный сервис. Нет необходимости в администрировании инфраструктуры. Поддерживает метаданные и гибридный поиск. Хорош для быстрого старта и enterprise.
Qdrant
Open-source, написан на Rust. Высокая производительность, богатая фильтрация по payload, поддержка многовекторных записей. Разворачивается локально или в облаке.
Weaviate
Граф-ориентированная архитектура, мощный GraphQL API, встроенная интеграция с моделями (text2vec). Поддерживает мультимодальные данные.
Chroma
Лёгкая, встраиваемая БД для прототипирования. Работает in-process в Python, минимальная настройка. Не для production при больших нагрузках.
pgvector
Расширение для PostgreSQL. Если уже используется Postgres, pgvector добавляет поддержку векторного поиска без дополнительной инфраструктуры. Производительность уступает специализированным решениям при больших объёмах.
Milvus
Высокомасштабируемая open-source система. Разработана для миллиардов векторов, поддерживает несколько типов индексов и GPU-ускорение.
Гибридный поиск
Семантический поиск хорошо находит смысловые связи, но плохо работает с точными терминами, именами, аббревиатурами. BM25/TF-IDF хорошо справляется с точным вхождением, но не понимает семантику. Гибридный поиск объединяет оба подхода через Reciprocal Rank Fusion или взвешенную комбинацию скоров. Большинство production-RAG-систем используют именно гибридный поиск.
Применение векторных БД
- RAG-системы для корпоративного поиска по документам.
- Рекомендательные системы на основе сходства контента.
- Поиск дублей и плагиата в больших коллекциях.
- Системы обнаружения аномалий (найти векторы, далёкие от всех остальных).
- Мультимодальный поиск по изображениям через текстовый запрос (CLIP-эмбеддинги).
Выбор векторной базы данных
Для прототипа: Chroma или pgvector (если уже есть Postgres). Для production с умеренной нагрузкой: Qdrant или Weaviate. Для enterprise-масштаба без администрирования: Pinecone. Для миллиардов векторов on-premise: Milvus. Смотрите на recall@k, QPS, задержку p99, стоимость хранения и поддержку фильтрации.
Частые вопросы
Чем векторная база данных отличается от обычной базы данных?
Реляционные и NoSQL базы данных ищут по точному совпадению значений или диапазонам. Векторные базы данных ищут по семантическому сходству: находят записи, чьи векторные представления математически близки к вектору запроса. Это принципиально другой тип поиска, недоступный традиционным СУБД без специальных расширений (pgvector).
Как векторная база данных используется в RAG?
Документы разбиваются на чанки, каждый преобразуется в вектор через embedding-модель и сохраняется в векторной БД. При поступлении запроса от пользователя он тоже преобразуется в вектор, и БД находит k ближайших чанков. Эти чанки передаются LLM как контекст для генерации ответа.
Нужна ли GPU для работы векторной базы данных?
Для индексирования и поиска на CPU большинство векторных БД работают отлично. GPU ускоряет построение индексов для очень больших коллекций (миллиарды векторов) и массовую пакетную обработку. Для production-систем с типичными нагрузками (до сотен миллионов векторов) CPU-решений вполне достаточно.
Другие термины в теме «ИИ и машинное обучение»
Не хватает деталей?
Напишите, что уточнить по теме «векторная база данных» — это помогает улучшать материал и подсказывает, какие термины добавить дальше. Email необязателен: укажите, если хотите ответ только для вас (мы не шлём рассылки).