/ Модель

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

Контекст
514 токенов
Параметры
504 млн
Лицензия
MIT
Архитектура
roberta · dense
Базовая модель
ruRoberta-large
Опубликована
29 июл 2024

ru-en-RoSBERTa

ЭмбеддингиТекст → embedding10 профессий

ru-en-RoSBERTa — дообученная на русско-английских парах модель RoBERTa для создания текстовых эмбеддингов и поиска по смыслу.

146 тыс.скачиваний за 30 дней90лайковвеса обновлены26 сен 2024

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

  • SIB200ClusteringS2S

    main_score

    Результат

    0,0202

    Общий результат 0,1061Общий результат 0,0878Общий результат 0,0833
    MTEB

    Публичная таблицаревизия совпадает

  • GermanSTSBenchmark

    main_score

    Результат

    0,5209

    MTEB

    Публичная таблицаревизия совпадает

  • NorQuadRetrieval

    main_score

    Результат

    0,0679

    MTEB

    Публичная таблицаревизия совпадает

  • MLSUMClusteringS2S

    main_score

    Результат

    0,4713

    Общий результат 0,3399
    MTEB

    Публичная таблицаревизия совпадает

  • CodeSearchNetRetrieval

    main_score

    Результат

    0,6068

    MTEB

    Публичная таблицаревизия совпадает

  • LEMBSummScreenFDRetrieval

    main_score

    Результат

    0,4865

    MTEB

    Публичная таблицаревизия совпадает

  • STS22.v2

    main_score

    Результат

    0,4637

    MTEB

    Публичная таблицаревизия совпадает

  • AmazonReviewsClassification

    main_score

    Результат

    0,4485

    MTEB

    Публичная таблицаревизия совпадает

  • CUREv1

    main_score

    Результат

    0,0097

    MTEB

    Публичная таблицаревизия совпадает

  • XPQARetrieval

    main_score

    Результат

    0,0345

    MTEB

    Публичная таблицаревизия совпадает

  • MasakhaNEWSClassification

    main_score

    Результат

    0,2283

    MTEB

    Публичная таблицаревизия совпадает

  • T2Reranking

    main_score

    Результат

    0,6084

    MTEB

    Публичная таблицаревизия совпадает

  • FinancialPhrasebankClassification

    main_score

    Результат

    0,7714

    MTEB

    Публичная таблицаревизия совпадает

  • MIRACLReranking

    main_score

    Результат

    0,2391

    Общий результат 0,13
    MTEB

    Публичная таблицаревизия совпадает

  • MintakaRetrieval

    main_score

    Результат

    0,1046

    Общий результат 0,1184Общий результат 0,0044
    MTEB

    Публичная таблицаревизия совпадает

  • QuoraRetrieval

    main_score

    Результат

    0,749

    MTEB

    Публичная таблицаревизия совпадает

  • IndicGenBenchFloresBitextMining

    main_score

    Результат

    0,0138

    Общий результат 0,0303Общий результат 0,0121Общий результат 0,0074
    MTEB

    Публичная таблицаревизия совпадает

  • SyntecRetrieval

    main_score

    Результат

    0,4915

    MTEB

    Публичная таблицаревизия совпадает

  • Tatoeba

    main_score

    Результат

    0,0361

    Общий результат 0,1078Общий результат 0,0375
    MTEB

    Публичная таблицаревизия совпадает

  • CodeSearchNetCCRetrieval

    main_score

    Результат

    0,481

    MTEB

    Публичная таблицаревизия совпадает

  • MewsC16JaClustering

    main_score

    Результат

    0,0882

    MTEB

    Публичная таблицаревизия совпадает

  • XNLI

    main_score

    Результат

    0,5274

    MTEB

    Публичная таблицаревизия совпадает

  • MassiveScenarioClassification

    main_score

    Результат

    0,1322

    Общий результат 0,3906Общий результат 0,3786
    MTEB

    Публичная таблицаревизия совпадает

  • TweetSentimentClassification

    main_score

    Результат

    0,4125

    MTEB

    Публичная таблицаревизия совпадает

  • CQADupstackWordpressRetrieval

    main_score

    Результат

    0,2512

    MTEB

    Публичная таблицаревизия совпадает

  • NusaXBitextMining

    main_score

    Результат

    0,1407

    MTEB

    Публичная таблицаревизия совпадает

  • STS22

    main_score

    Результат

    0,2377

    MTEB

    Публичная таблицаревизия совпадает

  • MassiveIntentClassification

    main_score

    Результат

    0,3178

    MTEB

    Публичная таблицаревизия совпадает

  • NusaParagraphEmotionClassification

    main_score

    Результат

    0,2188

    MTEB

    Публичная таблицаревизия совпадает

  • OpusparcusPC

    main_score

    Результат

    0,8731

    MTEB

    Публичная таблицаревизия совпадает

  • AlloprofRetrieval

    main_score

    Результат

    0,1339

    MTEB

    Публичная таблицаревизия совпадает

  • MLQARetrieval

    main_score

    Результат

    0,0531

    MTEB

    Публичная таблицаревизия совпадает

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

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

ru-en-RoSBERTa — модель для построения текстовых эмбеддингов, разработанная ai-forever на основе ruRoberta-large. Она дообучена на примерно 4 млн пар данных на русском и английском языках, включая синтетические, размеченные и неразмеченные примеры. Архитектура — RoBERTa с 503,5 млн параметров; модель принимает текст и выдаёт векторные представления. Для получения эмбеддингов рекомендуется CLS pooling, а выбор префикса и pooling зависит от задачи.

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

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

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

Ограничения

Качество модели на английском языке неизвестно. Максимальная длина входного текста ограничена 512 токенами.

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

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

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

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

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

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

Открыть на Hugging Face

Model Card for ru-en-RoSBERTa

The ru-en-RoSBERTa is a general text embedding model for Russian. The model is based on ruRoBERTa and fine-tuned with ~4M pairs of supervised, synthetic and unsupervised data in Russian and English. Tokenizer supports some English tokens from RoBERTa tokenizer.

For more model details please refer to our article.

Usage

The model can be used as is with prefixes. It is recommended to use CLS pooling. The choice of prefix and pooling depends on the task.

We use the following basic rules to choose a prefix:

  • "search_query: " and "search_document: " prefixes are for answer or relevant paragraph retrieval
  • "classification: " prefix is for symmetric paraphrasing related tasks (STS, NLI, Bitext Mining)
  • "clustering: " prefix is for any tasks that rely on thematic features (topic classification, title-body retrieval)

To better tailor the model to your needs, you can fine-tune it with relevant high-quality Russian and English datasets.

Below are examples of texts encoding using the Transformers and SentenceTransformers libraries.

Transformers

import torch
import torch.nn.functional as F
from transformers import AutoTokenizer, AutoModel


def pool(hidden_state, mask, pooling_method="cls"):
    if pooling_method == "mean":
        s = torch.sum(hidden_state * mask.unsqueeze(-1).float(), dim=1)
        d = mask.sum(axis=1, keepdim=True).float()
        return s / d
    elif pooling_method == "cls":
        return hidden_state[:, 0]

inputs = [
    # 
    "classification: Он нам и <unk> не нужон ваш Интернет!",
    "clustering: В Ярославской области разрешили работу бань, но без посетителей",
    "search_query: Сколько программистов нужно, чтобы вкрутить лампочку?",

    # 
    "classification: What a time to be alive!",
    "clustering: Ярославским баням разрешили работать без посетителей",
    "search_document: Чтобы вкрутить лампочку, требуется три программиста: один напишет программу извлечения лампочки, другой — вкручивания лампочки, а третий проведет тестирование.",
]

tokenizer = AutoTokenizer.from_pretrained("ai-forever/ru-en-RoSBERTa")
model = AutoModel.from_pretrained("ai-forever/ru-en-RoSBERTa")

tokenized_inputs = tokenizer(inputs, max_length=512, padding=True, truncation=True, return_tensors="pt")

with torch.no_grad():
    outputs = model(**tokenized_inputs)
    
embeddings = pool(
    outputs.last_hidden_state, 
    tokenized_inputs["attention_mask"],
    pooling_method="cls" # or try "mean"
)

embeddings = F.normalize(embeddings, p=2, dim=1)

sim_scores = embeddings[:3] @ embeddings[3:].T
print(sim_scores.diag().tolist())
# [0.4796873927116394, 0.9409002065658569, 0.7761015892028809]

SentenceTransformers

from sentence_transformers import SentenceTransformer


inputs = [
    # 
    "classification: Он нам и <unk> не нужон ваш Интернет!",
    "clustering: В Ярославской области разрешили работу бань, но без посетителей",
    "search_query: Сколько программистов нужно, чтобы вкрутить лампочку?",

    # 
    "classification: What a time to be alive!",
    "clustering: Ярославским баням разрешили работать без посетителей",
    "search_document: Чтобы вкрутить лампочку, требуется три программиста: один напишет программу извлечения лампочки, другой — вкручивания лампочки, а третий проведет тестирование.",
]

# loads model with CLS pooling
model = SentenceTransformer("ai-forever/ru-en-RoSBERTa")

# embeddings are normalized by default
embeddings = model.encode(inputs, convert_to_tensor=True)

sim_scores = embeddings[:3] @ embeddings[3:].T
print(sim_scores.diag().tolist())
# [0.47968706488609314, 0.940900444984436, 0.7761018872261047]

or using prompts (sentence-transformers>=2.4.0):

from sentence_transformers import SentenceTransformer


# loads model with CLS pooling
model = SentenceTransformer("ai-forever/ru-en-RoSBERTa")

classification = model.encode(["Он нам и <unk> не нужон ваш Интернет!", "What a time to be alive!"], prompt_name="classification")
print(classification[0] @ classification[1].T) # 0.47968706488609314

clustering = model.encode(["В Ярославской области разрешили работу бань, но без посетителей", "Ярославским баням разрешили работать без посетителей"], prompt_name="clustering")
print(clustering[0] @ clustering[1].T) # 0.940900444984436

query_embedding = model.encode("Сколько программистов нужно, чтобы вкрутить лампочку?", prompt_name="search_query")
document_embedding = model.encode("Чтобы вкрутить лампочку, требуется три программиста: один напишет программу извлечения лампочки, другой — вкручивания лампочки, а третий проведет тестирование.", prompt_name="search_document")
print(query_embedding @ document_embedding.T) # 0.7761018872261047

Citation

@misc{snegirev2024russianfocusedembeddersexplorationrumteb,
      title={The Russian-focused embedders' exploration: ruMTEB benchmark and Russian embedding model design}, 
      author={Artem Snegirev and Maria Tikhonova and Anna Maksimova and Alena Fenogenova and Alexander Abramov},
      year={2024},
      eprint={2408.12503},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2408.12503}, 
}

Limitations

The model is designed to process texts in Russian, the quality in English is unknown. Maximum input text length is limited to 512 tokens.

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
RobertaModel
Ревизия весов
89fb165

0 моделей