- CLAUDE.md: Comprehensive documentation for Lehrer KI platform - docs-src: Klausur, Voice, Agent-Core, KI-Pipeline docs - mkdocs.yml: Lehrer-specific nav with blue theme - docker-compose: Added docs service (port 8010, profile: docs) - .claude/rules: testing, docs, open-source, abiturkorrektur, vocab-worksheet, multi-agent, experimental-dashboard Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
216 lines
6.0 KiB
Markdown
216 lines
6.0 KiB
Markdown
# KI-Daten-Pipeline
|
|
|
|
Die KI-Daten-Pipeline ist ein zusammenhaengendes System aus drei Modulen, das den Datenfluss von der Erfassung bis zur semantischen Suche abbildet.
|
|
|
|
## Uebersicht
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
subgraph OCR["OCR-Labeling"]
|
|
A[Klausur-Scans] --> B[OCR Erkennung]
|
|
B --> C[Ground Truth Labels]
|
|
end
|
|
|
|
subgraph RAG["RAG Pipeline"]
|
|
D[PDF Dokumente] --> E[Text-Extraktion]
|
|
E --> F[Chunking]
|
|
F --> G[Embedding]
|
|
end
|
|
|
|
subgraph SEARCH["Daten & RAG"]
|
|
H[Qdrant Collections]
|
|
I[Semantische Suche]
|
|
end
|
|
|
|
C -->|Export| D
|
|
G -->|Indexierung| H
|
|
H --> I
|
|
I -->|Ergebnisse| J[Klausur-Korrektur]
|
|
```
|
|
|
|
## Module
|
|
|
|
| Modul | Pfad | Funktion | Backend |
|
|
|-------|------|----------|---------|
|
|
| **OCR-Labeling** | `/ai/ocr-labeling` | Ground Truth fuer Handschrift-OCR | klausur-service:8086 |
|
|
| **RAG Pipeline** | `/ai/rag-pipeline` | Dokument-Indexierung | klausur-service:8086 |
|
|
| **Daten & RAG** | `/ai/rag` | Vektor-Suche & Collection-Mapping | klausur-service:8086 |
|
|
|
|
## Datenfluss
|
|
|
|
### 1. OCR-Labeling (Eingabe)
|
|
|
|
Das OCR-Labeling-Modul erfasst Ground Truth Daten fuer das Training von Handschrift-Erkennungsmodellen:
|
|
|
|
- **Upload**: Klausur-Scans (PDF/Bilder) werden hochgeladen
|
|
- **OCR-Verarbeitung**: Mehrere OCR-Modelle erkennen den Text
|
|
- `llama3.2-vision:11b` - Vision LLM (beste Qualitaet)
|
|
- `trocr` - Microsoft Transformer (schnell)
|
|
- `paddleocr` - PaddleOCR + LLM (4x schneller)
|
|
- `donut` - Document Understanding (strukturiert)
|
|
- **Labeling**: Manuelles Pruefen und Korrigieren der OCR-Ergebnisse
|
|
- **Export**: Gelabelte Daten koennen exportiert werden fuer:
|
|
- TrOCR Fine-Tuning
|
|
- Llama Vision Fine-Tuning
|
|
- Generic JSON
|
|
|
|
### 2. RAG Pipeline (Verarbeitung)
|
|
|
|
Die RAG Pipeline verarbeitet Dokumente und macht sie suchbar:
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
A[Datenquellen] --> B[OCR/Text-Extraktion]
|
|
B --> C[Chunking]
|
|
C --> D[Embedding]
|
|
D --> E[Qdrant Indexierung]
|
|
|
|
subgraph sources["Datenquellen"]
|
|
S1[NiBiS PDFs]
|
|
S2[Eigene EH]
|
|
S3[Rechtskorpus]
|
|
S4[Schulordnungen]
|
|
end
|
|
```
|
|
|
|
**Verarbeitungsschritte:**
|
|
|
|
1. **Dokumentenextraktion**: PDFs und Bilder werden per OCR in Text umgewandelt
|
|
2. **Chunking**: Lange Texte werden in Abschnitte aufgeteilt
|
|
- Chunk-Groesse: 1000 Zeichen
|
|
- Ueberlappung: 200 Zeichen
|
|
3. **Embedding**: Jeder Chunk wird in einen Vektor umgewandelt
|
|
- Modell: `text-embedding-3-small`
|
|
- Dimensionen: 1536
|
|
4. **Indexierung**: Vektoren werden in Qdrant gespeichert
|
|
|
|
### 3. Daten & RAG (Ausgabe)
|
|
|
|
Das Daten & RAG Modul ermoeglicht die Verwaltung und Suche:
|
|
|
|
- **Collection-Uebersicht**: Status aller Qdrant Collections
|
|
- **Semantische Suche**: Fragen werden in Vektoren umgewandelt und aehnliche Dokumente gefunden
|
|
- **Regulierungs-Mapping**: Zeigt welche Regulierungen indexiert sind
|
|
|
|
## Qdrant Collections
|
|
|
|
| Collection | Inhalt | Status |
|
|
|------------|--------|--------|
|
|
| `bp_nibis_eh` | Offizielle NiBiS Erwartungshorizonte | Aktiv |
|
|
| `bp_eh` | Benutzerdefinierte Erwartungshorizonte | Aktiv |
|
|
| `bp_schulordnungen` | Schulordnungen aller Bundeslaender | In Arbeit |
|
|
| `bp_legal_corpus` | Rechtskorpus (DSGVO, AI Act, BSI, etc.) | Aktiv |
|
|
|
|
## Technische Architektur
|
|
|
|
### Services
|
|
|
|
```mermaid
|
|
graph TB
|
|
subgraph Frontend["Admin-v2 (Next.js)"]
|
|
F1["/ai/ocr-labeling"]
|
|
F2["/ai/rag-pipeline"]
|
|
F3["/ai/rag"]
|
|
end
|
|
|
|
subgraph Backend["klausur-service (Python)"]
|
|
B1[OCR Endpoints]
|
|
B2[Indexierungs-Jobs]
|
|
B3[Such-API]
|
|
end
|
|
|
|
subgraph Storage["Datenbanken"]
|
|
D1[(PostgreSQL)]
|
|
D2[(Qdrant)]
|
|
D3[(MinIO)]
|
|
end
|
|
|
|
F1 --> B1
|
|
F2 --> B2
|
|
F3 --> B3
|
|
|
|
B1 --> D1
|
|
B1 --> D3
|
|
B2 --> D2
|
|
B3 --> D2
|
|
```
|
|
|
|
### Backend-Endpunkte
|
|
|
|
#### OCR-Labeling (`/api/v1/ocr-label/`)
|
|
|
|
| Endpoint | Methode | Beschreibung |
|
|
|----------|---------|--------------|
|
|
| `/sessions` | GET/POST | Session-Verwaltung |
|
|
| `/sessions/{id}/upload` | POST | Bilder hochladen |
|
|
| `/queue` | GET | Labeling-Queue |
|
|
| `/confirm` | POST | OCR bestaetigen |
|
|
| `/correct` | POST | OCR korrigieren |
|
|
| `/skip` | POST | Item ueberspringen |
|
|
| `/stats` | GET | Statistiken |
|
|
| `/export` | POST | Trainingsdaten exportieren |
|
|
|
|
#### RAG Pipeline (`/api/ai/rag-pipeline`)
|
|
|
|
| Action | Beschreibung |
|
|
|--------|--------------|
|
|
| `jobs` | Indexierungs-Jobs auflisten |
|
|
| `dataset-stats` | Datensatz-Statistiken |
|
|
| `create-job` | Neue Indexierung starten |
|
|
| `pause` | Job pausieren |
|
|
| `resume` | Job fortsetzen |
|
|
| `cancel` | Job abbrechen |
|
|
|
|
#### Legal Corpus (`/api/legal-corpus/`)
|
|
|
|
| Endpoint | Beschreibung |
|
|
|----------|--------------|
|
|
| `/status` | Collection-Status |
|
|
| `/search` | Semantische Suche |
|
|
| `/ingest` | Dokumente indexieren |
|
|
|
|
## Integration mit Klausur-Korrektur
|
|
|
|
Die KI-Daten-Pipeline liefert Erwartungshorizont-Vorschlaege fuer die Klausur-Korrektur:
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant L as Lehrer
|
|
participant K as Klausur-Korrektur
|
|
participant R as RAG-Suche
|
|
participant Q as Qdrant
|
|
|
|
L->>K: Schueler-Antwort pruefen
|
|
K->>R: EH-Vorschlaege laden
|
|
R->>Q: Semantische Suche
|
|
Q->>R: Top-k Chunks
|
|
R->>K: Relevante EH-Passagen
|
|
K->>L: Bewertungsvorschlaege
|
|
```
|
|
|
|
## Deployment
|
|
|
|
Die Module werden als Teil des admin-v2 Containers deployed:
|
|
|
|
```bash
|
|
# 1. Sync
|
|
rsync -avz --delete --exclude 'node_modules' --exclude '.next' --exclude '.git' \
|
|
/Users/benjaminadmin/Projekte/breakpilot-pwa/admin-v2/ \
|
|
macmini:/Users/benjaminadmin/Projekte/breakpilot-pwa/admin-v2/
|
|
|
|
# 2. Build & Deploy
|
|
ssh macmini "/usr/local/bin/docker compose \
|
|
-f /Users/benjaminadmin/Projekte/breakpilot-pwa/docker-compose.yml \
|
|
build --no-cache admin-v2 && \
|
|
/usr/local/bin/docker compose \
|
|
-f /Users/benjaminadmin/Projekte/breakpilot-pwa/docker-compose.yml \
|
|
up -d admin-v2"
|
|
```
|
|
|
|
## Verwandte Dokumentation
|
|
|
|
- [OCR Labeling Spezifikation](../klausur-service/OCR-Labeling-Spec.md)
|
|
- [RAG Admin Spezifikation](../klausur-service/RAG-Admin-Spec.md)
|
|
- [NiBiS Ingestion Pipeline](../klausur-service/NiBiS-Ingestion-Pipeline.md)
|
|
- [Multi-Agent Architektur](../../architecture/multi-agent.md)
|