/ Модель

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

Контекст
7 999 токенов
Параметры
1 млрд
Лицензия
Apache 2.0
Архитектура
modernbert · dense
Базовая модель
ettin-encoder-1b
Библиотека
sentence-transformers
Опубликована
15 окт 2026

finecat-nli-v2-xl

Классификация текстаТекст → label

Англоязычный энкодер ModernBERT на 1 млрд параметров для zero-shot-классификации и проверки логической связи между текстом и утверждением.

105скачиваний за 30 дней0лайковвеса обновлены17 окт 2026

Бенчмарки

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

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

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

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

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

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

dleemiller/finecat-nli-v2-xl — англоязычная модель Natural Language Inference, разработанная автором репозитория и дообученная на базе jhu-clsp/ettin-encoder-1b. Это энкодер ModernBERT с 1 млрд параметров в формате safetensors, реализованный с помощью sentence-transformers; он принимает текст-посылку и текст-гипотезу и оценивает вероятности классов entailment, neutral и contradiction. Модель предназначена для zero-shot-классификации и проверки того, следует ли утверждение из текста.

Её можно применять для тематической разметки и маршрутизации запросов, проверки ответов по найденным фрагментам в RAG-системах, а также для модерации по текстовым правилам. README приводит результаты на наборах NLI и смежных задач, включая среднюю точность 0,8282 на 45 наборах; автор отмечает, что модель хуже подходит для проверки финансовых и общих юридических утверждений и рассуждений о пресуппозициях. Максимальная длина контекста по метаданным — 7999 токенов. Лицензия — Apache-2.0.

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

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

Ограничения

В README указано, что модель менее подходит для проверки финансовых и общих юридических утверждений, а также для рассуждений о пресуппозициях. Оценки качества приведены на конкретных тестовых наборах и не гарантируют таких же результатов на других данных.

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

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

Открыть на Hugging Face

FineCat-NLI v2 XL

Natural Language Inference (NLI): the Swiss Army knife of encoders

Provide a text (premise) and statement (hypothesis), and it returns calibrated probabilities that the text entails, contradicts, or is neutral to the statement. A multiple-choice question is one statement per option.

Examples

UseText → statementResult
Routing / triagerequest → "The user wants to set an alarm."97.7% (MASSIVE intents)
RAG groundingretrieved passages → generated answer0.82 F1 (RAGTruth)
Guardrails / Moderationmessage → policy statement92.5% (CrossingGuard), 94.0% (Wikipedia insults)
Zero-shot classification / taggingreview → "This review is positive."93.0% (18 tasks)
Clinical extractionclinical note → "The patient is unemployed."98.8% (SDOH-NLI)

1B parameters · documents up to 8k tokens · ~254 pairs/s · Apache-2.0

from sentence_transformers import CrossEncoder

model = CrossEncoder("dleemiller/finecat-nli-v2-xl")
text = "My card was charged twice for the same order."
labels = ["billing", "shipping", "account access"]
probs = model.predict([(text, f"This text is about {l}.") for l in labels], apply_softmax=True)
print({l: round(float(p[0]), 3) for l, p in zip(labels, probs)})  # p[0] = P(entailment)
# {'billing': 0.84, 'shipping': 0.14, 'account access': 0.06}

More in Recommended Applications and the 45-dataset evaluation.


Table of Contents


NLI Evaluation Results

F1-Micro scores (equivalent to accuracy) for each dataset. Performance was measured at bs=32 using a Nvidia Blackwell PRO 6000 Max-Q.

Modelfinecat45-set avgmnlimnli_mismatchedsnlianli_r1anli_r2anli_r3wanlilingnliThroughput (samples/s)Peak GPU Mem (MB)
dleemiller/finecat-nli-v2-xl0.84450.82820.92020.91910.93560.78600.66000.60670.77100.8834254.424649.37
dleemiller/finecat-nli-ultra-l0.83880.82340.91270.91310.93030.79100.64000.58330.76940.8714624.671857.54
dleemiller/finecat-nli-v2-l0.83590.82040.91650.91270.93280.77400.60200.57330.76740.8776636.711982.06
MoritzLaurer/DeBERTa-v3-large-mnli-fever-anli-ling-wanli0.82330.68210.91210.90790.88980.79600.68300.64000.77000.8821454.963250.44
dleemiller/finecat-nli-l0.82270.73720.91520.92650.91620.74800.57000.54330.77060.8742539.041838.06
tasksource/ModernBERT-large-nli0.79590.73220.89830.92290.91880.72600.51100.49250.69780.8504543.441838.06
dleemiller/ModernCE-large-nli0.78110.68770.90880.92050.92730.66300.48600.44080.65760.8566540.741838.06
cross-encoder/nli-deberta-v3-large0.76180.59800.90190.90490.92200.53000.41700.37580.65480.8466448.353250.44

45-set avg: macro accuracy over the 45 datasets, each model at its own maximum context (512 tokens for the DeBERTa models).


Usage

Label Map:

  • entailment: 0
  • neutral: 1
  • contradiction: 2

Direct Usage (Sentence Transformers)

First install the Sentence Transformers library:

pip install -U sentence-transformers

Then you can load the model and run inference.

from sentence_transformers import CrossEncoder
import numpy as np

model = CrossEncoder("dleemiller/finecat-nli-v2-xl")
id2label = model.model.config.id2label  # {0:'entailment', 1:'neutral', 2:'contradiction'}

pairs = [
    ("The glass fell off the counter and shattered on the tile.",
     "The glass broke when it hit the floor."),          # E
    ("The store opens at 9 a.m. every day.",
     "The store opens at 7 a.m. on weekdays."),          # C
    ("A researcher presented results at the conference.",
     "The presentation won the best paper award."),       # N
    ("It started raining heavily, so the match was postponed.",
     "The game was delayed due to weather."),             # E
    ("Every seat on the flight was taken.",
     "There were several empty seats on the plane."),     # C
]

logits = model.predict(pairs)  # shape: (5, 3)

for (prem, hyp), row in zip(pairs, logits):
    pred_idx = int(np.argmax(row))
    pred = id2label[pred_idx]
    print(f"[{pred}]  Premise: {prem}  |  Hypothesis: {hyp}")


Recommended Applications

Frame each check as a premise (text) and hypothesis (statement), and use the entailment probability.

ApplicationExample hypothesisSupporting results
Zero-shot tagging / topic classification"This text is about billing."zs_meta, fin_topics
Routing and decisions in agent pipelines"The user wants to cancel an order."zs_meta, mnli, snli
RAG grounding / hallucination checksEach answer sentence vs. retrieved passagesragtruth, wice, vitaminc
Contract and policy review"The agreement permits sharing data with third parties."contractnli_a/b, control, docnli
Biomedical and health claim checkingClaim vs. abstract, clinical note or trial eligibility criteriasdoh_nli, biosift, bionli, scifact, pubhealth, nli4ct
Logical / rule-based reasoning over documents"Under these rules, the applicant qualifies."fol, control
Dialogue fact-checkingAssistant reply vs. knowledge sourcedialfact, vitaminc
Guardrails / policy matchingPolicy statement vs. user or model textcrossingguard
Stance detection"The author supports the proposal."vast

Less suited: financial and general legal verification (findver, legal_domain), and presupposition reasoning (nope_adv).


Extended Evaluation (45 datasets)

Accuracy on the test splits of 45 NLI and adjacent datasets. 2-way datasets (entailed vs. not) are scored as entailment vs. any non-entailment prediction. DocNLI and VitaminC are evaluated on fixed random subsets of 1,000 and 10,000 pairs. FRANK (news-summary factuality) is scored per summary sentence: each sentence vs. its source article, labelled by the majority annotator judgment.

Datasetnfinecat-nli-v2-xl27B teacher (fast mode)
finecat180120.84450.8656
mnli98150.92020.9311
mnli_mismatched98300.91910.9305
snli98240.93560.9399
anli_r110000.78600.8630
anli_r210000.66000.7490
anli_r312000.60670.7100
wanli50000.77100.7796
lingnli73610.88340.8958
glue_diagnostic11000.75820.8118
med53800.81470.8039
nan_nli2580.71710.7403
scone_test10001.00000.9980
nmonli_test2001.00001.0000
conjnli6230.71910.7335
nope_adv3450.57390.5768
nli4ct1990.81410.8693
sdoh_nli9900.98790.9848
healthver2300.76090.7565
scifact3000.87330.8433
biosift10000.92000.9210
scientsbank9710.75080.7683
beetle8190.64220.6325
legal_domain11630.49180.6389
findver5000.65600.7660
dialfact14990.84120.8586
frank_sent31760.68700.8234
ragtruth14970.85440.8691
vast15000.79330.8053
zs_meta54000.93040.9344
seahorse8000.85620.8638
pubhealth6000.85000.8650
bionli6000.91330.9333
fin_topics6000.97670.9633
vitaminc100000.90620.9351
docnli10000.8530—
contractnli_a17070.92790.9285
contractnli_b20740.89540.9021
control8000.75250.8087
fol102770.87270.8430
scitail21260.96610.9652
wice9580.88100.9144
sick49060.93170.9213
crossingguard53970.92500.9344
hans150000.84630.9209

Macro average over the 45 datasets: 0.8282.

Training Details

This model is a fine-tune of jhu-clsp/ettin-encoder-1b, trained on the dleemiller/FineCat-NLI-Reason dataset, a compilation of several high-quality NLI data sources with quality screening and reduction of easy samples in the training split. Also includes additional NLI, fact verification and long document sources (2.05M pairs in total). The training uses logit distillation from an NLI finetune of Qwen3.8-27B.

Distillation loss looks like this: $$ \begin{equation} \mathcal{L} = \alpha \cdot \mathcal{L}_{\text{CE}}(z^{(s)}, y) + \beta \cdot T^2 \cdot \mathrm{KL}\left(\sigma(z^{(t)}/T) ,|, \sigma(z^{(s)}/T)\right) \end{equation} $$

where \(z^{(s)}\) and \(z^{(t)}\) are the student and teacher logits, \(y\) are the ground truth labels, \(\alpha = 0.2\), \(\beta = 0.8\) and \(T = 1\).

Training inputs keep the full documents the teacher labelled (up to 8k tokens). The model was trained for 3 epochs at a constant learning rate followed by a 1-epoch cooldown. The released weights are an average of the final weights and earlier exponential-moving-average checkpoints, with the output temperature calibrated on the validation split.


Acknowledgments

We thank the creators and contributors of jhu-clsp (Ettin) and the Qwen team for making their work available. This model would not be possible without their efforts and open source contributions.

Citation

@misc{nli-compiled-2025,
  title = {FineCat NLI Dataset},
  author = {Lee Miller},
  year = {2025},
  howpublished = {Refined compilation of 6 major NLI datasets}
}

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей