# Retrieval-Augmented Finetuning (RAFT)

## Voraussetzungen

- Generelles Preprocessing (Voraussetzung für BERTopic)
- BERTopic
  - Klassifikation muss durchgeführt sein, `data/intermediate/culture_reviews.csv` muss existieren

## Vorbereiten des Retrieval-Corpus

```bash
python prepare_corpus.py --input_csv ../data/intermediate/culture_reviews.csv --out_dir out
```

## Erstellen des RAFT-Datensatzes

```bash
python make_raft_data.py --out_dir out --n_examples 10
```

## Training der QLoRA-Adapter

```bash
python train_mistral_raft.py --train_jsonl out/raft_train.jsonl --out_dir out/mistral_balitwin_lora
```

## Inferenz

### Pre-Merged Modell + Adapter

```bash
python rag_chat_merged.py --model_dir /path/to/model_folder --out_dir out
```

### Per Baseline Mistral 7B + PEFT-Adapter

Hinweis: das Skript wurde nach wenigen oberflächlichen Evaluationsrunden nicht weiter verwendet, da der beste Kandidat durch einen Merge des Basismodells und seiner PEFT-Adapter beschleunigt werden konnte und dieses Skript nicht länger relevant war.

```bash
python deprecated_rag_chat.py --lora_dir out/mistral_balitwin_lora
```
