Vidya is a fine-tuned Qwen3.5-4B model trained to be an expert tutoring assistant for Indian students preparing for NCERT Classes 6–12, IIT-JEE, and NEET. It explains concepts step-by-step with examples from the Indian curriculum, corrects misconceptions, and adapts to the student's level.
Tutoring score: 4.1 / 5.0 (Gemini 2.0 Flash as judge, 30-sample eval across accuracy, clarity, step-by-step reasoning, appropriate level, encouragement, and misconception handling)
A larger Vidya 9B variant is also available (tutoring score 4.6/5.0).
Quick Start
Ollama (recommended)
ollama run neosaket/vidya:4b
Or with a Modelfile for custom parameters:
FROM neosaket/vidya:4b
PARAMETER temperature 0.3
PARAMETER repeat_penalty 1.1
llama.cpp
bash
1llama-cli -m vidya-4b-Q4_K_M.gguf \2 --system "You are Vidya, an expert tutor for Indian students preparing for NCERT Classes 6-12, IIT-JEE, and NEET. Explain concepts step by step with examples from the Indian curriculum."\3 -i
Transformers
python
1from transformers import AutoModelForCausalLM, AutoTokenizer
23model = AutoModelForCausalLM.from_pretrained("neo-saket/vidya-4b", torch_dtype="auto")4tokenizer = AutoTokenizer.from_pretrained("neo-saket/vidya-4b")56messages =[7{"role":"system","content":"You are Vidya, an expert tutor for Indian students preparing for NCERT Classes 6-12, IIT-JEE, and NEET. Explain concepts step by step with examples from the Indian curriculum."},8{"role":"user","content":"Explain Newton's second law of motion with a Class 9 example."}9]1011text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)12inputs = tokenizer(text, return_tensors="pt").to(model.device)13outputs = model.generate(**inputs, max_new_tokens=512, temperature=0.3)14print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
Suppressing Chain-of-Thought
Qwen3.5 models produce a <think>...</think> reasoning block before the answer. To skip it and get a direct response, pre-fill the assistant turn:
python
1# Add this to your chat template call or inject directly:2# <|im_start|>assistant\n<think>\n\n</think>\n\n
Training Details
Pipeline: SFT → DPO (no CPT due to data constraints)
GRPO was also explored for JEE/NEET MCQ reasoning but caused catastrophic tutoring regression with short completions — the deployed model is the DPO checkpoint.
Evaluation
30-sample tutoring evaluation, judged by Gemini 2.0 Flash:
Dimension
Score
Overall
4.1 / 5.0
Accuracy
3.8
Clarity
4.4
Step-by-step reasoning
4.5
Appropriate level
4.5
Encouragement
4.5
Misconception handling
4.8
The accuracy score (3.8) reflects the 4B model's smaller factual recall capacity; the 9B variant achieves 4.6/5.0 overall with stronger accuracy.
Sample Interactions
Physics (Class 9):
User: Explain Newton's second law of motion with an example.
Vidya: Great question! Newton's Second Law is one of the most important concepts in Class 9 Physics.
**The Law:** The force acting on an object equals its mass times its acceleration.
F = ma
**Example:** Imagine pushing a cricket ball and a shot put with the same force.
- Cricket ball (mass ≈ 0.16 kg) → accelerates quickly
- Shot put (mass ≈ 7 kg) → barely moves
Same force (F), different masses → different accelerations. The heavier object has less acceleration.
Key takeaway: More mass = more force needed to produce the same acceleration. ✓
Chemistry (Class 10):
User: What is a displacement reaction? Give an example.
Vidya: A displacement reaction occurs when a more reactive element pushes a less reactive element out of its compound.
**Classic NCERT example — Zinc displacing Copper:**
Zn + CuSO₄ → ZnSO₄ + Cu
Step by step:
1. Zinc (Zn) is higher in the reactivity series than Copper (Cu)
2. Zinc atoms lose electrons → become Zn²⁺ ions in solution
3. Cu²⁺ ions gain those electrons → deposit as solid copper
4. The blue CuSO₄ solution turns colourless; copper metal appears
⚠️ Common misconception: Less reactive metals cannot displace more reactive ones.
Iron cannot displace zinc from ZnSO₄ — the reaction won't proceed.
Files
File
Description
*.safetensors
Merged BF16 model weights (use for fine-tuning or GGUF conversion)
vidya-Q4_K_M.gguf
Quantized GGUF, 4-bit — recommended for Ollama / llama.cpp
Modelfile
Ollama Modelfile with recommended settings
config.json, tokenizer*
Model configuration and tokenizer
Limitations
Accuracy is weaker than the 9B variant — may occasionally hallucinate specific NCERT facts
Primary training language is English; Hindi support is limited
Optimised for Indian curriculum (NCERT, JEE, NEET) — general-purpose use may be suboptimal
Not suitable for medical advice, legal guidance, or safety-critical applications
Apache 2.0 — inherits from the Qwen3.5 base model license.
Recommended settings (GGUF / mobile apps)
This GGUF ships a plain ChatML chat template (Qwen3 thinking mode disabled). If you downloaded an earlier copy, re-download to pick up the fix — the older template could make the model ramble and never stop.
Recommended sampler settings:
temperature: 0.3
repeat_penalty: 1.1 (do not use 1.0 — small models can loop; avoid > 1.3)