/ Модель

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

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

BERTA-uncased

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

Двуязычная BERT-модель, которая преобразует русские и английские предложения в эмбеддинги для семантического поиска, сравнения и классификации.

175скачиваний за 30 дней1лайквеса обновлены10 июл 2025

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

BERTA-uncased — двуязычная модель эмбеддингов предложений, разработанная Сергеем Жуковым как дистиллированная версия BERTA, основанной на ai-forever/FRIDA. Она построена на архитектуре BERT и предназначена для семантического сравнения русских и английских текстов, поиска и задач классификации и кластеризации на основе эмбеддингов.

Модель содержит 155,5 млн параметров, 12 слоёв, формирует векторы размером 768 и обрабатывает до 512 токенов. Mean pooling и режим uncased делают представления нечувствительными к регистру. Поддерживаются префиксы для поиска, перефразирования, категоризации, анализа тональности, тем и следования. В README приведены результаты на ruMTEB; показатели различаются по задачам и бенчмаркам.

Модель доступна в формате Safetensors по лицензии MIT. Она выдаёт эмбеддинги, поэтому для получения меток классификации или результатов поиска требуется подходящий downstream-компонент.

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

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

Ограничения

Контекст ограничен 512 токенами, а нечувствительность к регистру означает, что различия между прописными и строчными буквами не сохраняются. Эмбеддинги сами по себе не дают готовых меток классификации или результатов поиска; качество зависит от задачи и downstream-компонентов.

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

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

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

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

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

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

Открыть на Hugging Face

BERTA-uncased

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

Модель принадлежит к виду uncased - не различает при обработке текста буквы, написанные в верхнем и нижнем регистре (фразы, например, “С Новым Годом!” и “С НОВЫМ ГОДОМ!” кодируются одинаковой последовательностью токенов и имеют равные значения эмбеддингов). Размер эмбеддингов модели - 768, слоёв - 12. Размер контекста модели соответствует FRIDA - 512 токенов.

Префиксы

Все префиксы унаследованы от FRIDA:

  • search_query:
  • search_document:
  • paraphrase:
  • categorize:
  • categorize_sentiment:
  • categorize_topic:
  • categorize_entailment:

Метрики

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

Model NameMetricFRIDABERTA-uncasedBERTArubert-mini-fridamultilingual-e5-large-instructmultilingual-e5-large
CEDRClassificationAccuracy0.6460.6190.7300.5520.5000.448
GeoreviewClassificationAccuracy0.5770.5530.5480.4640.5590.497
GeoreviewClusteringP2PV-measure0.7830.7450.7380.6980.7430.605
HeadlineClassificationAccuracy0.8900.8890.8910.8800.8620.758
InappropriatenessClassificationAccuracy0.7830.7450.7480.6980.6550.616
KinopoiskClassificationAccuracy0.7050.6840.6780.5950.6610.566
RiaNewsRetrievalNDCG@100.8680.8290.8160.7210.8240.807
RuBQRerankingMAP@100.7710.7490.7520.7110.7170.756
RuBQRetrievalNDCG@100.7240.7100.7100.6540.6920.741
RuReviewsClassificationAccuracy0.7510.7240.7230.6580.6860.653
RuSTSBenchmarkSTSPearson correlation0.8140.8160.8220.8030.8400.831
RuSciBenchGRNTIClassificationAccuracy0.6990.6950.6900.6250.6510.582
RuSciBenchGRNTIClusteringP2PV-measure0.6700.6570.6500.5860.6220.520
RuSciBenchOECDClassificationAccuracy0.5460.5530.5480.4930.5020.445
RuSciBenchOECDClusteringP2PV-measure0.5660.5570.5560.5070.5280.450
SensitiveTopicsClassificationAccuracy0.3980.4040.3990.3730.3230.257
TERRaClassificationAverage Precision0.6650.6510.6570.6060.6390.584
Model NameMetricFRIDABERTA-uncasedBERTArubert-mini-fridamultilingual-e5-large-instructmultilingual-e5-large
ClassificationAccuracy0.7070.6990.6970.6310.6540.588
ClusteringV-measure0.6730.6530.6480.5970.6310.525
MultiLabelClassificationAccuracy0.5220.5120.5650.4630.4120.353
PairClassificationAverage Precision0.6650.6510.6570.6060.6390.584
RerankingMAP@100.7710.7490.7520.7110.7170.756
RetrievalNDCG@100.7960.7700.7630.6870.7580.774
STSPearson correlation0.8140.8160.8220.8030.8400.831
AverageAverage0.7070.6930.7010.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-uncased")
model = AutoModel.from_pretrained("sergeyzh/BERTA-uncased")

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.9447306990623474, 0.8616577386856079, 0.7869422435760498]
# [0.9530372023582458, 0.866746723651886,  0.7839133143424988] - BERTA
# [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-uncased")

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

categorize_entailment = model.encode(["Женщину доставили в больницу, за ее жизнь сейчас борются врачи.", "Женщину спасают врачи."], prompt="categorize_entailment: ")
print(categorize_entailment[0] @ categorize_entailment[1].T) 
# 0.86165774
# 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.78694224
# 0.7839136 - BERTA
# 0.7285831 - FRIDA

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей