Реляционные базы данных служили нам долгое время, но они имеют ограничения, когда дело доходит до работы с неструктурированными данными, такими как текст, изображения и голос, которые составляют большинство данных, генерируемых сегодня, пишет на портале The New Stack Джанакирам МСВ, главный аналитик Janakiram & Associates и адъюнкт-преподаватель Международного института информационных технологий (IIIT).

Языковые модели, в частности большие языковые модели (LLM), такие как GPT-4 и LLaMa, играют ключевую роль в формировании будущего управления данными, в частности, стимулируя внедрение нового типа баз данных, называемых векторными.

LLM используются для получения информации из огромных массивов данных, и они вносят изменения в парадигму хранения, управления и извлечения данных. Ниже мы рассмотрим связь между LLM и векторными базами данных, а также то, как последние становятся ключевыми компонентами стека корпоративного генеративного ИИ.

Отход от традиционных баз данных

Традиционные базы данных, такие как реляционные (РСУБД), служили нам долгое время, но потребность в эффективной обработке многомерных данных вызывает значительный сдвиг в сторону векторных баз данных, типа базы данных NoSQL, предназначенной для эффективной обработки больших и сложных данных.

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

Векторные базы данных специально разработаны для хранения и управления многомерными данными, такими как векторы. Вектор — это массив чисел, и в контексте генеративного ИИ он может представлять сложные типы данных, такие как текст, изображения, голос и даже структурированные данные.

Векторные базы данных имеют усовершенствованные алгоритмы индексирования и поиска, что делает их особенно эффективными для поиска по сходству, т. е. для поиска элементов, наиболее похожих на данный элемент. Это одно из ключевых требований для дополнения подсказок контекстными данными в генеративном ИИ.

Проще говоря, вектор — это упорядоченный список числовых значений или переменных. Элементы этого списка называются компонентами вектора.

В простом двумерном пространстве вектор может быть представлен следующим образом:

v = [x, y]

Здесь «x» и «y» — компоненты вектора «v». Первый компонент, «x», представляет собой координату x, а второй компонент, «y», — координату y в двухмерной декартовой системе координат.

Мы можем легко распространить это на трехмерное пространство:

v = [a, b, c]

В этом случае «a», «b» и «c» представляют собой координаты x, y и z соответственно.

Эта идея может быть обобщена на n-мерное пространство для n компонентов.

При использовании в контексте анализа данных или машинного обучения вектор может представлять точку данных в n-мерном пространстве, где каждый компонент представляет определенную характеристику или атрибут данных.

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

Например, слово «банк(а)» может быть представлено как 300-мерный вектор в модели представления слов, причем каждое измерение отражает определенный аспект значения или использования этого слова. Высокая размерность вектора поможет нам провести быстрый семантический поиск, который легко отличит фразы «речная банка» и «наличные в банке».

Пересечение LLM и векторных баз данных

LLM, такие как GPT-4, умеют понимать и генерировать человекоподобный текст. Они превращают текст в многомерные векторы (также известные как эмбеддинги, или представления), которые отражают семантический смысл текста. Такое преобразование позволяет выполнять сложные операции с текстом, например, находить похожие слова, предложения или документы, что является неотъемлемой частью многих приложений, таких как чатботы, рекомендательные системы и т. д.

Природа этих векторных представлений требует эффективного решения для хранения данных, способного индексировать и запрашивать эмбеддинги, и именно здесь на помощь приходят векторные базы данных. Они хранят эти многомерные векторы и обеспечивают эффективный поиск по сходству, что делает их идеальным выбором для приложений на основе LLM.

Векторные базы данных могут измерять расстояние между двумя векторами, что определяет их родство. Малые расстояния указывают на высокую степень родства, а большие расстояния — на низкую.

Если традиционные модели NLP полагаются на такие методы, как Word2Vec и GloVe, то модели-трансформеры, такие как GPT-3, создают контекстуализированные представления слов. Это означает, что представление слова может меняться в зависимости от контекста, в котором оно используется.

Разные LLM используют различные механизмы для генерации представлений слов/векторов. Например, модель text-embedding-ada-002 от OpenAI предназначена для генерации эмбеддингов, используемых в вариантах моделей text-davinci-003 и gpt-turbo-35. А PaLM 2 от Google использует для генерации векторных эмбеддингов модель embedding-gecko-001.

Как векторные базы данных улучшают память LLM

Как известно LLM склонны к галлюцинациям, когда им не хватает контекста. Хотя введение контекста является неотъемлемой частью расширения подсказки, модели имеют ограниченный размер лексем на входе. Это означает, что мы не можем встраивать в подсказку большие объемы текста.

Рабочий процесс, связанный с использованием векторных баз данных для введения контекста и дополнения подсказки

Кодируя данные, хранящиеся в неструктурированных форматах, таких как PDF, документы MS Word и др., в виде представлений слов и сохраняя их в векторной базе данных, мы можем выполнить семантический поиск, чтобы получить достаточное количество данных, необходимых для подсказки. Поскольку запрос к векторной базе данных выполняется гораздо быстрее, чем кодирование большого документа в представления слов/векторы, это значительно ускоряет процесс.