Model reference · open weights
Prism-Qwen3.5-Reranker is an open-weight embedding model from infgrad. Prism-Qwen3.5-Reranker-4B (BF16) weighs 8.4 GB; the smallest configuration that runs it is RTX 3060 12 GB.
What it is
| Released by | infgrad |
|---|---|
| Type | Embedding models |
| Task | Reranker |
| Parameters (lead) | 4.2B |
| Context | 262,144 tokens |
| Runs with | transformers |
| Released | 2026-04-26 |
| Popularity | 1k downloads / month |
| Weights | 8.4 GB (Prism-Qwen3.5-Reranker-4B (BF16), file size) |
| Licence | Open weights |
What it runs on
Weights 8.4 GB (file size) · overhead about 1.1 GB.
| Card | Runs | Counted memory |
|---|---|---|
| RTX 3060 12 GB | fits | 11.6 GB |
| RTX 4060 Ti 16 GB | fits | 15.4 GB |
| RTX 3090 24 GB | fits | 23.4 GB |
| RTX 4090 24 GB | fits | 23.4 GB |
| RTX 5090 32 GB | fits | 31.0 GB |
| L40S 48 GB | fits | 44.0 GB |
| A100 80 GB | fits | 78.2 GB |
| H100 80 GB | fits | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | fits | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | fits | 107 GB |
| H200 141 GB | fits | 138 GB |
| B200 180 GB | fits | 176 GB |
Estimates, not measurements: the weights are the build's file size. No cache grows with use; a batch of inputs needs working memory of its own. Counted memory is 92 % of what CUDA reports for the card.
From the model card
Beyond Relevance Scoring — Jointly Producing Contributions and Evidence for Agentic Retrieval.
A reranker family that, unlike standard rerankers that emit only a relevance score, returns three things in a single forward pass: a calibrated score, a one-sentence contribution, and a self-contained evidence passage extracted from the document.
Five checkpoints are released on the Hugging Face Hub. Four are fine-tuned from the Qwen3.5 backbone; one (-4B-exp) is an experimental extension built on top of Qwen3-Reranker-4B, demonstrating that the same recipe transfers to an existing LLM-based reranker without losing ranking quality.
| Model | Backbone | Parameters | Hugging Face |
|---|---|---|---|
| Prism-Qwen3.5-Reranker-0.8B | Qwen3.5 | 0.8B | infgrad/Prism-Qwen3.5-Reranker-0.8B |
| Prism-Qwen3.5-Reranker-2B | Qwen3.5 | 2B | infgrad/Prism-Qwen3.5-Reranker-2B |
| Prism-Qwen3.5-Reranker-4B | Qwen3.5 | 4B | infgrad/Prism-Qwen3.5-Reranker-4B |
| Prism-Qwen3.5-Reranker-9B | Qwen3.5 | 9B | infgrad/Prism-Qwen3.5-Reranker-9B |
| Prism-Qwen3-Reranker-4B-exp | Qwen3-Reranker-4B | 4B | infgrad/Prism-Qwen3-Reranker-4B-exp |
In agentic / RAG pipelines, a relevance score is rarely the end goal. After deciding a document is relevant, the agent still has to read it, denoise it, and decide what to do next. Prism-Reranker folds that work into the reranker itself:
s(q, d) = σ(ℓ_yes − ℓ_no) ∈ (0, 1). Calibrated, ranking-ready.** — a self-contained, faithfully-rephrased rewrite of the query-relevant content. Drops irrelevant background, preserves verbatim proper nouns / numbers / dates / code / URLs. You can feed directly to a downstream LLM and skip the raw document — saving context tokens and removing web-noise.If the document is not relevant, the model outputs no and stops. No contribution/evidence is generated.
yes/no + +, supervised by a 5-LLM-as-judge ensemble.Two ways to call the model. Both produce the same relevance score s(q, d) = σ(ℓ_yes − ℓ_no). Use A when you also want /. Use B when you only need a score and want a drop-in replacement for any other CrossEncoder reranker.
We use one shared example throughout so you can compare the outputs side by side:
QUERY = "What is the boiling point of water at sea level?"
DOCUMENTS = [
"Water boils at 100 C (212 F) at standard atmospheric pressure (1 atm), "
"which corresponds to sea-level conditions.",
"Mount Everest is the highest mountain on Earth, with a peak elevation "
"of 8,848 meters above sea level.",
]
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
MODEL_PATH = "infgrad/Prism-Qwen3.5-Reranker-4B" # or any sibling repo above
SYSTEM_PROMPT = (
"Judge whether the Document meets the requirements based on "
"the Query and the Instruct provided. "
)
INSTRUCTION = (
'Judge if the document is relevant to the query. Reply "yes" or "no".\n'
'On "yes", also emit:\n'
"One sentence covering every core point the document "
"contributes to the query, without elaboration.\n"
"Self-contained rewrite of the query-relevant content. Rules:\n"
"- Faithful: rephrase only; add or infer nothing.\n"
"- Self-contained: evidence alone must fully answer the query.\n"
"- Concise: drop query-irrelevant background.\n"
"- Verbatim (no translation): proper nouns, terms, abbreviations, "
"numbers, dates, code, URLs.\n"
"- Output language: multilingual doc → query's language; else doc's language."
""
)
PROMPT_TEMPLATE = (
"system\n{system}\n"
"user\n"
": {instruction}\n"
": {query}\n"
": {doc}\n"
"assistant\n\n\n\n\n"
)
def build_prompt(query: str, doc: str) -> str:
return PROMPT_TEMPLATE.format(
system=SYSTEM_PROMPT, instruction=INSTRUCTION, query=query, doc=doc
)
tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)
model = AutoModelForCausalLM.from_pretrained(
MODEL_PATH,
torch_dtype=torch.bfloat16,
device_map="cuda",
attn_implementation="sdpa",
).eval()
yes_id = tokenizer.encode("yes", add_special_tokens=False)[0]
no_id = tokenizer.encode("no", add_special_tokens=False)[0]
@torch.no_grad()
def rerank(query: str, doc: str, max_new_tokens: int = 512):
prompt = build_prompt(query, doc)
Quoted from the model card on Hugging Face — the full card is behind the Hugging Face link above.