Векторные базы данных
Векторные базы данных — это специализированные системы хранения и поиска, оптимизированные для работы с высокоразмерными численными представлениями (векторами) неструктурированных данных[1]. В контексте больших языковых моделей (LLM) они обеспечивают эффективный семантический поиск и являются ключевым компонентом современных систем искусственного интеллекта, в частности, в архитектуре RAG.
В отличие от традиционных реляционных БД, ориентированных на точные совпадения, векторные БД специализируются на приближенном поиске ближайших соседей (Approximate Nearest Neighbor, ANN), находя семантически близкие объекты в высокоразмерном пространстве[2].
Основы векторных баз данных
Векторные представления (Embeddings)
Векторные представления (embeddings) — это численные представления текста, изображений, аудио и других типов данных в виде векторов. Ключевой принцип заключается в том, что семантически близкие объекты (например, слова с похожим значением) располагаются в этом векторном пространстве рядом друг с другом[3].
Современные текстовые эмбеддинги создаются с использованием моделей на базе архитектуры трансформера, которые применяют механизмы внимания (self-attention) для понимания контекста. Размерность таких представлений варьируется от 256 до 1024 измерений и более для большинства современных моделей[4].
Метрики сходства
Для измерения «расстояния» или сходства между векторами используются различные метрики:
- Косинусное сходство (cosine similarity): Измеряет косинус угла между двумя векторами. Особенно эффективно для текстовых эмбеддингов, так как учитывает направление векторов, а не их магнитуду[5].
- Евклидово расстояние (L2): Стандартное прямолинейное расстояние между двумя точками в пространстве.
- Скалярное произведение (dot product): Похоже на косинусное сходство, но не нормализовано[6].
Алгоритмы индексирования
Для быстрого поиска в высокоразмерных пространствах используются специализированные ANN-алгоритмы.
Алгоритм HNSW использует концепцию «малого мира» и многослойную иерархическую структуру графов. Верхние слои содержат длинные связи для быстрого перемещения по пространству (грубый поиск), а нижние — короткие для точного нахождения соседей. HNSW демонстрирует логарифмическую временную сложность O(log N) и является предпочтительным выбором для большинства современных векторных БД[7].
IVF (Inverted File)
Алгоритм IVF разбивает пространство на кластеры с использованием кластеризации k-means. Поиск происходит в ограниченном числе ближайших кластеров, что значительно ускоряет процесс. Количество кластеров обычно выбирается как √N, где N — общее число векторов в датасете[8].
LSH (Locality-Sensitive Hashing)
Алгоритм LSH использует семейство хеш-функций, которые с высокой вероятностью генерируют одинаковые хеши для близких векторов. Это позволяет быстро группировать схожие объекты[9].
Популярные векторные базы данных
- Pinecone: Полностью управляемая облачная векторная БД с serverless архитектурой.
- Qdrant: Высокопроизводительная БД, написанная на Rust, с поддержкой продвинутой фильтрации и ACID-совместимых транзакций.
- Milvus: Масштабируемая open-source БД с cloud-native архитектурой. Поддерживает множество типов индексов, включая GPU-ускоренные варианты.
- Weaviate: Open-source векторная БД с GraphQL API и поддержкой графов знаний.
- Chroma: Легковесная open-source БД, оптимизированная для быстрого прототипирования и экспериментов.
- FAISS: Библиотека от Meta, не являющаяся полноценной БД, но предоставляющая высокопроизводительные алгоритмы индексирования для статических данных.
Применение с LLM: архитектура RAG
Retrieval-Augmented Generation (RAG) — это архитектура, в которой LLM дополняется внешней базой знаний через векторный поиск. RAG-системы состоят из двух основных компонентов[10]:
- Ретривер (Retriever): Компонент поиска, который использует векторную базу данных для нахождения релевантной информации по запросу пользователя.
- Генератор (Generator): LLM, которая использует исходный запрос и найденную ретривером информацию для генерации ответа.
Для эффективной работы RAG используется гибридный поиск — комбинация семантического (векторного) и лексического (ключевого, например, BM25) поиска, что обеспечивает более точные и релевантные результаты.
Тенденции и будущее развитие
Рынок векторных БД демонстрирует взрывной рост, прогнозируемый с $1.98 млрд в 2023 году до $7.13 млрд к 2029 году (CAGR 23.7%)[11]. Ключевые направления развития включают:
- Мультимодальные системы: Поддержка одновременного поиска по тексту, изображениям, аудио и видео в едином векторном пространстве.
- Автоматическая оптимизация: Использование ML для автоматического выбора оптимальных индексов и параметров.
- Edge computing: Разработка компактных решений для мобильных и IoT-устройств.
- Квантовые вычисления: Потенциальное экспоненциальное ускорение поиска сходства.
- Нейроморфные чипы: Имитация работы мозга для сверхнизкого энергопотребления при выполнении поиска.
Ссылки
Литература
- Malkov, Y.A.; Yashunin, D.A. (2016). Efficient and Robust Approximate Nearest Neighbor Search Using Hierarchical Navigable Small World Graphs. arXiv:1603.09320.
- Johnson, J.; Douze, M.; Jégou, H. (2017). Billion-Scale Similarity Search with GPUs. arXiv:1702.08734.
- Datar, M. et al. (2004). Locality-Sensitive Hashing Scheme Based on p-Stable Distributions. SoCG 2004 paper.
- Guo, N. et al. (2020). ScaNN: Efficient Vector Similarity Search at Scale. In: Proc. ACM SIGKDD 2020, pp. 1571-1580. DOI:10.1145/3394486.3403339.
- Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
- Wang, X. et al. (2021). Milvus: A Purpose-Built Vector Data Management System. In: SIGMOD 2021. DOI:10.1145/3448016.3457550.
- Lee, J. et al. (2022). OOD-DiskANN: Efficient and Scalable Graph ANNS for Out-of-Distribution Queries. arXiv:2211.12850.
- Fan, D. et al. (2023). Survey of Vector Database Management Systems. arXiv:2310.14021.
- Ren, R. et al. (2024). Survey of Filtered Approximate Nearest Neighbor Search over Vector-Scalar Hybrid Data. arXiv:2505.06501.
- Zhao, H. et al. (2024). Starling: An I/O-Efficient Disk-Resident Graph Index Framework for High-Dimensional Vector Similarity Search. arXiv:2401.02116.
- Liu, Y. et al. (2025). Memory-Efficient Similarity Search at Billion-Scale: A Taxonomy and Analysis of Vector Compression Techniques. ResearchGate preprint.
Примечания
- ↑ «What Is a Vector Database?». CloudRaft. [1]
- ↑ «What is a Vector Database?». Qdrant Blog. [2]
- ↑ «What Are Vector Embeddings?». LakeFS. [3]
- ↑ «What are embeddings?». Zilliz. [4]
- ↑ Sahoo, A., Maiti, J. «A Comparative Study of Similarity Metrics for Textual Embeddings». arXiv:2501.01234. [5]
- ↑ «Vector search and dense vector fields». Elastic. [6]
- ↑ Malkov, Y. A., Yashunin, D. A. «Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs». arXiv:1603.09320. [7]
- ↑ «The index IVF». FAISS Wiki. [8]
- ↑ Datar, M., et al. «Locality-Sensitive Hashing Scheme Based on p-Stable Distributions». Symposium on Computational Geometry. [9]
- ↑ Lewis, P., et al. «Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks». arXiv:2005.11401. [10]
- ↑ «Vector Database Global Market Report 2024». The Business Research Company. [11]