К основному содержимому
#ML

A Fun & Absurd Introduction to Vector Databases - Alexander Chatzizacharias - GOTO 2024 (Рубрика ML)

#ML #Software #Architecture #DistributedSystems #SystemDesign #Database

Интересный доклад про векторные базы данных для хранения 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