/ Модель

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

Лицензия
MIT
Библиотека
transformers
Опубликована
4 июл 2026

distilbert-query-classifier

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

Мультиязычная DistilBERT-модель классифицирует короткие запросы как обычную беседу или содержательную информацию для долговременного хранения.

0скачиваний за 30 дней0лайковвеса обновлены4 июл 2026

Бенчмарки

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

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

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

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

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

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

Query Sieve Classifier — мультиязычная модель на базе DistilBERT, дообученная для бинарной классификации коротких пользовательских запросов: GENERIC (обычная беседа) или SEMANTIC (содержательная информация, пригодная для долговременного хранения). Она предназначена для фильтрации запросов в системах, которые сохраняют знания или строят память диалога. Модель рассчитана на короткие запросы на английском и хинди длиной до 10 слов; более длинные фразы автоматически относятся к SEMANTIC.

В README указано 134 млн параметров, динамическая квантизация INT8 и экспорт в ONNX для запуска через ONNX Runtime на CPU. На тестовой выборке автор сообщает точность 98,39%, однако обучающие примеры синтетические и сгенерированы Llama 3.1 8B, поэтому качество на реальных запросах может отличаться. Для инференса также доступны веса safetensors. Модель распространяется по лицензии MIT.

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

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

Ограничения

Модель рассчитана на короткие запросы до 10 слов; более длинные фразы без классификации относятся к SEMANTIC. Обучение проводилось на синтетических данных, поэтому заявленная точность на тестовой выборке не гарантирует аналогичного качества на реальных запросах.

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

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

Открыть на Hugging Face

Query Sieve Classifier

DistilBERT multilingual fine-tuned to classify user queries as GENERIC or SEMANTIC — filtering chit-chat from durable knowledge worth storing.

Model Description

  • Architecture: distilbert-base-multilingual-cased (134M params)
  • Quantization: INT8 dynamic (ONNX Runtime)
  • Input: Short text queries in English or Hindi (≤10 words; longer sentences bypass to SEMANTIC)
  • Output: Binary — GENERIC (0) or SEMANTIC (1)
  • Inference: ONNX Runtime CPU, single-thread P99 = 16.87ms

Repository Structure

distilbert-query-classifier/
├── README.md                    # Model card (this file)
├── model/
│   ├── pytorch/                 # PyTorch safetensors (for transformers library)
│   │   ├── model.safetensors    # Full precision PyTorch weights
│   │   ├── config.json          # Model configuration
│   │   ├── tokenizer.json       # HuggingFace tokenizer
│   │   └── tokenizer_config.json
│   └── onnx/                    # ONNX INT8 quantized (for CPU inference)
│       └── model_quantized.onnx # INT8 quantized model (~130 MB)
├── scripts/                     # Python training pipeline
│   ├── config.py                # Constants and paths
│   ├── generate_dataset.py      # Synthetic data generation via Ollama
│   ├── train.py                 # Fine-tuning + ONNX export + latency benchmark
│   └── ...

Usage

Python (with transformers + ONNX Runtime)

from transformers import AutoTokenizer
import onnxruntime as ort

# Load tokenizer from the pytorch folder
tokenizer = AutoTokenizer.from_pretrained(
    "addyo07/distilbert-query-classifier",
    subfolder="model/pytorch",
)

# Load ONNX model
session = ort.InferenceSession("model/onnx/model_quantized.onnx")

def classify(text: str) -> str:
    inputs = tokenizer(text, return_tensors="np", max_length=64, truncation=True, padding="max_length")
    logits = session.run(None, {
        "input_ids": inputs["input_ids"].astype(np.int64),
        "attention_mask": inputs["attention_mask"].astype(np.int64),
    })[0]
    return "SEMANTIC" if logits[0][1] > logits[0][0] else "GENERIC"

Rust (with query-sieve crate)

[dependencies]
query-sieve = { git = "https://github.com/addy-47/query-sieve-rs" }
use query_sieve::GenericSemanticClassifier;

let classifier = GenericSemanticClassifier::load(
    "model/onnx/model_quantized.onnx",
    "model/pytorch/tokenizer.json",
)?;
let result = classifier.classify("my name is John")?;

Download individual files

# ONNX model (for CPU inference)
wget https://huggingface.co/addyo07/distilbert-query-classifier/resolve/main/model/onnx/model_quantized.onnx

# PyTorch weights (for fine-tuning)
wget https://huggingface.co/addyo07/distilbert-query-classifier/resolve/main/model/pytorch/model.safetensors

# Tokenizer
wget https://huggingface.co/addyo07/distilbert-query-classifier/resolve/main/model/pytorch/tokenizer.json

Performance

SplitAccuracy
Test (15% holdout)98.39%

Latency

ModeP50P99
Multi-thread CPU8.39 ms11.81 ms
Single-thread CPU (intra_op_threads=1)14.81 ms16.87 ms

Training Data

Dataset: addyo07/query-classification-dataset

12,044 synthetic examples generated by llama3.1:8b:

CategoryEnglishHindi
GENERIC3,0033,019
SEMANTIC3,0173,005

The SEMANTIC category contains ~40% short standalone statements (3-7 words) to prevent the model from learning "semantic = long sentence."

Training Scripts

The scripts/ directory contains the full training pipeline:

  1. python scripts/generate_dataset.py --category en_semantic — generate synthetic data via Ollama
  2. python scripts/train.py — fine-tune DistilBERT + export ONNX INT8 + benchmark

Rust Crate

The query-sieve Rust crate provides the inference runtime:

  • GitHub: addy-47/query-sieve-rs
  • ONNX Runtime (ort) with HuggingFace tokenizer
  • Configurable single/multi-thread CPU
  • 10 word bypass (long sentences auto-classify as SEMANTIC)

License

MIT

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

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

GPU в ailist

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

Нельзя запустить

В репозитории нет config.json: не понять архитектуру модели.

Ревизия весов
b814da9

0 моделей