Skip to page content
SAVRN
Search Plan a project

Open-weight model · Text classification

RubriX-8B

by CobuildX AI CobuildX-AI/RubriX-8B

RubriX-8B is an open-weight model for text classification from CobuildX AI, released under Apache License 2.0. Its published files total 250.2 MB.

RubriX is a non-autoregressive rubric judge. Given a criterion, the rubric's level descriptions and a response (optionally with the conversation it answers), it returns a probability for every level in a single pass, with no text generation.

Parameters—
Context—
Weights250.2 MB
Licenseapache-2.0
AccessOpen weights
Monthly Downloads—

Model Card

By CobuildX AI, published under apache-2.0, revision 565a14ef34b3.

RubriX is a non-autoregressive rubric judge. Given a criterion, the rubric's level descriptions and a response (optionally with the conversation it answers), it returns a probability for every level in a single pass, with no text generation. Level descriptions are embedded once per rubric and cached, so the cost of each judgment does not grow with the number or length of the levels. Read more in the blog post: Introducing RubriX. One encoder, Qwen3-8B with this repository's LoRA adapter, embeds the input and each level description separately. Two projection heads map them into a shared space, and - sk = τ · cos(f(input), g(levelk)), with τ = 100 - p = softmax(s1 … sK) The model was trained…

Read CobuildX AI's full model card

RubriX is a non-autoregressive rubric judge. Given a criterion, the rubric's level descriptions and a response (optionally with the conversation it answers), it returns a probability for every level in a single pass, with no text generation. Level descriptions are embedded once per rubric and cached, so the cost of each judgment does not grow with the number or length of the levels.

Read more in the blog post: Introducing RubriX.

How it works

One encoder, Qwen3-8B with this repository's LoRA adapter, embeds the input and each level description separately. Two projection heads map them into a shared space, and

  • s_k = τ · cos(f(input), g(level_k)), with τ = 100
  • p = softmax(s_1 … s_K)

The model was trained with cross-entropy over each rubric's own levels plus an adaptively weighted ranked probability score, so that near-miss levels cost less than distant ones.

Usage

# pip install torch transformers peft safetensors huggingface_hub
from transformers.dynamic_module_utils import get_class_from_dynamic_module

RubriX = get_class_from_dynamic_module("rubrix.RubriX", "CobuildX-AI/RubriX-8B")
judge = RubriX.from_pretrained("CobuildX-AI/RubriX-8B")    # GPU with ~20 GB recommended (bf16)

result = judge.score(
    criterion="Does the response answer the question correctly and completely?",
    levels=["Wrong or unrelated.", "Partly correct.", "Correct but incomplete.", "Correct and complete."],
    response="Paris is the capital of France.",
    conversation="What is the capital of France?",
)
print(result)
# {'probabilities': [...], 'level': 3, 'expected_level': ...}   levels are 0-based, lowest first
  • score(criterion, levels, response, conversation=None, system_prompt=None, reference_answer=None) scores one response.
  • score_batch([{...}, ...]) scores many; level vectors are cached across calls (clear_cache() resets them).
  • levels must be ordered from lowest to highest. Inputs are truncated at 32,768 tokens (Qwen3-8B's native context); RubriX was trained on inputs of up to 8,192 tokens, so longer ones are outside what it was trained on. Pass max_tokens= to from_pretrained to change the cap. Memory grows with input length, so lower batch_size for very long inputs.

The base model is loaded from Qwen/Qwen3-8B at the pinned revision it was trained on (b968826d9c46dd6066d109eabc6255188de91218). The adapter is merged at load time by default (merge=False keeps it separate). This module reproduces the evaluated model: on 60 benchmark judgments, its probabilities differ from the recorded evaluation by at most 0.02 per level (bf16 numerics), and the predicted level matches in all 60.

Files

File Contents
adapter/ LoRA adapter (rank 16, α 32, all attention and MLP projections) for Qwen3Model
heads.safetensors the two projection heads (4096 → 1536 → 1536 → 512, GELU, LayerNorm) and the temperature
rubrix_config.json base model, revision, head configuration and pooling
rubrix.py loading and scoring code

No training data is included.

Results

Exact accuracy (%) against human labels; every judge scored the same judgments.

Set RubriX Jev Qwen3-8B judge
Held-out rubrics (6,749 judgments, criteria not in training) 75.4 57.1 49.8
HealthBench 68.7 73.5 64.5
BiGGen 37.8 43.0 40.7
ELLIPSE 30.8 32.0 47.8
SummEval 32.8 44.4 12.5
JudgmentBench, binary 66.6 80.7 76.8
JudgmentBench, multi-level 46.2 37.5 86.3
QAGS-CNN 80.4 82.1 78.7
QAGS-XSUM 75.7 78.7 78.2

Ranking correlation: summary-level Spearman ρ within groups of responses to the same input, averaged per category.

Benchmark RubriX Jev Qwen3-8B judge
SummEval 0.483 0.541 0.428
QAGS 0.620 0.684 0.616
ELLIPSE 0.515 0.601 0.485
HealthBench 0.320 0.441 0.273
BiGGen 0.434 0.526 0.527
JudgmentBench 0.045 0.068 0.002

Latency, one request at a time on an H100 with cached level embeddings: 27.5–28.3 ms per judgment from 2 to 100 levels of 1,500 tokens and from 10 to 3,000 tokens per level (5 levels). At 3,000 tokens per level that is 7.7× faster than Jev (approximate network time subtracted) and 18.8× faster than a Qwen3-8B judge.

Training

34,261 examples covering 2,284 criteria, at most 25 per criterion: public rubric datasets (Feedback Collection, HelpSteer, HelpSteer2, HelpSteer3, UltraFeedback, ASAP 2.0) and a proprietary dataset. One epoch on one H100 (2.8 hours); AdamW, learning rates 1e-4 (adapter) and 5e-4 (heads), effective batch 32, 5% warm-up then linear decay.

Limitations

  • The input and the level descriptions are encoded separately, so verdicts that depend on checking a specific fact against a level are harder than for a judge that reads both together.
  • Strongest on rubrics like those it was trained on; on unfamiliar benchmark formats it trails Jev on most sets. Fine-tuning on in-domain rubrics is the intended way to adapt it.
  • 8B encoder with small heads; a second training epoch did not improve validation loss.

Identity and Version

Repository
CobuildX-AI/RubriX-8B
Publisher
CobuildX AI
Task
Text classification
Modality
Text
Library
peft
Parameters
Not stated by the source
Languages
Not stated by the source
Revision
565a14ef34b30c3b6b8ab1c84761d7ae47f30c3a
First published
2026-10-16
Last updated
2026-10-17

Files and Weights

7 files, 250.2 MB in total. The weights are 2 files totalling 250.2 MB in safetensors.

Weights2 files · 250.2 MB
Configuration3 files · 10.3 KB
Documentation1 file · 5.4 KB
Repository1 file · 1.5 KB
Every file
FileTypeSizeSHA-256
adapter/adapter_model.safetensorsWeights174.7 MB bbd141e19e9a
heads.safetensorsWeights75.6 MB fba4052bfc70
adapter/adapter_config.jsonConfiguration1.3 KB —
rubrix.pyConfiguration8.7 KB —
rubrix_config.jsonConfiguration337 B —
README.mdDocumentation5.4 KB —
.gitattributesRepository1.5 KB —

License and Download

License
apache-2.0
Access
Open weights, no gate
Download size
250.2 MB
Download from CobuildX AI

Released by CobuildX AI through its official repository on Hugging Face. Read the license.

Built From

Memory Requirements

PrecisionWeights in memory
As published250.2 MB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About RubriX-8B

Can I use RubriX-8B commercially?

Yes. RubriX-8B is released under Apache License 2.0. The Apache License 2.0 is a permissive open-source license. It permits commercial use, modification and redistribution. It requires keeping the license and copyright notices and any NOTICE file, stating significant changes, and it includes an express patent grant from contributors.

Similar Models

Model · Text classification

twitter-roberta-base-sentiment-latest

Cardiff NLP

This is a RoBERTa-base model trained on ~124M tweets from January 2018 to December 2021, and finetuned for sentiment analysis with the TweetEval benchmark. The original Twitter-based RoBERTa model can be found here and the original reference paper is TweetEval. This model is suitable for English. 0 -> Negative; 1 -> Neutral; 2 -> Positive This sentiment analysis model has been integrated into TweetNLP. You can access the demo here.

Open weights cc-by-4.0 514 tokens transformers

Model · Text classification

finbert-tone

Yi

FinBERT is a BERT model pre-trained on financial communication text. The purpose is to enhance financial NLP research and practice. It is trained on the following three financial communication corpus. The total corpora size is 4.9B tokens. More technical details on FinBERT: Click Link This released finbert-tone model is the FinBERT model fine-tuned on 10,000 manually annotated (positive, negative, neutral) sentences from analyst reports. This model achieves superior performance on financial tone analysis task. If you are simply interested in using FinBERT for financial tone analysis, give it a try. If you use the model in your academic work, please cite the following paper: Huang, Allen H.…

Open weights 512 tokens transformers

Model · Text classification

ms-marco-MiniLM-L-6-v2

Joshua

https://huggingface.co/cross-encoder/ms-marco-MiniLM-L-6-v2 with ONNX weights to be compatible with Transformers.js. If you haven't already, you can install the Transformers.js JavaScript library from NPM using: Note: Having a separate repo for ONNX weights is intended to be a temporary solution until WebML gains more traction. If you would like to make your models web-ready, we recommend converting to ONNX using Optimum and structuring your repo like this one (with ONNX weights located in a subfolder named onnx).

Open weights 512 tokens transformers.js

Model · Text classification

twitter-xlm-roberta-base-sentiment

Cardiff NLP

This is a multilingual XLM-roBERTa-base model trained on ~198M tweets and finetuned for sentiment analysis. The sentiment fine-tuning was done on 8 languages (Ar, En, Fr, De, Hi, It, Sp, Pt) but it can be used for more languages (see paper for details). This model has been integrated into the TweetNLP library.

Open weights 514 tokens transformers

Model · Text classification

unbiased-toxic-roberta

Unitary

The huggingface models currently give different results to the detoxify library (see issue here). For the most up to date models we recommend using the models from https://github.com/unitaryai/detoxify Trained models & code to predict toxic comments on 3 Jigsaw challenges: Toxic comment classification, Unintended Bias in Toxic comments, Multilingual toxic comment classification. Built by Laura Hanu at Unitary, where we are working to stop harmful content online by interpreting visual content in context. Score not directly comparable since it is obtained on the validation set provided and not on the test set. To update when the test labels are made available. It is also noteworthy to mention…

Open weights apache-2.0 514 tokens transformers

Model · Text classification

emotion-english-distilroberta-base

Hartmann

With this model, you can classify emotions in English text data. The model was trained on 6 diverse datasets (see Appendix below) and predicts Ekman's 6 basic emotions, plus a neutral class: 1) anger 2) disgust 3) fear 4) joy 5) neutral 6) sadness 7) surprise The model is a fine-tuned checkpoint of DistilRoBERTa-base. For a 'non-distilled' emotion model, please refer to the model card of the RoBERTa-large version. a) Run emotion model with 3 lines of code on single text example using Hugging Face's pipeline command on Google Colab: b) Run emotion model on multiple examples and full datasets (e.g.,.csv files) on Google Colab: Please reach out to [email protected] if you have any…

Open weights 514 tokens transformers