Серия статей о построении точной большой языковой модели для нейронного поиска с нуля. Мы начнем с BERT и преобразователей предложений, пройдемся по тестам семантического поиска, таким как BEIR, современным моделям, таким как SGPT и E5, и закончим построением нашей игрушечной модели встраивания.

Проблема с семантическим поиском

Базовый дизайн системы семантического поиска, предложенный большинством поставщиков векторного поиска, состоит из двух простых (это ирония судьбы)шагов:

  1. Вычислите вложения для ваших документов и запросов. Где-то. Как-то. Разберитесь сами.
  2. Загрузите их в векторный поисковик и наслаждайтесь более качественным семантическим поиском.

Ваш семантический поиск так же хорош, как и ваша модель внедрения, но выбор модели часто считается невозможным для большинства первых пользователей. Так что все просто берут фразу трансформеры/все-MiniLM-L6-v2 и надеются на лучшее.

Но у этого подхода больше открытых вопросов, чем ответов:

  • Есть ли разница между встроенными моделями? Платные модели от OpenAI и Cohere лучше?
  • Как они справляются с несколькими языками? Есть ли преимущество в больших моделях 1B+?
  • Плотный поиск с использованием вложений — один из многих методов семантического поиска. Лучше ли это разреженных подходов нового века, таких как SPLADEv2 и ELSER?

Кроличья нора вложений

В этой серии из 5 статей мы сосредоточимся на выборе и создании надеюсь лучшей модели внедрения семантического поиска. Текущий план:

  1. (тот, который вы сейчас читаете) Введение во встраивание моделей. Базовые вложения, такие как BERT, MiniLM, DeBERTaV3 и семейство GPT-*. Как вы можете оценить качество встраивания с помощью теста BEIR? Текущие победители BEIR и их плюсы и минусы.
  2. Разбор преобразователей предложений/все-MiniLM-L6-v2. Почему МиниЛМ, а не БЕРТ? Процесс обучения, набор данных 1B пар предложений и то, как такая крошечная и древняя модель может быть настолько хороша в тесте BEIR.
  3. Выход за пределы MiniLM-L6-v2 с Microsoft/E5. Объединение всех последних достижений LLM в единую модель семантического поиска: шумоподавление набора данных, асимметричное встраивание и дополнительная тонкая настройка IR. Можно ли его еще улучшить?
  4. Самостоятельные встраивания, нулевая модель metarank-v0. Объединение всех сильных сторон MiniLM и E5 в одной модели с дополнительным секретным соусом. Подготовка данных для шумоподавления и обучения. Можем ли мы установить и обучить его на одной RTX 4090?
  5. Самостоятельные встраивания, тонкая настройка модели метаранга v1: E5 точно настроен на MS MARCO+SNLI. Можем ли мы тогда точно настроить полный набор BEIR? Можем ли мы сделать его многоязычным?

Трансформер: дедушка всех LLM

Первоначальную архитектуру Transformer можно рассматривать как черный ящик, который преобразует входной текст в выходной текст. Но нейронные сети не понимают тексты как таковые; они говорят только числа — и все внутренние преобразования являются числовыми.

Трансформатор состоит из двух основных блоков:

  1. Кодировщик: ввод текста в числовой форме и создание встроенного представления семантического значения ввода.
  2. Декодер: обратный процесс, встраивание и прогнозирование следующего текстового маркера.

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

  • Входные векторы — это просто последовательность идентификаторов терминов из предопределенного словаря (для BERT размер словаря составляет 32 КБ), дополненная до фиксированной длины.
  • Вектор встраивания является внутренним представлением входных данных. Так сеть видит ваш ввод. И вы можете ожидать, что аналогичные документы будут иметь аналогичные внутренние представления.

Через пару лет появилось яркое семейство различных моделей обработки текста на основе трансформеров с двумя основными отдельными ветвями:

  • Подобно BERT, только с использованием энкодера преобразователя. Хорош в классификации, обобщении и распознавании сущностей.
  • Семейство GPT, только декодер. Хорошо справляется с генеративными задачами, такими как перевод и контроль качества.

На изображении выше вы можете увидеть разделение между подсемействами моделей BERT и GPT. Традиционно потомки BERT чаще всего используются в области семантического поиска.

Модель БЕРТ

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

Но вложения BERT изначально не предназначены для семантического сходства: модель была обучена предсказывать замаскированное слово в большом текстовом корпусе. Тот факт, что похожие тексты имеют похожие вложения, является приятным самовозникающим побочным эффектом.

Но «изначально не предназначено для семантического сходства» — это всего лишь мнение. Есть ли способ объективно измерить, насколько это хорошо или плохо в эталонном наборе данных?

Бенчмарк BEIR

В академической статье BEIR: Гетерогенный тест для нулевой оценки моделей информационного поиска предложен справочный набор тестов и наборов данных для методов IR. И сделал борьбу за качество модели менее приятной: теперь есть единая таблица лидеров для сравнения вашей модели встраивания с конкурентами.

Бенчмарк BEIR предлагает набор из 19 разнообразных наборов данных IR и весь механизм для оценки качества поиска.

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

Позже BEIR был объединен с еще более обширным набором тестов: MTEB, Massive Text Embedding Benchmark. Запустить его довольно просто (при наличии 128 ГБ ОЗУ, современного графического процессора и 8 часов свободного времени):

Вернемся к тезису сырые вложения BERT не для семантического поиска. Если мы запустим bert-base-uncased бок о бок с топовыми моделями преобразования предложений all-MiniLM-L6-v2 и all-mpnet-base-v2по тесту BEIR/MTEB мы увидим следующие цифры:

Из этой таблицы мы можем сделать два очевидных вывода:

  • Исходные необработанные вложения BERT предназначены для предсказания следующего слова и никогда не предназначались для семантического поиска и сходства документов. Теперь вы можете понять, почему.
  • BM25 по-прежнему является надежной базой — даже массивная модель MPNET, настроенная на семантическое сходство, не может постоянно превосходить ее.

Но почему похожие модели встраивания так сильно отличаются в задачах семантического поиска?

Таблица лидеров

Текущая (на июнь 2023 года) таблица лидеров MTEB/BEIR выглядит пестрящей малоизвестными именами:

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

  • Модели SBERT (all-MiniLM-L6-v2, all-MiniLM-L12-v2 и all-mpnet-base-v2) обеспечивают хороший баланс между простотой и качеством ранжирования.
  • SGPT (5,8 млрд, 2,7 млрд, 1,3 млрд) — это недавняя версия доработанной LoRa модели GPT-NeoX с открытым исходным кодом для ранжирования.
  • GTR-T5 — это модель встраивания Google с открытым исходным кодом для семантического поиска, использующая T5 LLM в качестве основы.
  • E5 (v1 и v2) — новейшая модель встраивания от Microsoft.

Мы можем рассматривать эти четыре модельных семейства через призму двух философий построения моделей семантического поиска:

  • Производительность. Чем меньше модель, тем ниже задержка поиска и выше скорость индексации. Огромные модели SGPT и GTR могут работать только на дорогих графических процессорах.
  • Размер. Чем больше параметров в модели, тем лучше качество поиска. all-MiniLM-L6-v2 — фантастическая модель, но она слишком мала, чтобы уловить все семантические различия в поиске с ее 10 миллионами параметров.

Поиск баланса между размером и производительностью имеет решающее значение для создания отличной модели встраивания.

Вложения против разреженного поиска

Вложения — это один из многих способов поиска. Старый добрый BM25 по-прежнему является надежной базой, и есть пара новых «разреженных» методов поиска, таких как SPLADEv2 и ColBERT, сочетающих сильные стороны поиска по терминам и нейронных сетей.

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

Если вы сравните эту таблицу с таблицей BEIR, опубликованной всего два года назад, вы можете заметить, что BM25 считался надежным базовым уровнем, но BM25 больше не является явным победителем в 2023 году.

Другое наблюдение заключается в том, что разреженные (например, ELSER и SPLADEv2) и плотные (E5) методы поиска довольно близки по качеству. Таким образом, в этой области нет явного победителя, но видеть такую ​​большую конкуренцию — это здорово.

Личное мнение автора о дебатах о разреженных и плотных методах поиска:

  • Плотное извлечение более перспективно. Обновление с SBERT до E5 — это 10 строк кода, что приводит к значительному улучшению качества поиска. И ваша система векторного поиска остается прежней, никаких дополнительных инженерных работ не требуется.
  • Разреженный поиск вызывает меньше галлюцинаций и может обрабатывать точные совпадения и совпадения ключевых слов. И NDCG@10 — не единственная мера качества поиска.

Но дебаты все еще продолжаются, и мы будем держать вас в курсе последних обновлений.

Скрытая стоимость больших моделей

Существует расхожее мнение, что чем больше модель, тем лучше ее поисковое качество. Это хорошо видно из таблицы лидеров MTEB, но в ней отсутствует важная и практическая характеристика того, насколько просто и дешево обслуживать эти модели.

На практике вам нужно запустить модель встраивания дважды:

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

Небольшие модели, такие как SBERT и E5, могут быть легко запущены на ЦП с разумным бюджетом задержки, но если вы превысите 500 миллионов параметров (как в случае с SGPT), вы не сможете избежать использования графического процессора. А графические процессоры сейчас дорогие.

Чтобы увидеть реальные цифры задержки, мы сделали небольшой тест на основе JMH для вывода ONNX, доступный на https://github.com/shuttie/embed-benchmark.

Как видно из таблицы:

  • Существует линейная зависимость между количеством параметров и задержкой как на ЦП, так и на ГП. Большие модели, такие как SGPT-1.3B, должны иметь расчетную задержку 200 мс для коротких запросов из 4 слов, что часто слишком много для рабочих нагрузок, ориентированных на клиента.
  • Существует компромисс между задержкой/стоимостью/качеством. Ваш семантический поиск быстрый, дешевый, точный — выберите любые два.

Es gibt nicht nur English

Мир говорит не только на английском языке, но большинство моделей и оценочных фреймворков ориентированы только на английский язык:

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

Вот что произойдет, если вы загрузите токенизатор BERT текстом, отличным от английского:

Токенизатор BERT не мог правильно обрабатывать немецкие слова как отдельные токены и должен был разделить их на подслова. Для сравнения, многоязычный токенизатор XLM гораздо лучше обрабатывал одно и то же предложение.

К счастью, большинство моделей, упомянутых в этой статье, имеют многоязычные версии:

Эти модели создаются в процессе дистилляции знаний, поэтому для них не требуется специальный обучающий набор данных с похожими предложениями на нескольких языках.

Следующая глава

Подводя итог, вот основные выводы из этого эпизода:

  • BM25 не так просто превзойти по качеству поиска. Учитывая, что он не требует настройки и вы можете создать кластер Elasticsearch/OpenSearch за 3 минуты, в 2023 году на него все еще можно рассчитывать.
  • В последнее время происходит много разработок в области поиска как в разреженных, так и в плотных мирах. SGPT и E5 младше 1 года, а SPLADE и ELSER еще моложе.
  • Нет единого победителя между разреженными и плотными подходами, но индустрия IR объединилась в единый инструмент сравнительного анализа для измерения качества поиска с пакетом MTEB/BEIR.

Так как это первая статья в серии, в следующем выпуске мы разберем пресловутую модель all-MiniLM-L6-v2:

  • Что такое MiniLM и почему бы просто не взять BERT за базовую модель?
  • Тренировочный процесс: что такое контрастное обучение и пакетные негативы?
  • Является ли 1B обучающих пар слишком много или слишком мало для модели встраивания производственного уровня?
  • Каковы наиболее очевидные недостатки этой модели и как их можно исправить?