/ Модель

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

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

e5-base-en-ru

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

Компактный двуязычный энкодер E5 для получения текстовых эмбеддингов и семантического поиска на русском и английском языках.

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

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

d0rj/e5-base-en-ru — компактная версия модели intfloat/multilingual-e5-base, созданная отсечением токенов словаря и предназначенная для работы с английским и русским языками. Это плотный энкодер XLM-RoBERTa с 159,6 млн параметров по метаданным Hugging Face; README указывает размерность эмбеддингов 1024 и сокращение размера модели примерно с 1061 до 505 МБ. Модель выдаёт векторные представления текста для поиска и оценки сходства предложений; для поиска автор рекомендует сравнивать векторы скалярным произведением.

Модель подходит для семантического поиска, извлечения релевантных документов и сравнения русских и английских запросов с текстами. README показывает использование через Transformers и sentence-transformers. Лицензия — MIT.

Оценка на SberQuAD упомянута, но значения метрик в README отсутствуют, поэтому по карточке нельзя судить о качестве относительно базовой модели. Контекстное окно составляет 514 токенов; словарь ограничен русскими и английскими токенами.

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

  • семантический поиск по русским и английским документам
  • поиск релевантных фрагментов по текстовому запросу
  • сравнение сходства предложений
  • извлечение кандидатов для системы RAG
  • индексация русско-английской коллекции текстов

Ограничения

Словарь модели ограничен русскими и английскими токенами, а контекст — 514 токенами. В README приведена таблица SberQuAD без значений метрик, поэтому сравнительные результаты не подтверждены.

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

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

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

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

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

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

Открыть на Hugging Face

E5-base-en-ru

Model info

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

Uses only russian and english tokens.

Size

intfloat/multilingual-e5-based0rj/e5-base-en-ru
Model size (MB)1060.65504.89
Params (count)278,043,648132,354,048
Word embeddings dim192,001,53646,311,936

Performance

Performance on SberQuAD dev benchmark.

Metric on SberQuAD (4122 questions)intfloat/multilingual-e5-based0rj/e5-base-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-base-en-ru', use_cache=False)
model = XLMRobertaModel.from_pretrained('d0rj/e5-base-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-base-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-base-en-ru')
embeddings = model.encode(sentences, convert_to_tensor=True)
embeddings.size()
# torch.Size([2, 1024])

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей