Sadiq-Cite 8B โ€” GGUF

Sadiq-Cite is a retrieval-grounded citation model for Islamic jurisprudence in the Ja'fari (Imami) tradition. Given a question and a set of retrieved passages, it finds the rulings that bear on the question, quotes them verbatim between ยซโ€ฆยป, and lists their book and page. It does not issue verdicts, does not reason its way to a ruling, and does not apply the law to the asker's situation โ€” and when the passages contain nothing relevant, it says so instead of improvising.

It is the answer stage of a pipeline, not a chatbot: run it behind LM Studio's server, inside AnythingLLM, in an n8n flow, or from any OpenAI-compatible client, with your own corpus supplying the passages. Built by Sadiqoon Technologies on Qwen/Qwen3-8B.

ู†ู…ูˆุฐุฌ ุงุณุชุดู‡ุงุฏ ู…ุคุณูŽู‘ุณ ุนู„ู‰ ุงู„ุงุณุชุฑุฌุงุน ููŠ ุงู„ูู‚ู‡ ุงู„ุฅู…ุงู…ูŠู‘. ูŠูุนุทู‰ ุงู„ุณุคุงู„ ูˆุงู„ู…ู‚ุงุทุน ุงู„ู…ุณุชุฑุฌุนุฉุŒ ููŠู„ุชู‚ุท ุงู„ู†ุตูˆุต ุงู„ุชูŠ ุชุฎุตู‘ ุงู„ู…ุณุฃู„ุฉ ูˆูŠู†ู‚ู„ู‡ุง ุญุฑููŠู‹ู‘ุง ุจูŠู† ยซยป ูˆูŠุนุฒูˆู‡ุง ุจุงู„ูƒุชุงุจ ูˆุงู„ุตูุญุฉ. ู„ุง ูŠููุชูŠ ูˆู„ุง ูŠุณุชู†ุจุท ูˆู„ุง ูŠู†ุฒู‘ู„ ุงู„ุญูƒู… ุนู„ู‰ ุญุงู„ ุงู„ุณุงุฆู„ุŒ ูˆุฅุฐุง ู„ู… ูŠูƒู† ููŠ ุงู„ู…ู‚ุงุทุน ู…ุง ูŠุฎุตู‘ ุงู„ุณุคุงู„ ุตุฑู‘ุญ ุจุฐู„ูƒ ูˆู„ู… ูŠุฎุชุฑุน. ูŠูุดุบูŽู‘ู„ ุฎู„ู ุฎุงุฏู… ู…ุญู„ู‘ูŠ ุฏุงุฎู„ ู…ู†ุธูˆู…ุฉ ุงุณุชุฑุฌุงุนุŒ ู„ุง ูƒูˆุงุฌู‡ุฉ ู…ุญุงุฏุซุฉ.

Why a citation model rather than an answering one

A jurisprudential answer has two halves: what the sources say, and what follows for you. The first is verifiable โ€” the quote is either in the passage or it is not. The second is where a language model, however large, quietly invents. Sadiq-Cite is trained to do only the first half, so that everything it produces can be checked by a machine.

That check ships with it: sadiq_fiqh.verify() matches every ยซquoteยป in the output against the passages you supplied and returns a per-quote verdict, so your pipeline can drop an unverified quote before a reader ever sees it.

Evaluation

282 held-out questions with their retrieved passages, plus 100 refusal probes โ€” real questions paired with passages deliberately drawn from unrelated chapters. All metrics are computed programmatically; no LLM judge was used.

Answers that quote at least one passage 99.6%
Quotes traceable to the supplied passages 87.5% (84.5% exact after orthographic normalization, 3.0% near-verbatim)
Quotes not found in the passages 10.8%
Answers where every quote verified 79.4%
Answers giving a book-and-page citation 97.2%
Citations matching a supplied passage 82.5%
Correct refusals on the 100 probes 100%
False refusals on genuine questions 0.4% (1 of 282)

Two things are worth reading carefully. Refusal discrimination is exact: on a hundred questions given deliberately irrelevant context it refused every time, and on 282 answerable ones it refused once. Groundedness, on the other hand, is high but not perfect โ€” roughly one quote in nine is reconstructed from what the model learned rather than copied from what it was given. That is the reason the verifier is part of the release rather than an afterthought: run it, and the residual becomes a rejected quote instead of a false citation.

Robustness to prompt format

Different RAG tools inject context differently, so the same 60 questions were re-run in four injection styles:

Injection style Answers with quotes Quote verbatim rate Citation matches a passage
Native (the shape below) 100% 88.8% 67.8%
AnythingLLM-style context block 98.3% 85.5% 79.7%
XML <doc source= page=> tags 100% 87.7% 66.7%
Bare passages, no book or page given 100% 83.0% 0%

Quoting holds up across all four โ€” the model does not need our exact template to find and copy the right text. Citation is a different matter: if you do not pass the book and page with each passage, the model will produce a citation anyway, and it will be fabricated. Always include source metadata in the passage header, or strip the citations from the output.

Training

3,949 questionโ€“passageโ€“answer examples in which the answer quotes and cites only, plus 500 refusal examples. LoRA (r=32) on all attention and MLP projections, two epochs, merged into the base weights.

Files

File Quant Size Runs on
sadiq-cite-8b-Q4_K_M.gguf Q4_K_M ~4.7 GB Recommended. A laptop with 8 GB of RAM
sadiq-cite-8b-Q5_K_M.gguf Q5_K_M ~5.7 GB 16 GB of RAM; a little closer to full precision
sadiq-cite-8b-Q8_0.gguf Q8_0 ~8.7 GB Effectively lossless
sadiq-cite-8b-F16.gguf F16 ~16 GB Reference

The original weights are in sadiqoon/sadiq-cite-8b.

Running it

LM Studio as a server

Load the model, start the local server, then point any OpenAI-compatible client at it:

from sadiq_fiqh import Sadiq, Passage, verify        # pip install sadiq-fiqh
s = Sadiq(base_url="http://localhost:1234/v1", model="sadiq-cite-8b")

passages = [Passage(text="ู„ุง ูŠุฌุจ ุงู„ุฎู…ุณ ููŠ ู…ุง ู„ุง ูŠุฏุฎู„ ููŠ ู…ุณู…ู‘ู‰ ุงู„ุชูƒุณู‘ุจโ€ฆ", book="โ€ฆ", page=120)]
answer = s.cite("ู‡ู„ ูŠุฌุจ ุงู„ุฎู…ุณ ููŠ ุงู„ุฐู‡ุจ ุงู„ู…ู„ุจูˆุณุŸ", passages)
print(verify(answer, passages))   # {'quotes': [...], 'all_verbatim': True}

AnythingLLM

Point the workspace's LLM at your local server (LM Studio or Ollama) and select this model; use Fiqh-Embed as the embedder โ€” AnythingLLM supports LM Studio and Ollama embedders natively, so the whole stack stays local. Paste the system prompt below into the workspace's prompt setting.

Ollama

ollama pull sadiqoon/sadiq-cite

Or build it yourself from the GGUF in this repo: ollama create sadiq-cite -f Modelfile.

Ollama applies Qwen3 thinking-mode parsing by default, which routes the answer into the thinking field and leaves content empty. This model does not reason before answering, so turn it off in the request:

curl http://localhost:11434/api/chat -d '{
  "model": "sadiqoon/sadiq-cite",
  "think": false,
  "stream": false,
  "messages": [{"role": "user", "content": "..."}]
}'

With "think": false the citation block arrives in content as expected.

n8n and custom pipelines

Retrieve with Fiqh-Embed, re-rank with Fiqh-Rerank, then call this model. sadiq_fiqh.format_prompt() builds the message in the shape the model expects; verify() gates the result.

System prompt

ุฃู†ุช ยซุตุงุฏู‚ยปุŒ ู…ุณุงุนุฏ ุจุญุซ ููŠ ูู‚ู‡ ุฃู‡ู„ ุงู„ุจูŠุช (ุนู„ูŠู‡ู… ุงู„ุณู„ุงู…). ู…ู‡ู…ุชูƒ ุฃู† ุชุนุซุฑ ููŠ ุงู„ู…ู‚ุงุทุน ุงู„ู…ุฑูู‚ุฉ ุนู„ู‰ ุงู„ู†ุตูˆุต ุงู„ุดุฑุนูŠุฉ ุงู„ุชูŠ ุชุฎุตู‘ ุณุคุงู„ ุงู„ุณุงุฆู„ ูˆุชู†ู‚ู„ู‡ุง ุญุฑููŠู‹ู‘ุง ุจูŠู† ุนู„ุงู…ุชูŠ ยซยป ู…ุฑู‚ู‘ู…ุฉู‹ุŒ ุซู… ุชุณุฑุฏ ู…ุตุงุฏุฑู‡ุง ุจุงู„ูƒุชุงุจ ูˆุฑู‚ู… ุงู„ุตูุญุฉ. ู„ุง ุชูุชู ูˆู„ุง ุชุณุชู†ุจุท ูˆู„ุง ุชุทุจู‘ู‚ ุงู„ุญูƒู… ุนู„ู‰ ุญุงู„ุฉ ุงู„ุณุงุฆู„. ุฅู† ู„ู… ุชุฌุฏ ููŠ ุงู„ู…ู‚ุงุทุน ู…ุง ูŠุฎุตู‘ ุงู„ุณุคุงู„ ูู‚ู„ ุฐู„ูƒ ุตุฑุงุญุฉู‹ุŒ ูˆุฅู† ูƒุงู† ุงู„ุณุคุงู„ ู†ุงู‚ุตู‹ุง ูุงุทู„ุจ ุงู„ุชูˆุถูŠุญ.

Expected input shape

ุงู„ุณุคุงู„:
<the question>

ุงู„ู…ู‚ุงุทุน ุงู„ู…ุณุชุฑุฌุนุฉ:
[1] (<book>ุŒ ุต <page>)
<passage text>

[2] (<book>ุŒ ุต <page>)
<passage text>

Greedy decoding (temperature=0) is recommended.

The rest of the stack

Fiqh-Embed ยท Fiqh-Rerank ยท Fiqh-Classifier ยท Fiqh-Glossary Linker

Citation

@misc{sadiqoon2026sadiqcite,
  title  = {Sadiq-Cite: Retrieval-Grounded Quotation and Citation for Imami Jurisprudence},
  author = {Sadiqoon Technologies},
  year   = {2026},
  url    = {https://huggingface.co/sadiqoon/sadiq-cite-8b}
}

License & Contact

MIT (the base model is Qwen3-8B, Apache 2.0). Built and maintained by Sadiqoon Technologies Ltd, London. Questions and collaboration: info@sadiqoon.uk

Downloads last month
76
GGUF
Model size
8B params
Architecture
qwen3
Hardware compatibility
Log In to add your hardware

4-bit

5-bit

8-bit

16-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for sadiqoon/sadiq-cite-8b-GGUF

Finetuned
Qwen/Qwen3-8B
Quantized
(1)
this model