Model Details
Table with columns: Property, Value| Property | Value |
|---|
| Model family | TSFT-RAG |
| Base model | Qwen/Qwen2.5-7B-Instruct |
| Architecture | Qwen2ForCausalLM |
| Parameters | approximately 7B |
| Training method | full-parameter supervised fine-tuning |
| Primary language of the training corpus | German |
| Context length supported by the configuration | 32,768 tokens |
| Training sequence length | 1,024 tokens |
| Weight dtype | bfloat16 |
| Framework | Transformers |
| License | Apache-2.0 |
Intended Use
This model is intended for research and experimental use in RAG-oriented workflows.
Suitable use cases include:
- context-grounded question answering;
- evaluation of abstention behaviour;
- generation of structured RAG responses;
- source-aware answer generation;
- comparison of base and fully fine-tuned language models;
- local or server-based RAG experiments.
The model should be used with retrieved evidence or other explicitly supplied context.
It is not intended to serve as a standalone factual knowledge source.
Training Data
The model was trained on a fixed, task-specific German-language corpus designed for
RAG-oriented instruction following.
The training examples cover:
- answerable context-grounded questions;
- hard-negative and unanswerable questions;
- multiple assistant roles and response styles;
- analysis tasks for main topic, key message, and main arguments;
- JSON and short-answer output formats;
- citation-aware responses.
The complete raw training corpus is not distributed with this checkpoint. The
accompanying repository documents the data-processing, training, and evaluation
pipeline.
Training Procedure
This checkpoint was produced using full-parameter supervised fine-tuning rather than
LoRA, QLoRA, or another adapter-based method.
Table with columns: Training argument, Value| Training argument | Value |
|---|
| Epochs | 3 |
| Learning rate | 1e-6 |
| Per-device train batch size | 4 |
| Per-device evaluation batch size | 4 |
| Gradient accumulation steps | 4 |
| Effective batch size per process | 16 |
| Optimizer | AdamW (PyTorch) |
| Scheduler | cosine |
| Warmup ratio | 0.08 |
The recorded training runtime was approximately 5,656 seconds
(about 1 h 34 min), with a final reported training loss of
0.8019.
Evaluation
The fine-tuned model and the unchanged base model were evaluated on the same held-out
test set of 1,940 instances.
Table with columns: Metric, Base model, TSFT-RAG, Difference| Metric | Base model | TSFT-RAG | Difference |
|---|
| Aggregate score | 0.4016 | 0.5617 | +0.1601 |
| Hard-negative handling | 0.0791 | 0.5523 | +0.4732 |
| Grounded QA | 0.5505 | 0.5256 | -0.0249 |
| Analysis: main topic | 0.6158 | 0.6241 | +0.0083 |
The largest improvement is in hard-negative handling. The unchanged base model
correctly rejected 56 of 708 hard-negative cases, while the fine-tuned model
correctly rejected 391 of 708.
The aggregate score, hard-negative handling, JSON validity, citation precision, and
citation recall improve substantially. Grounded QA, key-message analysis, and
main-argument analysis show modest declines, while main-topic analysis improves
slightly.
These results should be interpreted as task-specific benchmark outcomes rather than
general-purpose capability claims.
Further evaluation details, scripts, and analysis are available in the accompanying
repository and paper.
Usage
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "sascha-frank-ai-research/tsft-rag-qwen2.5-7b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
messages = [
{
"role": "system",
"content": (
"Du bist ein sachlicher RAG-Assistent. "
"Beantworte die Frage präzise nur auf Grundlage des Kontexts. "
"Wenn der Kontext die Antwort nicht belegt, sage dies ausdrücklich."
),
},
{
"role": "user",
"content": (
"Kontext:\n"
"Ein Retrieval-Modul liefert relevante Dokumentpassagen an das Sprachmodell.\n\n"
"Frage:\n"
"Welche Komponente stellt dem Sprachmodell die Dokumentpassagen bereit?"
),
},
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
with torch.inference_mode():
output = model.generate(
**inputs,
max_new_tokens=256,
do_sample=False,
)
generated_tokens = output[0, inputs["input_ids"].shape[1]:]
print(
tokenizer.decode(
generated_tokens,
skip_special_tokens=True,
)
)
Prompting Notes
The model was trained with Qwen's chat template and should be used through
tokenizer.apply_chat_template(...).
For RAG use, prompts should clearly separate:
- the behavioural instruction;
- the retrieved context;
- the user question;
- any required output format.
For deterministic evaluation, use greedy decoding or another fixed decoding setup.
Limitations
- The model may produce incorrect, incomplete, or unsupported answers.
- Fine-tuning does not guarantee faithful use of retrieved evidence.
- Retrieval quality remains a major determinant of answer quality.
- The model may fail to abstain even when evidence is insufficient.
- Citation-like output does not guarantee that a cited passage truly supports a claim.
- Performance outside the evaluated RAG task formats has not been systematically established.
- The training corpus is primarily German, so behaviour may differ in other languages.
- The model inherits limitations and biases from the Qwen2.5 base model and from the
task-specific training data.
- The observed metric trade-offs should be considered when selecting the model for deployment.
The model should not be used for high-stakes medical, legal, financial, safety-critical,
or administrative decisions without independent validation and human oversight.
Ethical Considerations
Retrieved documents may contain inaccurate, biased, confidential, or outdated
information. Such content can be reproduced or amplified by the model.
Users are responsible for:
- validating retrieval sources;
- protecting confidential material;
- testing model behaviour in the intended domain;
- monitoring unsupported or misleading output;
- complying with applicable law, policy, and licensing requirements.
Relationship to the Research Project
This checkpoint is one model from a controlled cross-family study of task-specific
full fine-tuning for RAG. The study compares base and fine-tuned configurations from
the Gemma, Llama, and Qwen model families across parameter scales from approximately
0.5B to 14B.
Code, training scripts, evaluation scripts, and documentation:
https://github.com/frankmst/rag-task-specific-full-finetuning
Base Model and License
This model is derived from
Qwen/Qwen2.5-7B-Instruct,
which is distributed under the Apache License 2.0.
This derivative checkpoint is also released under the Apache License 2.0. Users
should review the license file included in this repository and the licensing
information of the base model.
Citation
A formal paper citation will be added after publication of the accompanying paper.
Until then, please cite the software repository:
@software{frank_tsft_rag_2026,
author = {Sascha Frank},
title = {Task-Specific Full Fine-Tuning for Retrieval-Augmented Generation},
year = {2026},
url = {https://github.com/frankmst/rag-task-specific-full-finetuning}
}
Project
The complete TSFT-RAG research project, including training scripts,
evaluation pipeline, benchmark methodology and documentation, is available at:
Project repository
https://github.com/frankmst/rag-task-specific-full-finetuning
TSFT-RAG model family
https://huggingface.co/sascha-frank-ai-research
Author
Sascha Frank
Independent AI Researcher
ORCID
https://orcid.org/0000-0002-0588-0081
GitHub
https://github.com/frankmst
Hugging Face
https://huggingface.co/sascha-frank-ai-research
Links