Векторные базы данных

Материал из Systems analysis wiki
Перейти к навигации Перейти к поиску

Векторные базы данных — это специализированные системы хранения и поиска, оптимизированные для работы с высокоразмерными численными представлениями (векторами) неструктурированных данных[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 (Hierarchical Navigable Small World)

Алгоритм 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]:

  1. Ретривер (Retriever): Компонент поиска, который использует векторную базу данных для нахождения релевантной информации по запросу пользователя.
  2. Генератор (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.

Примечания

  1. «What Is a Vector Database?». CloudRaft. [1]
  2. «What is a Vector Database?». Qdrant Blog. [2]
  3. «What Are Vector Embeddings?». LakeFS. [3]
  4. «What are embeddings?». Zilliz. [4]
  5. Sahoo, A., Maiti, J. «A Comparative Study of Similarity Metrics for Textual Embeddings». arXiv:2501.01234. [5]
  6. «Vector search and dense vector fields». Elastic. [6]
  7. Malkov, Y. A., Yashunin, D. A. «Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs». arXiv:1603.09320. [7]
  8. «The index IVF». FAISS Wiki. [8]
  9. Datar, M., et al. «Locality-Sensitive Hashing Scheme Based on p-Stable Distributions». Symposium on Computational Geometry. [9]
  10. Lewis, P., et al. «Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks». arXiv:2005.11401. [10]
  11. «Vector Database Global Market Report 2024». The Business Research Company. [11]