/ Модель

Характеристики

Контекст
512 токенов
Параметры
51,5 млн
Лицензия
MIT
Архитектура
xlm-roberta · dense
Библиотека
transformers
Опубликована
21 сен 2023

e5-small-en-ru

Сходство предложенийТекст → score9 профессий

Компактная русско-английская модель XLM-RoBERTa для эмбеддингов предложений и семантического поиска.

811скачиваний за 30 дней4лайкавеса обновлены12 апр 2024

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Эмбеддинги» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

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

Публичные оценки

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

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

d0rj/e5-small-en-ru — компактная версия модели intfloat/multilingual-e5-small, созданная удалением токенов словаря, не нужных для русского и английского языков. Она использует архитектуру XLM-RoBERTa и предназначена для получения векторных представлений предложений и поиска текстов по смыслу. Для поиска автор рекомендует сравнивать эмбеддинги скалярным произведением; модель также можно подключить через Transformers или sentence-transformers.

В карточке приведено 44,8 млн параметров и размер файлов около 171 МБ; контекст модели составляет 512 токенов. Указана лицензия MIT. В README есть таблица результатов на SberQuAD, но значения метрик отсутствуют, поэтому качество на этом тесте по карточке оценить нельзя. Модель ограничена русским и английским словарём и не предназначена для генерации текста.

Сценарии применения

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

Ограничения

Словарь ограничен русским и английским языками; максимальный контекст — 512 токенов. Значения метрик SberQuAD в карточке не приведены.

Для каких профессий подходит9

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

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

E5-base-en-ru

Model info

This is vocabulary pruned version of intfloat/multilingual-e5-small.

Uses only russian and english tokens.

Size

intfloat/multilingual-e5-smalld0rj/e5-small-en-ru
Model size (MB)448.81170.88
Params (count)117,653,76044,795,520
Word embeddings dim96,014,20823,155,968

Performance

Performance on SberQuAD dev benchmark.

Metric on SberQuAD (4122 questions)intfloat/multilingual-e5-smalld0rj/e5-small-en-ru
recall@3
map@3
mrr@3
recall@5
map@5
mrr@5
recall@10
map@10
mrr@10

Usage

  • Use dot product distance for retrieval.

  • Use "query: " and "passage: " correspondingly for asymmetric tasks such as passage retrieval in open QA, ad-hoc information retrieval.

  • Use "query: " prefix for symmetric tasks such as semantic similarity, bitext mining, paraphrase retrieval.

  • Use "query: " prefix if you want to use embeddings as features, such as linear probing classification, clustering.

transformers

Direct usage

import torch.nn.functional as F
from torch import Tensor
from transformers import XLMRobertaTokenizer, XLMRobertaModel


def average_pool(last_hidden_states: Tensor, attention_mask: Tensor) -> Tensor:
    last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0)
    return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]


input_texts = [
  'query: How does a corporate website differ from a business card website?',
  'query: Где был создан первый троллейбус?',
  'passage: The first trolleybus was created in Germany by engineer Werner von Siemens, probably influenced by the idea of his brother, Dr. Wilhelm Siemens, who lived in England, expressed on May 18, 1881 at the twenty-second meeting of the Royal Scientific Society. The electrical circuit was carried out by an eight-wheeled cart (Kontaktwagen) rolling along two parallel contact wires. The wires were located quite close to each other, and in strong winds they often overlapped, which led to short circuits. An experimental trolleybus line with a length of 540 m (591 yards), opened by Siemens & Halske in the Berlin suburb of Halensee, operated from April 29 to June 13, 1882.',
  'passage: Корпоративный сайт — содержит полную информацию о компании-владельце, услугах/продукции, событиях в жизни компании. Отличается от сайта-визитки и представительского сайта полнотой представленной информации, зачастую содержит различные функциональные инструменты для работы с контентом (поиск и фильтры, календари событий, фотогалереи, корпоративные блоги, форумы). Может быть интегрирован с внутренними информационными системами компании-владельца (КИС, CRM, бухгалтерскими системами). Может содержать закрытые разделы для тех или иных групп пользователей — сотрудников, дилеров, контрагентов и пр.',
]

tokenizer = XLMRobertaTokenizer.from_pretrained('d0rj/e5-small-en-ru', use_cache=False)
model = XLMRobertaModel.from_pretrained('d0rj/e5-small-en-ru', use_cache=False)

batch_dict = tokenizer(input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt')

outputs = model(**batch_dict)
embeddings = average_pool(outputs.last_hidden_state, batch_dict['attention_mask'])

embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:2] @ embeddings[2:].T) * 100
print(scores.tolist())
# [[68.59542846679688, 81.75910949707031], [80.36100769042969, 64.77748107910156]]

Pipeline

from transformers import pipeline


pipe = pipeline('feature-extraction', model='d0rj/e5-small-en-ru')
embeddings = pipe(input_texts, return_tensors=True)
embeddings[0].size()
# torch.Size([1, 17, 1024])

sentence-transformers

from sentence_transformers import SentenceTransformer


sentences = [
    'query: Что такое круглые тензоры?',
    'passage: Abstract: we introduce a novel method for compressing round tensors based on their inherent radial symmetry. We start by generalising PCA and eigen decomposition on round tensors...',
]

model = SentenceTransformer('d0rj/e5-small-en-ru')
embeddings = model.encode(sentences, convert_to_tensor=True)
embeddings.size()
# torch.Size([2, 1024])

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers

Можно запустить

Подбираем GPU…

Класс архитектуры
XLMRobertaModel
Ревизия весов
8d9d26c

0 моделей