HydraQwen3.5-0.8B-Jev
One Qwen3.5-0.8B weight set in memory runs retrieval, reranking and generation by switching two LoRA adapters:
| Mode | Model | Weights | Output |
|---|---|---|---|
| Retrieval | ColQwen3.5-0.8B | base/ + retrieval/ (LoRA r64, 320-d projection) | one 320-d vector per token; pages rank by MaxSim |
| Reranking | JevQwen3.5-0.8B | base/ + reranking/ (LoRA r16, 24-slot head) | calibrated P(yes) that a page answers the question |
| Generation | Qwen3.5-0.8B | base/, adapters off | answer from the reranked pages |
base/ holds Qwen/Qwen3.5-0.8B at revision 2fc06364, so the repository loads without other downloads.
Demo: HydraQwen-3.5-0.8B-Jev Space
Usage
pip install -r requirements.txt
from huggingface_hub import snapshot_download
import sys
path = snapshot_download("athrael-soju/HydraQwen3.5-0.8B-Jev")
sys.path.insert(0, path)
from hydra_jev import HydraJev
from PIL import Image
model = HydraJev.from_pretrained(path)
pages = [Image.open(p) for p in ["page1.png", "page2.png", "page3.png"]]
question = "What was the Q3 revenue?"
ranked = model.rank(question, pages) # [(page index, MaxSim score), ...]
p_yes = model.decide("", f'Does this page answer the question "{question}"?', kind="noul",
image=pages[ranked[0][0]])["probabilities"]["true"]
answer = model.generate(f"Answer using only this page. Question: {question}", images=[pages[ranked[0][0]]])
model.ask(question, pages, top_k=5, threshold=0.9) # all three steps
ask retrieves the top-k pages, reranks each page image by JevQwen3.5-0.8B P(yes), and answers from the pages whose P(yes)
reaches the threshold. JevQwen3.5-0.8B also answers choice (2 to 16 options) and 0 to 5 score questions through decide.
Training
The reranking adapter continues the JevQwen3.5-0.8B text decision adapter on 100,000 question and page-image pairs labelled with Qwen3.6-27B P(answerable), replaying Jev text decisions in 35% of each batch. Page checks run at temperature 1.1, fitted on 2,000 held-out pairs.
Evaluation
All scores load the files of this repository at revision 992aaf8.
Retrieval mode, official MTEB 2.12.30 (native 320-d, 1,792 visual tokens per page):
| Benchmark | Metric | HydraQwen3.5-0.8B-Jev |
|---|---|---|
| ViDoRe V1 (10 tasks) | mean nDCG@5 | 0.8814 |
| ViDoRe V2 (4 tasks) | mean nDCG@5 | 0.6025 |
| ViDoRe V3 (8 public tasks) | mean nDCG@10 | 0.5650 |
Reranking mode, with the temperatures in hydra_jev_config.json:
| Benchmark | Score |
|---|---|
| JevBench v1.4.1, 231 public items | 155 correct (0.671), chance-corrected 51.8; easy 0.979, standard 0.764, hard 0.477 |
| JevBench-mini, 1,938 questions | coherence 0.661 (95% CI 0.635 to 0.686), accuracy 0.766 |
| Page answerability on the retrieval top 5 of ViDoRe V1 / V2 / V3 | AUROC 0.845 / 0.848 / 0.749 |
Loading reranking/ leaves every ViDoRe score and per-query ranking of retrieval mode unchanged, and generation with both
adapters off reproduces Qwen3.5-0.8B logits and greedy output exactly. The resident weights take 1.99 GB; switching modes
peaks at 2.57 GB.
Limitations
At a 0.90 threshold the reranker still rejects some answer pages and can pass neighbouring pages on the same topic. An answer split across two pages often passes on neither.
License
Apache-2.0, the license of the Qwen3.5-0.8B base.