Введение

В прошлых обзорах я исследовал, как различные большие языковые модели (LLM) и эмбеддинги влияют на качество ответов по юридическим документам. Основные тесты включали различные модели для RAG-задачи:

Большой тест GPT4, GPT3.5, YandexGPT, GigaChat, Saiga в RAG-задаче. Часть 1

Большой тест GPT4, GPT3.5, YandexGPT, GigaChat, Saiga в RAG-задаче. Часть 2/2

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

Что такое эмбеддинг

Эмбеддинг - что числовое представление текста в виде вектора (набора цифр), позволяя текстам, близким по смыслу, быть близкими и математически. Это обеспечивает поиск по метаматематике, а не по ключевым словам.

Когда мой хороший знакомый, админ канала "Технозаметки Малышева", опубликовал заметку о поиске афоризмов и цитат с помощью эмбеддинга Salesforce/SFR-Embedding-Mistral, я увидел в этом прекрасную возможность оценить качество моделей, которые появились за последние четыре месяца, и сравнить их с базовой моделью ai-forever/ruBert-large, которая использовалась в первых обзорах.

OpenAi анонсировал модели text-embedding-3-large, text-embedding-3-small утверждая, что они лучше чем прошлая модель. Также Microsoft анонсировал модель E5 intfloat/multilingual-e5-large.

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

Мы будем искать афоризмы, которые отвечают на извечный вопрос: В чем сила?

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

Превращаем набор 300+ афоризмов в вектор и ищем силу

В качестве базы для поиска я скормил в свой рабочий фреймворк список из 300+ афоризмов. Был сделано 6 слепков этого набора, используя разные модели токенайзеров:

  • text-embedding-ada-002

  • text-embedding-3-large

  • text-embedding-3-small

  • intfloat/multilingual-e5-large

  • ai-forever/ruBert-large

  • ai-forever/sbert_large_mt_nlu_ru

  • Salesforce/SFR-Embedding-Mistral (по итогу я выключил его из списка из-за того, что (1) предложение нужно правильно готовить, более сложно, чем e5 (2) он кушал неоправданно много памяти более 26 ГБ. )

Для каждого слепка я задавал один и тот же вопрос. Ответы представлены по мере убывания "близости". Близость рассчитывалась через косинус. Усреднение эмбедингов всех токенов через mean.

"В чем сила?"

text-embedding-ada-002

text-embedding-3-large

text-embedding-3-small

Сила в Ньютонах! ?

Сила в Ньютонах! ?

Сила в Ньютонах!?

Где тонко, там и рвется. Где толсто, там и наслаивается. ?

Тень Чака Норриса сминает все, на что падает. ?

Где тонко, там и рвется. Где толсто, там и наслаивается.?

Попытка — не пытка, а спрос — не беда.

Где тонко, там и рвется. Где толсто, там и наслаивается. ?

Палка о двух концах: туда и сюда бьет.

Слово - не воробей. Вообще ничто не воробей, кроме самого воробья.

От работы кони дохнут, а люди — крепнут.?

Не завидуй тому, кто силен и богат, За рассветом всегда наступает закат. С этой жизнью короткою, равною вдоху, Обращайся, как с данной тебе напрокат. ?

Старость не радость, сядешь — не встанешь, побежишь — не остановишься.

Никогда не сдавайтесь, идите к своей цели! А если будет сложно – сдавайтесь.

Жи-ши пиши от души.

Пьяному море по колено, а лужа — по уши.

В здоровом теле здоровый дух — редкая удача.

Тише едешь – дальше будешь от того места, куда едешь.

2/6

4/6

3/6

intfloat/multilingual-e5-large

ai-forever/ruBert-large

ai-forever/sbert_large_mt_nlu_ru

Сила в Ньютонах!?

Сила в Ньютонах!?

Сила в Ньютонах!?

Делай, как надо. Как не надо, не делай. ?

Дело мастера боится, а иной мастер — дела.

Тень Чака Норриса сминает все, на что падает. ?

Никогда не сдавайтесь, идите к своей цели! А если будет сложно – сдавайтесь.

Слово - не воробей. Вообще ничто не воробей, кроме самого воробья.

Рука руку моет, да обе свербят.

От работы кони дохнут, а люди — крепнут.?

Первый парень на деревне, а деревня в два двора.

Горбатого могила исправит, а упрямого — дубина.

Где тонко, там и рвется. Где толсто, там и наслаивается. ?

Один в поле не воин, а путник.

Чак Норрис может ударить циклопа между глаз?

Запомни: всего одна ошибка – и ты ошибся.?

Гол как сокол, а остер как топор.

Расти большой, да не будь лапшой, тянись верстой, да не будь простой. ?

5/6

1/6

4/6

? - я отметил те афоризмы и цитаты, которые на мой взгляд были наиболее близки к запросу "В чем сила?". Оценка субъективная.

Кто победил и какие выводы?

На первом месте безусловно Чак Норис. Он вне конкуренции.

По остальным выводы следующие:

  • text-embedding-3-large безусловно лучший токенайзер чем прошлая версия text-embedding-ada-002. Small находится по-середине. Всё абсолютно так, как они заявляют официально

  • ai-forever/ruBert-large - модель старая и на последнем месте. Что не удивительно.
    Очень порадовал ai-forever/sbert_large_mt_nlu_ru, мой основной токенайзер в проектах, а в лидеры вышел intfloat/multilingual-e5-large.

В целом достаточно показательно, но к сожалению запросы в intfloat/multilingual-e5-large нужно готовить, а именно добавлять "query: " к каждой строке, что скорее всего потребует переделки текущего кода. Можно и без неё, но качество тогда 4/6.

А как бы Вы оценили результат?

Теперь попробуем сделать классификационную модель

Афоризмы - афоризмами, а насколько видно отличие токенайзера в задачах классификации?

У меня есть рабочий датасет на 15000 примеров по 30 классам (равномерно). 20% на валидацию, 80% на обучение. Создадим три модели, на трех разных токенайзеров и посмотрим validation _ accuracy, т.е. сколько % из валидационной выборки оказалось верно угаданным.

Черный график точности - intfloat/multilingual-e5-large

Красный - ai-forever/sbert_large_mt_nlu_ru

Синий - ai-forever/ruBert-large

Прирост качества на intfloat/multilingual-e5-large меня действительно поразил, в то время как Bert модели показали одинаковую результативность.

Да, общий процент % попадания низкий, но это особенность датасета. Там были очень размытые границы между классами.

Из минусов intfloat/multilingual-e5-large :

  • Достаточно много кушает памяти (более 6 гб)

  • Ограничение по размеру предложения: 512 символов.

Поэтому на коротких предложениях - intfloat/multilingual-e5-large действительно отличный вариант.

Комментарии (4)


  1. odmin227
    05.05.2024 16:04

    Было бы интересно собрать какие нибудь большие тесткейсы и на них статистику посмотреть эмбеддингов!

    потому что кажется что на небольших кейсах есть предвзятость и сдвиги


    1. dvgureev Автор
      05.05.2024 16:04

      Вы имеете ввиду длинные тексты?
      С этим проблема. Локальные модели очень ограниченные в размере текста, который они могут превратить в вектор.

      text-large-03 может относительно много. Если не ошибаюсь 4096.

      Bert 712 символов. intfloat/multilingual-e5-large - вообще 512.

      Поэтому тут очень специфическое применение.


      1. odmin227
        05.05.2024 16:04

        не я имею ввиду собрать различные задачи например для RAG, пособирать промты всякие и тест кейсы для этого и провести исследование на (хотя бы 100+ примерах) для русского, английского языка, … Для задач на понимание научных статей, блогов, новостей и тд. И посмотреть какие вообще эмбеды где лучше делают репрезентации.

        Думаю что вполне может потянуть на небольшую научную статью


        1. dvgureev Автор
          05.05.2024 16:04
          +1

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

          Т.е. делать файнтюн эмбединга под конкретную область знаний. Но это не решит вопрос (увы) задач поиска ответа на вопросы. К сожалению "традиционный" подход: нарезать на куски, сделать вектор и потом по ним искать имеет ограничения методологические. Более 80-85% точных ответов сложно получить.