VectraYX-Pro 7B

VectraYX-Pro 7B is a QLoRA-32 adapter for Qwen2.5-7B-Instruct fine-tuned on the VectraYX Spanish cybersecurity SFT corpus (~93,500 examples). It is part of the VectraYX model family presented in the paper arXiv:2605.13989.

arXiv Zenodo

This repo contains only the QLoRA adapter weights (~308 MB). You need to load them on top of Qwen/Qwen2.5-7B-Instruct.


Results (VectraYX-Bench, single seed)

Model Params B1 KW B2 F1 B3 TM B4 Tool B5 Chat
VectraYX-Nano v7 (headline) 42M 0.332±0.005 0.230±0.052 0.725±0.130
VectraYX-Pro 3B 3.2B 0.341 0.695 0.686 0.600 0.800
VectraYX-Pro 7B 7B 0.335 0.815 0.686 0.880 0.800
GPT-4o (frontier ref.) 0.333 0.110 0.520 0.615 0.631

B4=0.880 — best tool-selection score in the VectraYX family. B2=0.815 (best threat classification).


What is this?

This adapter applies the VectraYX cybersecurity specialization to Qwen2.5-7B-Instruct:

  • SFT corpus: ~93,500 examples — 13K OASST1-ES + 4K CVE Q&A + 2.8K MCP tool-use traces + general cybersecurity Q&A
  • Training: QLoRA rank=32 (4-bit quantized base), 3 epochs, lr=2e-4 on AWS SageMaker (ml.g5.xlarge)
  • Language: Spanish (LATAM-focused)
  • Tool use: Native MCP <|tool_call|> emission (B4=0.880, highest in family)

Usage

from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
import torch

# Load 4-bit quantized base model (~5 GB VRAM)
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_compute_dtype=torch.bfloat16,
    bnb_4bit_quant_type="nf4"
)
base_model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen2.5-7B-Instruct",
    quantization_config=bnb_config,
    device_map="auto"
)

# Load VectraYX QLoRA adapter on top
model = PeftModel.from_pretrained(base_model, "jsantillana/vectrayx-pro-7b")
tokenizer = AutoTokenizer.from_pretrained("jsantillana/vectrayx-pro-7b")

# Inference
messages = [{"role": "user", "content": "¿Cuáles son los CVEs más críticos relacionados con Log4j?"}]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=300, temperature=0.7)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

Model family

Model Backbone Params B4 Tool B2 F1
VectraYX-Nano v7 from-scratch 42M 0.230±0.052
VectraYX-Base from-scratch 260M 0.000* 0.220
VectraYX-Pro 3B Qwen2.5-3B + LoRA-64 3.2B 0.600 0.695
VectraYX-Pro 7B Qwen2.5-7B + QLoRA-32 7B 0.880 0.815

Citation

@misc{santillana2026vectrayx,
  title     = {VectraYX-Nano: A 42M-Parameter Spanish Cybersecurity Language Model
               with Curriculum Learning and Native Tool Use},
  author    = {Santillana, Juan S.},
  year      = {2026},
  eprint    = {2605.13989},
  archivePrefix = {arXiv},
  primaryClass  = {cs.CL},
  url       = {https://arxiv.org/abs/2605.13989}
}
Downloads last month
86
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for jsantillana/vectrayx-pro-7b

Base model

Qwen/Qwen2.5-7B
Adapter
(2091)
this model

Paper for jsantillana/vectrayx-pro-7b