342 lines
11 KiB
Markdown
342 lines
11 KiB
Markdown
|
|
---
|
||
|
|
license: apache-2.0
|
||
|
|
library_name: transformers
|
||
|
|
pipeline_tag: text-generation
|
||
|
|
base_model: Qwen/Qwen2.5-1.5B-Instruct
|
||
|
|
base_model_relation: finetune
|
||
|
|
language:
|
||
|
|
- de
|
||
|
|
- en
|
||
|
|
tags:
|
||
|
|
- rag
|
||
|
|
- retrieval-augmented-generation
|
||
|
|
- task-specific-fine-tuning
|
||
|
|
- full-fine-tuning
|
||
|
|
- qwen2.5
|
||
|
|
- text-generation
|
||
|
|
- structured-output
|
||
|
|
- abstention
|
||
|
|
- research
|
||
|
|
- tsft-rag
|
||
|
|
- model-card-v1
|
||
|
|
---
|
||
|
|
|
||
|
|
# TSFT-RAG Qwen2.5-1.5B-Instruct
|
||
|
|
|
||
|
|
**Task-Specific Full Fine-Tuning for Retrieval-Augmented Generation**
|
||
|
|
|
||
|
|
TSFT-RAG Qwen2.5-1.5B-Instruct is a full-parameter fine-tuned derivative of
|
||
|
|
[Qwen/Qwen2.5-1.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct).
|
||
|
|
|
||
|
|
Part of the [TSFT-RAG model family](https://huggingface.co/sascha-frank-ai-research) for Retrieval-Augmented Generation across Gemma, Qwen and Llama architectures.
|
||
|
|
|
||
|
|
The objective is to investigate how supervised full fine-tuning changes the behaviour of modern language models when used as Retrieval-Augmented Generation (RAG) systems.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
# TSFT-RAG Model Series
|
||
|
|
|
||
|
|
| Model | Parameters | Status |
|
||
|
|
|--------|-----------:|--------|
|
||
|
|
| [Qwen2.5-0.5B-Instruct](https://huggingface.co/sascha-frank-ai-research/tsft-rag-qwen2.5-0.5b-instruct) | 0.5B | Released |
|
||
|
|
| **Qwen2.5-1.5B-Instruct** | **1.5B** | **Released** |
|
||
|
|
| [Qwen2.5-7B-Instruct](https://huggingface.co/sascha-frank-ai-research/tsft-rag-qwen2.5-7b-instruct) | 7B | Released |
|
||
|
|
| [Qwen2.5-14B-Instruct](https://huggingface.co/sascha-frank-ai-research/tsft-rag-qwen2.5-14b-instruct) | 14B | Released |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
The model was trained to improve several behaviours that are important in practical
|
||
|
|
RAG systems:
|
||
|
|
|
||
|
|
- answering from supplied context;
|
||
|
|
- abstaining when the context does not support an answer;
|
||
|
|
- following task-specific output requirements;
|
||
|
|
- producing structured JSON output;
|
||
|
|
- generating source-aware and citation-oriented responses.
|
||
|
|
|
||
|
|
The main observed gains are in hard-negative handling, structured-output validity,
|
||
|
|
and citation-related behaviour. Performance does not improve uniformly across all
|
||
|
|
metrics; in particular, the measured grounded-QA score is lower than that of the
|
||
|
|
unchanged base model in the reported evaluation.
|
||
|
|
|
||
|
|
## Model Details
|
||
|
|
|
||
|
|
| Property | Value |
|
||
|
|
|---|---|
|
||
|
|
| Model family | TSFT-RAG |
|
||
|
|
| Base model | Qwen/Qwen2.5-1.5B-Instruct |
|
||
|
|
| Architecture | Qwen2ForCausalLM |
|
||
|
|
| Parameters | approximately 1.5B |
|
||
|
|
| Training method | full-parameter supervised fine-tuning |
|
||
|
|
| Primary language of the training corpus | German |
|
||
|
|
| Context length supported by the configuration | 32,768 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 small language models;
|
||
|
|
- local or resource-constrained 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.
|
||
|
|
|
||
|
|
| Training argument | Value |
|
||
|
|
|---|---:|
|
||
|
|
| Epochs | 3 |
|
||
|
|
| Learning rate | 1e-6 |
|
||
|
|
| Per-device train batch size | 1 |
|
||
|
|
| Per-device evaluation batch size | 1 |
|
||
|
|
| Gradient accumulation steps | 16 |
|
||
|
|
| Effective batch size per process | 16 |
|
||
|
|
| Optimizer | paged AdamW 8-bit |
|
||
|
|
| Scheduler | cosine |
|
||
|
|
| Warmup ratio | 0.08 |
|
||
|
|
| Weight decay | 0.01 |
|
||
|
|
| Maximum gradient norm | 1.0 |
|
||
|
|
| Precision | bfloat16 |
|
||
|
|
| FP16 | disabled |
|
||
|
|
| Packing | disabled |
|
||
|
|
| Seed | 42 |
|
||
|
|
|
||
|
|
The recorded training runtime was approximately **21,789 seconds** (about **6 h 3 min**),
|
||
|
|
with a final reported training loss of **1.0738**.
|
||
|
|
|
||
|
|
## Evaluation
|
||
|
|
|
||
|
|
The fine-tuned model and the unchanged base model were evaluated on the same held-out
|
||
|
|
test set of **1,940 instances**.
|
||
|
|
|
||
|
|
| Metric | Base model | TSFT-RAG | Difference |
|
||
|
|
|---|---:|---:|---:|
|
||
|
|
| Aggregate score | 0.3321 | 0.4308 | +0.0987 |
|
||
|
|
| Hard-negative handling | 0.0056 | 0.3418 | +0.3362 |
|
||
|
|
| Grounded QA | 0.5289 | 0.4803 | -0.0486 |
|
||
|
|
| Analysis: main topic | 0.5593 | 0.5518 | -0.0075 |
|
||
|
|
| Analysis: key message | 0.5210 | 0.4810 | -0.0400 |
|
||
|
|
| Analysis: main arguments | 0.4549 | 0.3998 | -0.0551 |
|
||
|
|
| JSON validity | 0.7477 | 0.8862 | +0.1386 |
|
||
|
|
| Citation precision | 0.0000 | 0.6502 | +0.6502 |
|
||
|
|
| Citation recall | 0.0000 | 0.6502 | +0.6502 |
|
||
|
|
|
||
|
|
The strongest change is in hard-negative handling: the unchanged base model correctly
|
||
|
|
rejected 4 of the 708 hard-negative cases under the benchmark criterion, while the
|
||
|
|
fine-tuned model correctly rejected 242. JSON validity and citation-related scores also
|
||
|
|
increased substantially.
|
||
|
|
|
||
|
|
These results should be interpreted as task-specific benchmark outcomes rather than
|
||
|
|
general-purpose capability claims. The model improves substantially in abstention, JSON
|
||
|
|
validity, and citation-related behaviour, while grounded-QA and the three analysis-task
|
||
|
|
scores decrease relative to the unchanged base model.
|
||
|
|
|
||
|
|
Further evaluation details, scripts, and analysis are available in the accompanying
|
||
|
|
repository and paper.
|
||
|
|
|
||
|
|
## Usage
|
||
|
|
|
||
|
|
```python
|
||
|
|
import torch
|
||
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer
|
||
|
|
|
||
|
|
model_id = "sascha-frank-ai-research/tsft-rag-qwen2.5-1.5b-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:
|
||
|
|
|
||
|
|
1. the behavioural instruction;
|
||
|
|
2. the retrieved context;
|
||
|
|
3. the user question;
|
||
|
|
4. 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.
|
||
|
|
- The 1.5B parameter scale still limits reasoning depth and general robustness.
|
||
|
|
- 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 reductions in grounded-QA and analysis-task scores indicate real
|
||
|
|
trade-offs and should not be ignored 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-1.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-1.5B-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:
|
||
|
|
|
||
|
|
```bibtex
|
||
|
|
@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
|
||
|
|
|
||
|
|
- Project repository: https://github.com/frankmst/rag-task-specific-full-finetuning
|
||
|
|
- Base model: https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct
|
||
|
|
- Project website: https://sascha-frank.com
|
||
|
|
- Paper: forthcoming
|