Векторная база данных — это специализированная система хранения, предназначенная для работы с многомерными векторами — числовыми массивами, обычно состоящими из сотен или тысяч чисел с плавающей точкой, которые модели машинного обучения используют для представления смысла. Слова, предложения, изображения, аудиофрагменты и поведение пользователей — всё это можно кодировать в виде векторов, и векторная база данных позволяет хранить миллиарды таких эмбеддингов и находить ближайшие совпадения к новому запросу за миллисекунды.
Как работает векторная база данных
Когда модель машинного обучения, такая как большая языковая модель или энкодер изображений, создаёт эмбеддинг, этот вектор отправляется в базу данных вместе со ссылкой на исходный объект — фрагмент текста, файл изображения, запись о товаре и так далее. База данных строит индекс с использованием алгоритма приблизительного поиска ближайших соседей (ANN), такого как HNSW (Hierarchical Navigable Small World) или IVF (Inverted File Index) — структур, которые немного жертвуют точностью ради значительно более быстрых запросов на больших наборах данных. Во время поиска приложение отправляет свежий эмбеддинг в качестве запроса, и индекс возвращает top-k векторов, ранжированных по метрике сходства — обычно косинусному сходству, скалярному произведению или евклидову расстоянию.
Почему это важно
Традиционный поиск по ключевым словам не способен определить, что «пушистый питомец» и «домашняя кошка» означают почти одно и то же, но их эмбеддинги оказываются близко друг к другу в векторном пространстве, поэтому векторная база данных всё равно находит их как совпадения. Именно эта возможность лежит в основе современного семантического поиска, рекомендательных систем, поиска изображений и аудио, обнаружения аномалий и этапа извлечения в Retrieval-Augmented Generation (RAG), где LLM опирается на документы, полученные из векторного хранилища. Без специально разработанного индексирования сравнение запроса с миллионами векторов по одному было бы слишком медленным для продакшн-нагрузки.
Основные типы и примеры
- Специализированные векторные базы данных: движки, созданные специально для этой задачи, такие как Milvus, Qdrant, Weaviate и Pinecone, с самого начала спроектированные вокруг ANN-индексов.
- Библиотеки векторного поиска: лёгкие движки, такие как FAISS и Annoy, которые работают внутри приложения, а не как отдельный сервис.
- Гибридные базы данных: традиционные хранилища, такие как PostgreSQL (через pgvector), Elasticsearch и MongoDB, которые добавляют векторное индексирование к существующим документным или реляционным возможностям.
- Управляемые облачные сервисы: хостинговые предложения от крупных облачных провайдеров, которые интегрируют векторный поиск с более широкими платформами обработки данных.
Выбор между ними обычно зависит от масштаба, требований к задержке, от того, хранятся ли данные вместе со структурированными записями, и от того, какую операционную нагрузку готова взять на себя команда. Лучшие системы в этой области оцениваются на бенчмарках, таких как таблица лидеров ANN-Benchmarks, которая сравнивает полноту с количеством запросов в секунду на репрезентативных наборах данных.