A Fun & Absurd Introduction to Vector Databases - Alexander Chatzizacharias - GOTO 2024 (Рубрика ML)
Интересный доклад про векторные базы данных для хранения embeddings, которые активно применяются в современном мире в AI приложениях:) Классно, что тут мало сложных слов и много понятных и забавных примеров для объяснения этой нетривиальной темы. Основные тезисы в докладе такие
- Все начинается с определения вектора, который является математической конструкцией, в которой определена длина и направление
- Дальше говорится о том, что векторы используются повсюду, но для ML важными вехами были -- Word2vec - 2013 год - модели, предназначенные для получения векторных представлений слов на естественном языке (не учитывается контекст при векторизации) -- GloVe (Global Vectors) - 2014 год - model for distributed word representation (не учитывается контекст при векторизации) -- BERT (Bidirectional Encoder Representations from Transformers) - 2018 год - Model the learned by self-supervised learning to represent text as a sequence of vectors (учитывается контекст при векторизации) -- CLIP (Contrastive Language-Image Pre-Training) is a neural network trained on a variety of (image, text) pairs (учитывается контекст при векторизации)
- Дальше автор переходит к обсуждению того, а что такое векторная база данных, для чего она нужна и как она работает -- Это не general база данных - в нее не стоит сувать все подряд -- В ней хранятся и индексируются векторы с большими размерностями -- Данные забираются из базы с использованием Nearest Neighbor Search (NNS)
- Векторная база данных из коробки позволяет делать семантический поиск по данным, часто такие базы данных используются в качестве системы хранения для AI систем
- Индексирование в векторных базах данных очень интересно -- Есть точные способы для поиска соседей: linear search, k-nearest neighbors, space partitioning, ... -- Есть приблизительные способы: inverted file with flat compression (IVFFlat), locality-sensitive hashing (LSH), approximate nearest neighbors oh yeah (ANNOY), hierarchical navigable small world (HNSW), ... -- Все эти способы используют определенные метрики расстояния/близости: euclidean distance/similarity, cosine distance/similarity, hamming distance, manhatten distance, dot product, .. -- Вычисление дистанций и индексирование происходит в одном и том же векторном пространстве
- Сейчас очень популярна тема создания отдельных векторных баз, а также создание расширений внутри существующих (pg, redis, elastic)
- У некоторых баз данных есть встроенная функциональность, что позволяет автоматически векторизовать данные
- У большинства баз есть python клиент, javascrip клиент или REST API
У выступающего отличные демки, где он показывает как можно использовать векторные базы данных. Для этого он используют игровые визуализации на Unity, код на Kotlin и векторную базу Weaviate, которая open-source, модульная, может сама векторизировать данные, а также есть java клиент и документация. В демо используется косинусное расстояние и HNSW (hierarchical navigable small world).
Демки показывают следующие сценарии
- Векторизация названий вооружений и дальше их семантический поиск, как искал когда-то Нео в Матрице
- Векторизации заклинаний из Dungeon & Dragons и дальше их семантический поиск
- Векторизация изображений покемонов и поиск по ним
- Векторизация музыки и дальше поиск по ней
В итоге, это очень прикольный пример доклада, который рассказывает базу про одну из горячих тем, показывает демо и как бы приглашает слушаетелей самим поиграть с этой технологией.
#Software #Architecture #DistributedSystems #SystemDesign #Database