https://github.com/codewiththomas/researchrag
Ein modulares RAG-System mit autoamtischer Evaluationsfunktion zum Testen verschiedener RAG-Konfigurationen.
https://github.com/codewiththomas/researchrag
Last synced: about 1 month ago
JSON representation
Ein modulares RAG-System mit autoamtischer Evaluationsfunktion zum Testen verschiedener RAG-Konfigurationen.
- Host: GitHub
- URL: https://github.com/codewiththomas/researchrag
- Owner: codewiththomas
- Created: 2025-03-23T10:05:43.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-08-29T08:08:20.000Z (7 months ago)
- Last Synced: 2025-09-17T09:56:16.405Z (7 months ago)
- Language: Python
- Homepage:
- Size: 106 MB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.MD
Awesome Lists containing this project
README
# Research RAG
Ein modulates RAG-System, welches eine systematische Evaluation ermöglicht.
## Nutzung
1. Clone
2. Branch
3. Virtual Environment erstellen (.venv)
```bash
py -3.12 -m venv .venv
```
4. Virtual Environment aktivieren
```bash
./.venv/bin/activate
```
4. Requirements installieren
```bash
pip install -r requirements.txt
```
5. `.env` erstellen (an `.env.example`orientieren; OPENAI_API_KEY setzen)
6. Ausführen
```bash
python src/rag/main.py --config configs/000_baseline.yaml --dataset data/output/dsgvo_crawled_2025-08-20_1824.jsonl --num-qa 5
```
---
## Module
### Indexer
### Sprachmodell
Research-RAG ermöglicht die Einbindung verschiedener Sprachmodelle.
```bash
ollama pull mixtral:8x7b
ollama pull mixtral:8x22b
```
## Evaluation
### Ziel: zweistufige Evaluation des RAG-Systems.
1. Retrieval-Ebene (IR-Metriken): Grid-Search über Chunking/Parameter
2. Antwort-Ebene (RAGAS + DSGVO-Score): Vergleich von SLMs
### Voraussetzungen (Baseline)
In configs/000_baseline.yaml festlegen:
- dataset.path und dataset.evaluation_subset_size (für Smoke-Tests z. B. 1)
- embedding.model_name und embedding.abbr (für Dateinamen)
- LLM-Defaults (z. B. llm.model, llm.temperature, llm.max_tokens)
- Kontextgrenze: pipeline.max_context_length (= max_content_size)
### Retrieval-Grid (IR-Metriken)
Variierte Parameter:
- chunking.type
- chunking.chunk_size
- retrieval.top_k
- retrieval.similarity_threshold
- dataset.grouping.enabled.
Ergebnisse (Detail + Summary, mit Zeitstempel) landen in results/runs/.
```bash
# Beispiel: alle Retrieval-Kombinationen ausführen
python src/rag/retrieval_grid_search.py
```
Hinweis: Das Skript liest die Baseline, überschreibt nur die o. g. Retrieval-Parameter und speichert pro Run JSON-Dateien (Zeitstempel kommt vom Evaluator).
LLM-Grid (Antwort-Ebene)