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

Векторная база данных, хранилище векторов или поисковая система векторов — это база данных, использующая векторную модель для хранения векторов (списков чисел фиксированной длины) вместе с другими элементами данных.

Векторные базы данных обычно реализуют один или несколько алгоритмов приближенного поиска ближайшего соседа[1][2], что позволяет осуществлять поиск по базе данных с помощью векторного запроса для извлечения наиболее соответствующих запросу записей.

Векторы можно рассматривать как математические представления данных в многомерном пространстве. В этом пространстве каждое измерение соответствует признаку данных, а число измерений варьируется от нескольких сотен до десятков тысяч, в зависимости от сложности представляемых данных. Положение вектора в этом пространстве отражает его характеристики. Слова, фразы или целые документы, а также изображения, аудио и другие типы данных могут быть векторизованы[3].

Эти векторы признаков могут быть вычислены из исходных данных с помощью методов машинного обучения, таких как алгоритмы извлечения признаков, векторное представление слов[[4] или сети глубокого обучения. Цель состоит в том, чтобы семантически схожие элементы данных получали близкие друг к другу векторы признаков.

Векторные базы данных могут использоваться для поиска по сходству, семантического поиска, мультимодального поиска, рекомендательных систем, больших языковых моделей (LLM), обнаружения объектов и т. д.[3] Векторные базы данных также часто используются для реализации метода генерации, расширенной поисковыми запросами (RAG) – метода улучшения результатов, получаемых в больших языковых моделях в зависимости от предметной области.

Поисковым компонентом RAG может быть любая поисковая система, но чаще всего он реализуется в виде векторной базы данных. Собираются текстовые документы, описывающие интересующую область, и для каждого документа или раздела документа вычисляется вектор признаков (известный как «эмбединг»), обычно с помощью сети глубокого обучения, который сохраняется в векторной базе данных. По запросу пользователя вычисляется вектор признаков запроса, и к базе данных отправляется запрос для извлечения наиболее релевантных документов. Затем они автоматически добавляются в контекстное окно большой языковой модели, и большая языковая модель приступает к созданию ответа на запрос с учетом этого контекста[5].

Техники и алгоритмыПравить

К наиболее важным методам поиска сходства на многомерных векторах относятся:

и комбинации этих методов. [требуется ссылка] В последних тестах производительности реализации на основе HNSW показали одни из лучших результатов[1][2]. Такие конференции, как Международная конференция по поиску сходства и его применению, SISAP и Конференция по нейронным системам обработки информации (NeurIPS), проводят соревнования по векторному поиску в больших базах данных.

Векторные СУБДПравить

Векторная СУБД — это либо СУБД, специальной ориентированная на работу с векторными данными или СУБД общего назначения, поддерживающая векторные данный в качестве одного из формата данных.

ЛитератураПравить

ПримечанияПравить

  1. 1,0 1,1 Roie Schwaber-Cohen. What is a Vector Database & How Does it Work. Pinecone. Дата обращения: 18 ноября 2023.
  2. 2,0 2,1 What is a vector database. Elastic. Дата обращения: 18 ноября 2023.
  3. 3,0 3,1 Vector database. learn.microsoft.com (26 декабря 2023). Дата обращения: 11 января 2024.
  4. Evan Chaki. What is a vector database? Microsoft (31 июля 2023). — «A vector database is a type of database that stores data as high-dimensional vectors, which are mathematical representations of features or attributes.»
  5. Lewis, Patrick; Perez, Ethan; Piktus, Aleksandra; Petroni, Fabio; Karpukhin, Vladimir; Goyal, Naman; Küttler, Heinrich (2020). "Retrieval-augmented generation for knowledge-intensive NLP tasks". Advances in Neural Information Processing Systems 33: 9459–9474. arXiv:2005.11401.