Всем привет! Меня зовут Роман Соломатин, я представляю команду AI-Run из X5 Tech, мы занимаемся генеративными сетями в целом и языковыми моделями в частности. Несколько месяцев назад русскоязычное сообщество разработчиков искусственного интеллекта получило инструмент для оценки моделей — бенчмарк ruMTEB (Massive Text Embedding Benchmark). Он предназначен для оценки репрезентации русскоязычных текстов и позволяет объективно сравнивать различные эмбеддинговые модели, которые превращают текст в вектора чисел, ориентированные на работу с русским языком (подробнее в статье авторов). Однако, первая версия ruMTEB имела 6 протестированных моделей, но при этом отсутствовал удобный лидерборд.
Мы решили улучшить ситуацию и провести дополнительное тестирование, чтобы сделать бенчмарк более репрезентативным и полезным для сообщества. А именно: мы протестировали ещё 20 моделей и добавили вкладку для лидерборда, где можно увидеть результаты каждой модели. Это поможет разработчикам лучше ориентироваться в выборе моделей для своих проектов.
Для чего применяется векторизация
Модель преобразует текст в числовые векторы, что позволяет эффективно работать с текстовыми данными.
Вот ключевые области его применения:
Классификация текста (Classification) — распределения текста по категориям.
Семантический анализ (STS) — определение схожести предложений.
Кластеризация текста (Clustering) — кластеризация текстов.
Машинный перевод (Bitextmining) — поиск наиболее подходящего предложения на другом языке.
Поиск (Retrieval) — поиск похожих текстов по запросу.
Подробнее о применении LLM и эмбеддингов читайте в нашей статье «Интеграция LLM в корпоративные чат-боты: RAG-подход и эксперименты».
Тестируемые модели
Мы протестировали следующие модели:
и модели из семейства sentence transformers
Результаты и рекомендации
На основе бенчмарка можно сделать следующие выводы:
Максимальная производительность: если у вас есть возможность выделить значительные ресурсы, то лучшим выбором будет модель intfloat/e5-mistral-7b-instruct. Она показывает лучшие результаты, но требует много памяти и вычислительной мощности.
Оптимальный баланс: если у вас есть немного свободных гигабайт VRAM, то стоит обратить внимание на модели deepvk/USER-bge-m3, BAAI/bge-m3 и intfloat/multilingual-e5-large-instruct. Они предлагают хорошее соотношение между производительностью и потреблением ресурсов.
Ресурсоэффективные решения: для разработчиков с ограниченными ресурсами подойдут модели sergeyzh/LaBSE-ru-turbo и deepvk/USER-base. Эти модели способны работать на средних конфигурациях и обеспечивают достойное качество репрезентации текста.
Минимальные требования: Если у вас практически нет ресурсов, то модель sergeyzh/rubert-tiny-turbo будет лучшим выбором. Она может работать даже на очень скромных конфигурациях, оставаясь при этом достаточно эффективной.
Как вам попасть в лидерборд
Если вы хотите протестировать свою модель и добавить её в лидерборд ruMTEB, выполните следующие шаги:
1. Запуск модели на MTEB
Для начала вам нужно запустить вашу модель на MTEB (Multilingual Task Embedding Benchmark). Это можно сделать двумя способами:
через Python API;
используя командную строку.
Использование Python API:
import mteb
from sentence_transformers import SentenceTransformer
model = SentenceTransformer(model_name)
benchmark = mteb.get_benchmark("MTEB(rus)")
evaluation = mteb.MTEB(tasks=benchmark)
evaluation.run(model, output_folder="results")
Использование командной строки:
mteb run -m {название_вашей_модели} -t {названия_задач}
Эти команды сохранят результаты в папке results/{model_name}/{model_revision}
.
2. Форматирование результатов
После того, как вы получите результаты, вам нужно их отформатировать для добавления в лидерборд. Используйте следующую команду:
mteb create_meta --results_folder results/{model_name}/{model_revision} --output_path model_card.md
Если у вашей модели уже существует файл README.md
, вы можете объединить результаты с существующим описанием:
mteb create_meta --results_folder results/{model_name}/{model_revision} --output_path model_card.md --from_existing ваш_существующий_readme.md
3. Добавление метаданных в репозиторий модели
Скопируйте содержимое файла model_card.md
в начало файла README.md
вашего репозитория модели на Hugging Face. Это необходимо для того, чтобы ваши результаты были учтены в лидерборде. Пример файла README.md
4. Ожидание обновления лидерборда
После добавления метаданных в README.md
вашей модели, просто подождите, пока лидерборд автоматически обновится. Обновление происходит ежедневно, и ваша модель появится в списке при следующем обновлении.
Заключение
Новый лидерборд и расширенный список протестированных моделей помогут вам выбрать наиболее подходящий инструмент для ваших задач, будь то работа на мощных серверах или на устройствах с минимальными ресурсами.
Авторы: Роман Соломатин, Мичил Егоров