Dieses Projekt implementiert ein leichtgewichtiges, lokal ausführbares Frage-Antwort-Retrieval-System basierend auf all-MiniLM-L6-v2
(Sentence-BERT). Es ermöglicht sowohl Kommandozeilen- als auch GUI-basierte Abfragen ohne GPU-Anforderungen.
- Python ≥ 3.8
- Keine GPU erforderlich
- Betriebssystem: Windows, Linux oder macOS
project/
├── data/
│ ├── qa_pairs.jsonl # Liste von Frage-Antwort-Paaren im JSONL-Format
│ └── fragen.txt # Optional: vordefinierte Fragen für GUI-Dropdown
├── model/ # Trainiertes Sentence-BERT-Modell
├── resources/
│ └── fs.ico # Icon für GUI
├── train.py # Trainingsskript für Sentence-BERT
├── inference.py # Konsolenbasiertes Retrieval
├── inference_gui.py # GUI-basierte Anwendung
├── requirements.txt # Abhängigkeiten
└── README.md # Diese Anleitung
sentence-transformers==2.5.1
datasets==2.18.0
torch>=1.13.0
scikit-learn>=1.1.3
tk
-
Erstelle eine virtuelle Umgebung:
python -m venv .venv
-
Aktiviere die Umgebung (unter Windows PowerShell):
.venv\Scripts\Activate.ps1
-
Installiere die Abhängigkeiten:
pip install -r requirements.txt
Die Datei data/qa_pairs.jsonl
enthält ein JSONL-Format mit je einem QA-Paar pro Zeile:
{"question": "Was ist Python?", "answer": "Python ist ..."}
Ergänzungen: Weitere QA-Paare können jederzeit hinzugefügt werden – Format beibehalten.
Starte den Trainingsprozess auf Basis der Datei data/qa_pairs.jsonl
:
python train.py
Das trainierte Modell wird im Verzeichnis model/
abgelegt.
Nach dem Training kann das Modell über die Konsole abgefragt werden:
python inference.py
python inference_gui.py
- Auswahl vordefinierter Fragen aus
data/fragen.txt
- Automatisches Retrieval der semantisch ähnlichsten Antwort
- Bewertungsoptionen: ✅ / ❌
- Anzeige von Statistik (Zähler richtig/falsch)
- Beenden-Schaltfläche zum Schließen der Anwendung
Beispielhafte Inhalte:
Frage: Was ist Python?
Antwort: Python ist eine universell einsetzbare, interpretierte Programmiersprache mit Fokus auf Lesbarkeit und einfacher Syntax.
Frage: Was ist Duck-Typing?
Antwort: Ein dynamisches Typisierungskonzept, bei dem die Eigenschaften eines Objektes entscheiden, nicht seine Klasse.
Frage: Was bedeutet batteries included?
Antwort: Es bedeutet, dass Python eine umfangreiche Standardbibliothek mitbringt.
Die GUI nutzt dieses Format zur Vorauswahl und Visualisierung.
Um das Modell zu verbessern oder neue Themenbereiche abzudecken:
- Ergänze
data/qa_pairs.jsonl
um neue Einträge - Führe anschließend
train.py
erneut aus, um das Modell zu aktualisieren
Auf Wunsch kann das Dataset automatisiert mit weiteren Beispielen generiert werden – themenspezifisch und strukturiert.
Dieses Projekt ist ein Demonstrator für lokale QA-Systeme auf Basis semantischer Ähnlichkeit und ist unter der MIT-Lizenz veröffentlicht. Es basiert auf öffentlich zugänglichen Modellen der sentence-transformers
-Bibliothek. Es ist zu Lernzwecken erstellt. Inhalte und Code dürfen frei verwendet und angepasst werden.
Für Rückfragen oder Support: