В последнее время особое внимание программистов привлекают векторные базы данных, которые отличаются своей способностью представлять данные в виде многомерных векторов и эффективно обрабатывать их с помощью методов машинного обучения и аналитики.
Что такое Вектор?
Вектор - это просто массив чисел, но вся его крутость заключается в том, что сам вектор может представлять собой более сложные объекты, такие как слова, аудиофайлы, предложения или изображения:
Эмбеддинги
Заходя в магазин продуктов, мы видим стеллажи распределенных по типу товаров. Например яблоки и груши в разделе фруктов, рядом стеллаж овощей и, как правило у кассы, различные батончики и жвачки.
Обратите внимание, как все похожие объекты сгруппированы вместе.
Аналогично работают и векторные пространства - Эмбеддинги (от eng. embedding). Единственное их различие от магазина продуктов в том, что вместо яблок и груш они сопоставляют семантическое значение слов или схожесть функций в практически любой другой тип данных. Затем эмбеддинги можно использовать как движок для поисковых/рекомендательных систем или генерации текста, примером которой и является всем известный ChatGPT.
Векторные Базы Данных
Эмбеддинги это конечно супер… но где их хранить и как быстро запрашивать данные?
И тут на помощь приходят Векторные Базы Данных.
В документах Реляционной Базы Данных у нас есть строки и столбцы, в Документной - документы и коллекции.В Векторной Базе Данных у нас есть только массивы чисел, сгруппированные в кластеры на основе их сходства. Это и делает Векторные БД идеальным выбором для работы с ИИ.
В реляционной базе данных PostgreSQL есть инструмент PG Vector, который предлагает схожий тип функциональности. Redis также обладает первоклассной поддержкой векторов.
Так же появляются и новые Векторные Базы Данных, такие как Weaviate и Milvus, написанные на Go, и довольно известный Pinecone, но он не является опенсорсным.
Почему же все о них говорят?
Настоящая причина популярности Векторных Баз Данных заключается в их способности расширить спектр возможностей LLM с помощью долгосрочной памяти:
Возьмем за базу любую LLM - пусть это будет GPT-4. Затем предоставим собственные данные в виде векторной базы данных.
Теперь, когда пользователь делает запрос к нашей Языковой Модели, она ищет соответствующие документы в нашей базе данных для обновления контекста запроса, что и значительно влияет на точность окончательного ответа пользователю.
Надеюсь вам понравилась данная статья и вы открыли для себя что то новое :)
До Новых Встреч!