Downloads · 30 days
10
11% of all-time downloads
feyninc/qrater-web-base-v1.0
qrater-web-base-v1.0 is a text classification model from feyninc. Use it when you need a label for a piece of text. The card lists the license as apache-2.0.
A fast, lightweight binary text classifier that distinguishes clean, usable web content from noisy web pages (boilerplate, ads, nav menus, cookie banners, login walls, paywalls, etc.).
Downloads · 30 days
10
11% of all-time downloads
All-time downloads
90
Public
Parameters
596M
1.2 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors1.2 GB · 99%
From the Hugging Face model README
A fast, lightweight binary text classifier that distinguishes clean, usable web content from noisy web pages (boilerplate, ads, nav menus, cookie banners, login walls, paywalls, etc.).
Distilled from qrater-web-large-v1.0 (4B) using temperature-scaled KL-divergence, retaining near-identical accuracy at 6x the throughput and 4x less memory.
| Model | Params | Base | Speed (vLLM) | Speed (HF) | GPU Mem | Val Acc | Val F1 |
|---|---|---|---|---|---|---|---|
| qrater-web-large-v1.0 | 4B | Qwen3-Embedding-4B | ~15 docs/s | ~9 docs/s | ~8 GB | 92.1% | 0.867 |
| qrater-web-base-v1.0 | 0.6B | Qwen3-Embedding-0.6B | ~90 docs/s | ~16 docs/s | ~2 GB | 92.4% | 0.873 |
| qrater-web-small-v1.0 | 210M | EuroBERT-210m | — | ~34 docs/s | ~0.5 GB | 90.6% | 0.843 |
Speed measured on a single A100-80GB, max 4096 tokens.
Given a web page (as markdown or plain text), the model predicts:
from transformers import pipeline
pipe = pipeline(
"text-classification",
model="chonkie-ai/qrater-web-base-v1.0",
torch_dtype="bfloat16",
device_map="auto",
)
result = pipe("# How DNS Works\n\nDNS resolution starts when...")
# [{'label': 'clean', 'score': 0.97}]
from vllm import LLM
model = LLM(
"chonkie-ai/qrater-web-base-v1.0",
dtype="bfloat16",
max_model_len=4096,
)
outputs = model.classify(["your web page text here"])
probs = outputs[0].outputs.probs # [prob_dirty, prob_clean]
The best configuration was selected from a 9-config sweep over learning rate, temperature, and alpha:
| Config | Val Accuracy | Val F1 |
|---|---|---|
| lr=1e-4, T=2.0, α=0.5 | 88.6% | 0.810 |
| lr=5e-5, T=2.0, α=0.5 | 90.3% | 0.840 |
| lr=2e-5, T=2.0, α=0.5 | 78.9% | 0.613 |
| lr=1e-5, T=2.0, α=0.5 | 59.1% | 0.383 |
| lr=5e-5, T=1.0, α=0.5 | 90.2% | 0.838 |
| lr=5e-5, T=4.0, α=0.5 | 89.7% | 0.828 |
| lr=5e-5, T=2.0, α=0.3 | 90.6% | 0.843 |
| lr=5e-5, T=2.0, α=0.7 | 87.9% | 0.795 |
| lr=5e-5, T=2.0, α=1.0 | 84.7% | 0.738 |
The final model was trained with lr=5e-5, T=1.0, α=0.5 for 3 full epochs, achieving 92.4% accuracy and 0.873 F1.
A page is clean if:
A page is dirty if:
Validation set (1,000 held-out samples, same distribution as training):
Gold standard (100 human-labeled samples):
Live web search results (99 pages across 10 diverse queries):
| Engine | 0.6B (this model) | 4B (teacher) | Speedup |
|---|---|---|---|
| HuggingFace (single doc, 1 GPU) | 16.0 docs/s | 8.7 docs/s | 1.8x |
| vLLM classify (batched, 1 GPU) | ~90 docs/s | ~15 docs/s | ~6x |
| Peak GPU memory | 2.1 GB | ~8 GB | 3.8x less |
@misc{qrater2026,
title={qrater-web-base-v1.0: Distilled Web Content Quality Classifier},
author={Bhavnick Minhas},
year={2026},
url={https://huggingface.co/chonkie-ai/qrater-web-base-v1.0}
}
Apache 2.0