В нашей предыдущей публикации мы обсуждали соображения по поводу выбора базы данных векторов для нашего гипотетического варианта использования дополненной генерации поиска (RAG). Но при создании приложения RAG нам часто приходится принимать еще одно важное решение: выбрать модель векторного внедрения, важнейший компонент многих генеративных приложений ИИ.
Модель векторного внедрения отвечает за преобразование неструктурированных данных (текста, изображений, аудио, видео) в вектор чисел, который фиксирует семантическое сходство между объектами данных. Модели внедрения широко используются помимо приложений RAG, включая системы рекомендаций, поисковые системы, базы данных и другие системы обработки данных.
Понимание их назначения, внутреннего устройства, преимуществ и недостатков имеет решающее значение, и именно об этом мы и поговорим сегодня. Хотя мы будем обсуждать только модели внедрения текста, модели для других типов неструктурированных данных работают аналогично.
Что такое модель внедрения?
Модели машинного обучения не работают с текстом напрямую, им требуются числа в качестве входных данных. Поскольку текст встречается повсеместно, со временем сообщество ML разработало множество решений, обеспечивающих преобразование текста в числа. Существует множество подходов различной сложности, но мы рассмотрим лишь некоторые из них.
Простой пример: горячее кодирование: рассматривать слова текста как категориальные переменные и сопоставлять каждое слово с вектором из 0 и одной единицы.
К сожалению, этот подход к внедрению не очень практичен, поскольку он приводит к большому количеству уникальных категорий и приводит к неуправляемой размерности выходных векторов в большинстве практических случаев. Кроме того, горячее кодирование не помещает похожие векторы ближе друг к другу в векторном пространстве.
Для решения этих проблем были изобретены модели внедрения. Как и горячее кодирование, они принимают текст в качестве входных данных и возвращают векторы чисел в качестве выходных данных, но они более сложны, поскольку обучаются с помощью контролируемых задач, часто с использованием нейронной сети. Контролируемой задачей может быть, например, прогнозирование оценки настроений при обзоре продукта. В этом случае полученная модель внедрения разместит обзоры схожих настроений ближе друг к другу в векторном пространстве. Выбор контролируемой задачи имеет решающее значение для создания соответствующих внедрений при построении модели внедрения.
На диаграмме выше мы видим только встраивания слов, но часто нам нужно нечто большее, поскольку человеческий язык сложнее, чем просто множество слов, вместе взятых. Семантика, порядок слов и другие лингвистические параметры должны быть приняты во внимание, а это значит, что нам нужно вывести это на новый уровень – модели встраивания предложений.
Встраивания предложений связывают входное предложение с вектором чисел и, как и ожидалось, являются более сложными внутри, поскольку им приходится фиксировать более сложные отношения.
Благодаря прогрессу в глубоком обучении все современные модели внедрения создаются с использованием глубоких нейронных сетей, поскольку они лучше фиксируют сложные отношения, присущие человеческому языку.
Хорошая модель внедрения должна:
- Быть быстрым поскольку зачастую это всего лишь этап предварительной обработки в более крупном приложении
- Возвратные векторы управляемые размеры
- Возвращать векторы, которые собрать достаточно информации о сходстве быть практичным
Давайте теперь быстро рассмотрим, как большинство моделей внедрения организованы внутри.
Современная архитектура нейронных сетей
Как мы только что упомянули, все хорошо работающие современные модели внедрения представляют собой глубокие нейронные сети.
Это активно развивающаяся область, и большинство наиболее эффективных моделей связаны с некоторыми новыми улучшениями архитектуры. Давайте кратко рассмотрим две очень важные архитектуры: BERT и GPT.
BERT (Представления двунаправленного кодировщика от трансформаторов) был опубликован в 2018 году исследователями Google и описал применение двунаправленного обучения «трансформера», популярной модели внимания, к языковому моделированию. Стандартные преобразователи включают в себя два отдельных механизма: кодер для чтения входного текста и декодер, который делает прогноз.
BERT использует кодировщик, который считывает все предложение слов сразу, что позволяет модели изучать контекст слова на основе всего его окружения, слева и справа, в отличие от устаревших подходов, которые рассматривали текстовую последовательность слева направо или справа налево. левый. Перед подачей последовательности слов в BERT некоторые слова заменяются токенами (MASK), а затем модель пытается предсказать исходное значение замаскированных слов на основе контекста, предоставляемого другими, не замаскированными словами в последовательности.
Стандартный BERT не очень хорошо работает в большинстве тестов, а модели BERT требуют тонкой настройки для конкретной задачи. Но он имеет открытый исходный код, существует с 2018 года и имеет относительно скромные системные требования (может обучаться на одном графическом процессоре среднего класса). В результате он стал очень популярным для многих задач, связанных с текстом. Он быстрый, настраиваемый и небольшой. Например, очень популярная модель Mini-LM представляет собой модифицированную версию BERT.
GPT (Генераторный предварительно обученный трансформатор) от OpenAI отличается. В отличие от BERT, он является однонаправленным, т.е. текст обрабатывается в одном направлении и использует декодер трансформаторной архитектуры, подходящий для предсказания следующего слова в последовательности. Эти модели медленнее и создают вложения очень большой размерности, но обычно имеют гораздо больше параметров, не требуют тонкой настройки и более применимы для многих задач «из коробки». GPT не имеет открытого исходного кода и доступен в виде платного API.
Длина контекста и данные обучения
Еще одним важным параметром модели внедрения является длина контекста. Длина контекста — это количество токенов, которые модель может запомнить при работе с текстом. Более длинное контекстное окно позволяет модели понимать более сложные взаимосвязи в более широком тексте. В результате модели могут обеспечивать более высокое качество результатов, например, лучше улавливать семантическое сходство.
Чтобы использовать более длинный контекст, обучающие данные должны включать более длинные фрагменты связного текста: книги, статьи и т. д. Однако увеличение длины контекстного окна увеличивает сложность модели и увеличивает требования к вычислительным ресурсам и памяти для обучения.
Существуют методы, которые помогают управлять требованиями к ресурсам, например приблизительное внимание, но они делают это за счет качества. Это еще один компромисс, влияющий на качество и стоимость: большая длина контекста отражает более сложные взаимоотношения человеческого языка, но требует больше ресурсов.
Также, как всегда, для всех моделей очень важно качество обучающих данных. Встраиваемые модели не являются исключением.
Семантический поиск и получение информации
Использование моделей внедрения для семантического поиска — относительно новый подход. На протяжении десятилетий люди использовали другие технологии: логические модели, скрытое семантическое индексирование (LSI) и различные вероятностные модели.
Некоторые из этих подходов достаточно хорошо работают для многих существующих вариантов использования и до сих пор широко используются в отрасли.
Одной из самых популярных традиционных вероятностных моделей является BM25 (BM — «наилучшее соответствие»), функция ранжирования релевантности поиска. Он используется для оценки релевантности документа поисковому запросу и ранжирует документы на основе условий запроса из каждого индексированного документа. Лишь недавно модели внедрения начали стабильно превосходить его по производительности, но BM25 все еще широко используется, поскольку он проще, чем модели внедрения, требует меньших требований к компьютеру, а результаты объяснимы.
Тесты
Не каждый тип модели имеет комплексный подход к оценке, который помогает выбрать существующую модель.
К счастью, модели внедрения текста имеют общие наборы тестов, такие как:
В статье «BEIR: гетерогенный эталон для нулевой оценки моделей поиска информации» предложен эталонный набор тестов и наборов данных для задач поиска информации. Исходный тест BEIR состоит из набора из 19 наборов данных и методов оценки качества поиска. Методы включают в себя: ответы на вопросы, проверку фактов и извлечение сущностей. Теперь любой, кто выпускает модель встраивания текста для задач поиска информации, может запустить тест и посмотреть, насколько его модель соответствует конкурентам.
Тесты массового встраивания текста включают BEIR и другие компоненты, которые охватывают 58 наборов данных и 112 языков. Публичную таблицу лидеров результатов MTEB можно найти. здесь.
Эти тесты проводились на многих существующих моделях, и их таблицы лидеров очень полезны для осознанного выбора модели.
Использование встраивания моделей в производственную среду
Результаты тестов по стандартным задачам очень важны, но они представляют собой только одно измерение.
Когда мы используем модель внедрения для поиска, мы запускаем ее дважды:
- При автономном индексировании доступных данных
- При встраивании пользовательского запроса в поисковый запрос
Из этого есть два важных последствия.
Во-первых, нам приходится переиндексировать все существующие данные при изменении или обновлении модели внедрения. Все системы, созданные с использованием встроенных моделей, должны быть спроектированы с учетом возможности обновления, поскольку постоянно выпускаются новые и лучшие модели, и в большинстве случаев обновление модели — это самый простой способ улучшить общую производительность системы. Модель внедрения в этом случае является менее стабильным компонентом системной инфраструктуры.
Вторым последствием использования модели внедрения для пользовательских запросов является то, что задержка вывода становится очень важной, когда число пользователей увеличивается. Вывод модели требует больше времени для более производительных моделей, особенно если для их работы требуется графический процессор: задержка более 100 мс для небольшого запроса не является чем-то неслыханным для моделей, которые имеют более 1 миллиарда параметров. Оказывается, что меньшие по размеру и компактные модели по-прежнему очень важны в сценарии производства с более высокой нагрузкой.
Компромисс между качеством и задержкой реален, и мы всегда должны помнить об этом при выборе модели внедрения.
Как мы упоминали выше, модели внедрения помогают управлять размерностью выходного вектора, что влияет на производительность многих последующих алгоритмов. Обычно, чем меньше модель, тем короче длина выходного вектора, но зачастую она слишком велика для моделей меньшего размера. Именно тогда нам нужно использовать алгоритмы уменьшения размерности, такие как PCA (анализ главных компонентов), SNE/tSNE (стохастическое встраивание соседей) и UMAP (аппроксимация равномерного многообразия).
Еще одно место, где мы можем использовать уменьшение размерности, — это перед сохранением вложений в базе данных. Полученные в результате векторные встраивания будут занимать меньше места, а скорость извлечения будет выше, но за это придется платить за качество последующего процесса. Векторные базы данных часто не являются основным хранилищем, поэтому встраивания можно регенерировать с большей точностью из исходных исходных данных. Их использование помогает уменьшить длину выходного вектора и, как следствие, делает систему более быстрой и компактной.
Правильный выбор
Существует множество факторов и компромиссов, которые следует учитывать при выборе модели внедрения для конкретного варианта использования. Оценка потенциальной модели в общих тестах важна, но не следует забывать, что более крупные модели имеют более высокий балл. Более крупные модели имеют более длительное время вывода, что может серьезно ограничить их использование в сценариях с низкой задержкой, поскольку часто модель внедрения является этапом предварительной обработки в более крупном конвейере. Кроме того, для работы более крупных моделей требуются графические процессоры.
Если вы собираетесь использовать модель в сценарии с низкой задержкой, лучше сначала сосредоточиться на задержке, а затем посмотреть, какие модели с приемлемой задержкой имеют лучшую в своем классе производительность. Кроме того, при построении системы со встроенной моделью вам следует планировать изменения, поскольку постоянно выпускаются более совершенные модели, и часто это самый простой способ улучшить производительность вашей системы.
Об авторе
Ник Волынец — старший инженер по данным, работающий в офисе технического директора, где ему нравится быть в центре инноваций DataRobot. Он интересуется крупномасштабным машинным обучением и увлечен искусственным интеллектом и его влиянием.
Знакомьтесь: Ник Волынец