Skip to content

franzsteinkress/MiniLM-AnswerMatcher

Repository files navigation

MiniLM-AnswerMatcher (lokales Frage-Antwort-Retrieval mit Sentence-BERT)

Python VS Code License

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.

MiniLM-AnswerMatcher

Systemvoraussetzungen

  • Python ≥ 3.8
  • Keine GPU erforderlich
  • Betriebssystem: Windows, Linux oder macOS

Projektübersicht

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

Abhängigkeiten (requirements.txt)

sentence-transformers==2.5.1
datasets==2.18.0
torch>=1.13.0
scikit-learn>=1.1.3
tk

Installation

  1. Erstelle eine virtuelle Umgebung:

    python -m venv .venv
  2. Aktiviere die Umgebung (unter Windows PowerShell):

    .venv\Scripts\Activate.ps1
  3. Installiere die Abhängigkeiten:

    pip install -r requirements.txt

Trainingsdaten

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.

Modelltraining

Starte den Trainingsprozess auf Basis der Datei data/qa_pairs.jsonl:

python train.py

Das trainierte Modell wird im Verzeichnis model/ abgelegt.

Nutzung des Modells

1. Konsolenbasierte Abfrage:

Nach dem Training kann das Modell über die Konsole abgefragt werden:

python inference.py

2. Start der grafischen Oberfläche (GUI):

python inference_gui.py

GUI-Funktionalität:

  • 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

Format von data/fragen.txt (für die GUI)

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.

Erweiterung des QA-Korpus

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.

Lizenz & Hinweise

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.

Kontakt / Support

Für Rückfragen oder Support:

About

Ein lokales Frage-Antwort-Retrieval mit Sentence-BERT

htps://steinkress.com

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages