/ Модель

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

Контекст
512 токенов
Параметры
156 млн
Лицензия
MIT
Архитектура
bert · dense
Базовая модель
LaBSE-ru-turbo
Опубликована
10 мар 2025

BERTA

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

BERTA — двуязычная модель эмбеддингов предложений для семантического сравнения и поиска по русским и английским текстам.

42 550скачиваний за 30 дней40лайковвеса обновлены10 мар 2025

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

  • RuBQRetrieval

    main_score

    Результат

    0,71

    MTEB

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

  • HeadlineClassification

    main_score

    Результат

    0,8902

    MTEB

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

  • GeoreviewClusteringP2P

    main_score

    Результат

    0,7376

    MTEB

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

  • MassiveScenarioClassification

    main_score

    Результат

    0,845

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

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

  • CEDRClassification

    main_score

    Результат

    0,7301

    MTEB

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

  • RuSTSBenchmarkSTS

    main_score

    Результат

    0,8225

    MTEB

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

  • MassiveIntentClassification

    main_score

    Результат

    0,7392

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

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

  • RuBQReranking

    main_score

    Результат

    0,7516

    MTEB

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

  • GeoreviewClassification

    main_score

    Результат

    0,5484

    MTEB

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

  • RuReviewsClassification

    main_score

    Результат

    0,7229

    MTEB

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

  • RiaNewsRetrievalHardNegatives.v2

    main_score

    Результат

    0,8447

    MTEB

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

  • RuSciBenchOECDClusteringP2P

    main_score

    Результат

    0,5556

    MTEB

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

  • RUParaPhraserSTS

    main_score

    Результат

    0,7784

    MTEB

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

  • RuSciBenchGRNTIClusteringP2P

    main_score

    Результат

    0,6503

    MTEB

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

  • RuSciBenchGRNTIClassification

    main_score

    Результат

    0,6896

    MTEB

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

  • RiaNewsRetrieval

    main_score

    Результат

    0,8161

    MTEB

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

  • STS22

    main_score

    Результат

    0,6108

    MTEB

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

  • TERRa

    main_score

    Результат

    0,6574

    MTEB

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

  • KinopoiskClassification

    main_score

    Результат

    0,6779

    MTEB

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

  • RuSciBenchOECDClassification

    main_score

    Результат

    0,5477

    MTEB

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

  • InappropriatenessClassification

    main_score

    Результат

    0,7478

    MTEB

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

  • SensitiveTopicsClassification

    main_score

    Результат

    0,3991

    MTEB

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

  • MIRACLReranking

    main_score

    Результат

    0,6428

    MTEB

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

  • MIRACLRetrieval

    main_score

    Результат

    0,676

    MTEB

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

  • MIRACLRetrievalHardNegatives.v2

    main_score

    Результат

    0,659

    MTEB

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

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

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

BERTA — модель для получения эмбеддингов предложений на русском и английском языках. Согласно карточке, её разработал sergeyzh методом дистилляции эмбеддингов ai-forever/FRIDA в sergeyzh/LaBSE-ru-turbo. Это плотная модель семейства BERT с 155,5 млн параметров; размер эмбеддинга — 768, контекст — до 512 токенов.

Модель предназначена для сравнения семантической близости текстов, поиска и других задач на эмбеддингах. Карточка также приводит результаты для распознавания перефразирования, вывода по тексту, анализа тональности и выявления токсичности. Для большинства задач задан префикс «categorize_entailment: »; также доступны унаследованные от FRIDA префиксы для запросов и документов. Используется mean pooling вместо CLS pooling.

В бенчмарке ruMTEB BERTA показывает результаты, близкие к FRIDA, но в приведённых таблицах уступает ей по указанным метрикам классификации и кластеризации. Модель принимает текст и выдаёт векторы эмбеддингов. Лицензия — MIT.

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

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

Ограничения

Контекст ограничен 512 токенами. В приведённых результатах ruMTEB модель уступает FRIDA по перечисленным метрикам классификации и кластеризации; качество зависит от выбранного префикса и задачи.

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

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

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

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

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

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

Открыть на Hugging Face

BERTA

Модель для расчетов эмбеддингов предложений на русском и английском языках получена методом дистилляции эмбеддингов ai-forever/FRIDA (размер эмбеддингов - 1536, слоёв - 24) в sergeyzh/LaBSE-ru-turbo (размер эмбеддингов - 768, слоёв - 12). Основной режим использования FRIDA - CLS pooling заменен на mean pooling. Каких-либо других изменений поведения модели не производилось. Дистиляция выполнена в максимально возможном объеме - эмбеддинги русских и английских предложений, работа префиксов.

Размер контекста модели соответствует FRIDA - 512 токенов.

Префиксы

Все префиксы унаследованы от FRIDA. Оптимальный (обеспечивающий средние результаты) префикс для большинства задач - "categorize_entailment: " прописан по умолчанию в config_sentence_transformers.json

Перечень используемых префиксов и их влияние на оценки модели в encodechka:

ПрефиксSTSPINLISATI
-0,8420,7570,4630,8300,985
search_query:0,8530,7670,4790,8250,987
search_document:0,8310,7490,4630,8170,986
paraphrase:0,8470,7780,4460,8250,986
categorize:0,8570,7650,5010,8290,988
categorize_sentiment:0,5890,5350,4170,8050,982
categorize_topic:0,7400,5210,3960,7700,982
categorize_entailment:0,8410,7620,5710,8270,986

Задачи:

  • Semantic text similarity (STS);
  • Paraphrase identification (PI);
  • Natural language inference (NLI);
  • Sentiment analysis (SA);
  • Toxicity identification (TI).

Метрики

Оценки модели на бенчмарке ruMTEB:

Model NameMetricFRIDABERTArubert-mini-fridamultilingual-e5-large-instructmultilingual-e5-large
CEDRClassificationAccuracy0.6460.6220.5520.5000.448
GeoreviewClassificationAccuracy0.5770.5480.4640.5590.497
GeoreviewClusteringP2PV-measure0.7830.7380.6980.7430.605
HeadlineClassificationAccuracy0.8900.8910.8800.8620.758
InappropriatenessClassificationAccuracy0.7830.7480.6980.6550.616
KinopoiskClassificationAccuracy0.7050.6780.5950.6610.566
RiaNewsRetrievalNDCG@100.8680.8160.7210.8240.807
RuBQRerankingMAP@100.7710.7520.7110.7170.756
RuBQRetrievalNDCG@100.7240.7100.6540.6920.741
RuReviewsClassificationAccuracy0.7510.7230.6580.6860.653
RuSTSBenchmarkSTSPearson correlation0.8140.8220.8030.8400.831
RuSciBenchGRNTIClassificationAccuracy0.6990.6900.6250.6510.582
RuSciBenchGRNTIClusteringP2PV-measure0.6700.6500.5860.6220.520
RuSciBenchOECDClassificationAccuracy0.5460.5550.4930.5020.445
RuSciBenchOECDClusteringP2PV-measure0.5660.5560.5070.5280.450
SensitiveTopicsClassificationAccuracy0.3980.3990.3730.3230.257
TERRaClassificationAverage Precision0.6650.6570.6060.6390.584
Model NameMetricFRIDABERTArubert-mini-fridamultilingual-e5-large-instructmultilingual-e5-large
ClassificationAccuracy0.7070.6980.6310.6540.588
ClusteringV-measure0.6730.6480.5970.6310.525
MultiLabelClassificationAccuracy0.5220.5100.4630.4120.353
PairClassificationAverage Precision0.6650.6570.6060.6390.584
RerankingMAP@100.7710.7520.7110.7170.756
RetrievalNDCG@100.7960.7630.6870.7580.774
STSPearson correlation0.8140.8220.8030.8400.831
AverageAverage0.7070.6930.6430.6640.630

Использование модели с библиотекой transformers:

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


def pool(hidden_state, mask, pooling_method="mean"):
    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 = [
    # 
    "paraphrase: В Ярославской области разрешили работу бань, но без посетителей",
    "categorize_entailment: Женщину доставили в больницу, за ее жизнь сейчас борются врачи.",
    "search_query: Сколько программистов нужно, чтобы вкрутить лампочку?",
    # 
    "paraphrase: Ярославским баням разрешили работать без посетителей",
    "categorize_entailment: Женщину спасают врачи.",
    "search_document: Чтобы вкрутить лампочку, требуется три программиста: один напишет программу извлечения лампочки, другой — вкручивания лампочки, а третий проведет тестирование."
]

tokenizer = AutoTokenizer.from_pretrained("sergeyzh/BERTA")
model = AutoModel.from_pretrained("sergeyzh/BERTA")

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="mean"
)

embeddings = F.normalize(embeddings, p=2, dim=1)
sim_scores = embeddings[:3] @ embeddings[3:].T
print(sim_scores.diag().tolist())
# [0.9530372023582458, 0.866746723651886,  0.7839133143424988]
# [0.9360030293464661, 0.8591322302818298, 0.728583037853241] - FRIDA

Использование с sentence_transformers (sentence-transformers>=2.4.0):

from sentence_transformers import SentenceTransformer

# loads model with mean pooling
model = SentenceTransformer("sergeyzh/BERTA")

paraphrase = model.encode(["В Ярославской области разрешили работу бань, но без посетителей", "Ярославским баням разрешили работать без посетителей"], prompt="paraphrase: ")
print(paraphrase[0] @ paraphrase[1].T) 
# 0.9530372
# 0.9360032 - FRIDA

categorize_entailment = model.encode(["Женщину доставили в больницу, за ее жизнь сейчас борются врачи.", "Женщину спасают врачи."], prompt="categorize_entailment: ")
print(categorize_entailment[0] @ categorize_entailment[1].T) 
# 0.8667469
# 0.8591322 - FRIDA

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

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
BertModel
Ревизия весов
914c8c8

0 моделей