# 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)