Text Ranking
Transformers
Safetensors
English
Vietnamese
qwen3
text-generation
reranker
cross-encoder
listwise-reranking
generative-reranker
cve
cybersecurity
qdrant
secAI
Instructions to use DuyTa/sec-rerank with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use DuyTa/sec-rerank with Transformers:
# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("DuyTa/sec-rerank") model = AutoModelForCausalLM.from_pretrained("DuyTa/sec-rerank", device_map="auto") - Notebooks
- Google Colab
- Kaggle
|
Download README.md from DuyTa/sec-rerank: direct link, hf CLI and curl.
- Browser
- Download file 4.08 kB
-
https://huggingface.co/DuyTa/sec-rerank/resolve/main/README.md
- Command line
-
hf download hf://DuyTa/sec-rerank/README.md
-
curl -L -o README.md https://huggingface.co/DuyTa/sec-rerank/resolve/main/README.md
4.08 kB
| license: apache-2.0 | |
| base_model: Qwen/Qwen3-Reranker-0.6B | |
| base_model_relation: finetune | |
| library_name: transformers | |
| pipeline_tag: text-ranking | |
| language: | |
| - en | |
| - vi | |
| pretty_name: sec-rerank (fine-tuned Qwen3-Reranker) | |
| tags: | |
| - reranker | |
| - cross-encoder | |
| - text-ranking | |
| - listwise-reranking | |
| - generative-reranker | |
| - cve | |
| - cybersecurity | |
| - qdrant | |
| - secAI | |
| datasets: | |
| - DuyTa/Cyber_F1_v2 | |
| - DuyTa/cve-kgrag-db | |
| # sec-rerank | |
| **This is a fine-tuned version of [Qwen/Qwen3-Reranker-0.6B](https://huggingface.co/Qwen/Qwen3-Reranker-0.6B)** — a **listwise generative reranker** (second-stage ranker), not an embedding model. | |
| It was trained on grouped query–document examples whose **hard negatives were mined from a local Qdrant** collection (`cve_kb`) built from CVE investigation trajectories. It does not emit dense vectors; it reorders first-stage candidates (e.g. from [`DuyTa/sec-embedding`](https://huggingface.co/DuyTa/sec-embedding)). It is the reranker component of the **secAI** stack, paired with [`DuyTa/Cyber-F1-AWQ`](https://huggingface.co/DuyTa/Cyber-F1-AWQ). | |
| ## Training | |
| From `notebooks/Qwen3_Reranker_Colab.ipynb` (ms-swift): | |
| | | | | |
| |---|---| | |
| | Base | `Qwen/Qwen3-Reranker-0.6B` | | |
| | Task | `generative_reranker` (causal-LM reranker / cross-encoder scoring) | | |
| | Loss | **listwise reranking** (`--loss_type listwise_reranker`) | | |
| | Tuner | full-parameter SFT (`--tuner_type full`) | | |
| | Engine | [ms-swift](https://github.com/modelscope/ms-swift) `swift sft` | | |
| | Max length | 2048 | | |
| | Learning rate | 6e-6 | | |
| `(query, positive, negative)` rows are converted to SWIFT **grouped ranking** schema: | |
| - `messages` — system instruction + user query | |
| - `positive_messages` — gold CVE passage | |
| - `negative_messages` — Qdrant-mined hard-negative CVE passage(s) | |
| Train-time instruction: | |
| > Given a Vietnamese cybersecurity search query, retrieve passages from the CVE knowledge base that directly answer it. | |
| SWIFT fills the native Qwen3-Reranker `{Instruction}` slot from that system message. | |
| ### Hard-negative mining | |
| Positives and negatives are real CVE core-chunk text from local Qdrant `cve_kb` (NVD/MITRE). The negative is a **near-miss CVE** from the same collection — typically a different CWE (`hard_negative_type: different_cwe`): high lexical overlap, wrong document. The listwise objective ranks the gold passage above those mined hard negatives. | |
| Split: 33.6k train / 4.2k validation grouped examples. | |
| ### Training corpus | |
| Built from **five years of authoritative cybersecurity sources**: NVD (173,473 CVEs), MITRE CWE (768 weakness types, mapped to ~92% of CVEs), CAPEC/ATT&CK (443/174 entries) and Exploit-DB (3,139 exploits, 2021–2026). Public datasets: [`DuyTa/Cyber_F1_v2`](https://huggingface.co/datasets/DuyTa/Cyber_F1_v2), [`DuyTa/cve-kgrag-db`](https://huggingface.co/datasets/DuyTa/cve-kgrag-db). | |
| Training hardware: 2×A100 80GB. | |
| ## Acceptance (nghiệm thu) — reported KPIs | |
| Measured on **NVIDIA A100 80GB** in the full production chatflow (Hybrid Search → Rerank → LLM), on a 1,000-sample security test set (40% CVE identification/classification, 40% remediation advice, 20% real-world scenario reasoning): | |
| | Metric | Result | Target | Pass | | |
| |---|---|---|---| | |
| | Ranking quality — **Precision@1** | **98.23%** | > 90% | ✅ | | |
| | Throughput | **4,862 docs/s** (concurrency 128) | ≥ 180 rerank/s | ✅ | | |
| Raw per-sample logs (`reranking-precision-at-1.jsonl`) and evaluation code are delivered with the acceptance package. | |
| ## Inference | |
| Score each `(query, document)` with the native Qwen3-Reranker generative yes/no head. Use only to **rerank** a short candidate list from dense / hybrid retrieval. | |
| ```python | |
| # vLLM / OpenAI-compatible rerank endpoint | |
| # POST /v1/rerank | |
| { | |
| "model": "DuyTa/sec-rerank", | |
| "query": "CVE-2021-44228 JNDI lookup on log4j", | |
| "documents": ["...", "..."] | |
| } | |
| ``` | |
| ## Attribution & license | |
| Released under **Apache-2.0**. Derived from [Qwen/Qwen3-Reranker-0.6B](https://huggingface.co/Qwen/Qwen3-Reranker-0.6B) (**Apache-2.0**); credit for the base reranker belongs to the Qwen team. | |