/ Модель

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

Контекст
512 токенов
Параметры
40 млн
Лицензия
MIT
Архитектура
bert · dense
Базовая модель
MiniLM-L12-H384-uncased
Библиотека
transformers
Опубликована
25 сен 2026

nano-jev

Классификация текстаТекст → label8 профессий

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

255скачиваний за 30 дней1лайквеса обновлены25 сен 2026

Бенчмарки

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

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

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

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

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

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

Nano-Jev v1.0 — компактная модель принятия решений для конвейеров RAG, разработанная Shubham Divakar. Она принимает вопрос и один или несколько фрагментов контекста и оценивает релевантность отрывка, достаточность набора отрывков для ответа или обоснованность утверждения контекстом. Модель возвращает вероятности по заданным вариантам и не генерирует текст.

Архитектура — кросс-энкодер на базе MiniLM с 12 слоями и скрытым размером 384, дополненный классификационной головой; в метаданных указано 40 млн параметров, а README приводит 33,4 млн. Модель дообучена на microsoft/MiniLM-L12-H384-uncased, принимает текст и поддерживает английский язык; максимальный контекст — 512 токенов. Распространяется по лицензии MIT.

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

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

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

Ограничения

Точность на данных вне распределения обучения заметно ниже, а калибровка вероятностей плохо переносится на новые наборы. Модель ориентирована на английский текст в стиле Википедии; пользовательские наборы вариантов ответа работают слабее.

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

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

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

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

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

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

Открыть на Hugging Face

Nano-Jev v1.0

Version 1.0 (stable). Jev-style decision model. Independent; not affiliated with TypeSafe AI or the NanoJev GitHub project.

A small (33.4M parameter) typed decision model for RAG pipelines. Give it a question, a set of options and some context; it returns a calibrated probability for each option in a few milliseconds. It never generates text.

DecisionTypeOptionsInput
relevancescoreirrelevant / partially relevant / directly answersquery + one passage
sufficientyes/noyes / noquery + several passages
groundedyes/noyes / noclaim + context

v1.0 specs

Version1.0 (stable), released 2026-09-25, HF tag v1.0
ArchitectureCross-encoder (MiniLM, 12 layers, hidden 384) + 1-logit head
Parameters33.4M
Base modelmicrosoft/MiniLM-L12-H384-uncased (MIT, general pretraining only, no MS MARCO)
Max input length512 tokens
Training data49,760 examples: HotpotQA distractor (6,000 questions), SQuAD 2.0 (6,000), MultiNLI (8,000); seed 0
Training3 epochs, best epoch 2 kept (dev NLL 0.429), batch 16 examples, AdamW lr 5e-5, weight decay 0.01, 6% warmup, linear decay, bf16
Hardware / time1× NVIDIA RTX 3060 12 GB, 13.5 min per epoch
CalibrationPer-decision temperature: relevance 1.295, sufficient 1.347, grounded 1.381 (calibration.json)
Base selectionBest of 3 clean-licence bases (MiniLM-L6, ELECTRA-small, MiniLM-L12) on the test split

Versions

v0.1 (research preview)v1.0
Basecross-encoder/ms-marco-MiniLM-L6-v2 (MS MARCO lineage)microsoft/MiniLM-L12-H384-uncased (clean)
Parameters22.7M33.4M
Weights licenceApache-2.0 + MS MARCO non-commercial noteMIT
Test accuracy (rel / suff / grounded)0.798 / 0.759 / 0.8040.815 / 0.845 / 0.844
Held-out accuracy (rel / suff / grounded)0.631 / 0.680 / 0.6720.635 / 0.670 / 0.675
Custom option sets (decide)betterweaker (see limitations)

Usage

pip install nano-jev
import nanojev

d = nanojev.load()          # v1.0 (default); nanojev.load("v0.1") for the older version

d.relevance("When was UCL founded?", ["University College London was founded in 1826."])
# [{'irrelevant': 0.15, 'partially relevant': 0.17, 'directly answers': 0.68}]
d.sufficient(query, passages)   # {'yes': .., 'no': ..}
d.grounded(claim, context)      # {'yes': .., 'no': ..}

Command line: nano-jev list, nano-jev relevance -q QUERY -p PASSAGE, and more; see the README.

With plain transformers (no extra code):

import json, torch
from huggingface_hub import hf_hub_download
from transformers import AutoModelForSequenceClassification, AutoTokenizer

repo, rev = "sdmlai/nano-jev", "v1.0"
tok = AutoTokenizer.from_pretrained(repo, revision=rev)
model = AutoModelForSequenceClassification.from_pretrained(repo, revision=rev).eval()
temps = json.load(open(hf_hub_download(repo, "calibration.json", revision=rev)))

query, passage = "When was UCL founded?", "University College London was founded in 1826."
question = f"How relevant is this passage to the query: {query}"
options = ["irrelevant", "partially relevant", "directly answers"]
enc = tok([f"question: {question} option: {o}" for o in options], [passage] * len(options),
          truncation="only_second", max_length=512, padding=True, return_tensors="pt")
with torch.no_grad():
    logits = model(**enc).logits.squeeze(-1)
print(dict(zip(options, torch.softmax(logits / temps["relevance"], dim=0).tolist())))

Question templates: relevance How relevant is this passage to the query: {query}; sufficient Does the context contain enough information to answer: {query} (context = passages as [1] title: text lines); grounded Is this claim supported by the context? Claim: {claim}.

Results

Temperatures and baseline mappings are fitted on the in-distribution calibration split and applied unchanged everywhere.

Test split (held-out halves of HotpotQA / SQuAD 2.0 / MultiNLI validation)

DecisionNano-Jev v1.0 (33M)Nano-Jev v0.1 (23M)bge-reranker-v2-m3 (568M)Qwen3-4B-Instruct, prompted (4B)
relevance (3-way)0.8150.7980.6940.660
sufficient0.8450.7590.6920.706
grounded0.8440.8040.7980.844

Calibration error (ECE) after temperature scaling: relevance 0.017, sufficient 0.024, grounded 0.048.

Held-out datasets (never used for training or calibration)

MuSiQue (multi-hop QA with hard retrieved distractors) for relevance and 2-hop sufficiency; VitaminC (claim verification) for groundedness.

DecisionNano-Jev v1.0Nano-Jev v0.1bge-reranker-v2-m3Qwen3-4B-Instruct, prompted
relevance (3-way, MuSiQue)0.6350.6310.4780.503
sufficient (2-hop MuSiQue)0.6700.6800.5970.653
grounded (VitaminC)0.6750.6720.7370.787

Accuracy drops by about 15–20 points on unseen datasets, and calibration does not transfer (held-out ECE 0.17–0.18). Re-fit the temperatures, or at least re-check your thresholds, on your own data.

Speed

ms per decision, batched, RTX 3060: v1.0 1.0–4.0 · v0.1 0.6–2.3 · bge-reranker 3.5–17.9 · Qwen3-4B 54.5–379.1. On CPU (Ryzen 7 5800X, 8 threads) v1.0 takes ~17 ms per decision and v0.1 ~9 ms.

Cascade: escalate unsure grounded decisions to an LLM

Accept Nano-Jev's verdict when its top probability ≥ a threshold, otherwise ask Qwen3-4B-Instruct. The threshold (0.80) was chosen on the calibration split.

escalated to LLMtest accuracyheld-out accuracyms/decision (test)
Nano-Jev v1.0 only0%0.8440.6751.0
Cascade, threshold 0.8026% (test) / 30% (held-out)0.8680.74513.8
Cascade, threshold 0.9046% / 53%0.8580.78823.9
Qwen3-4B only100%0.8440.78751.3

On the test split the cascade beats both models alone while sending only a quarter of the decisions to the LLM. On held-out data a 0.90 threshold matches the LLM alone with about half the LLM calls. Full sweep and plot: results/v1.0/cascade.

def grounded(claim, context, threshold=0.8):
    p = d.grounded(claim, context)
    if max(p.values()) >= threshold:
        return p                       # confident: ~1 ms
    return ask_llm(claim, context)     # unsure: escalate

Limitations

  • Out-of-distribution accuracy is much lower than on the test split (see above), and calibration fitted in-distribution is overconfident on new data.
  • Custom option sets (decide() with your own labels) are weaker than in v0.1, whose MS MARCO-trained base had learned general text–label matching. For custom options, consider v0.1 (mind its licence note) or fine-tune on your labels.
  • English, Wikipedia-style text.
  • "partially relevant" follows HotpotQA rules: a supporting paragraph without the answer string.

Licence

Weights: MIT, the same licence as the base model; no MS MARCO lineage.

Fine-tuning data: HotpotQA (CC BY-SA 4.0), SQuAD 2.0 (CC BY-SA 4.0), MultiNLI (see its licence terms). Held-out evaluation: MuSiQue (CC BY 4.0), VitaminC (CC BY-SA 3.0).

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей