# RAG Ingestor – Requirements ## Zweck Microservice der neue/geänderte Dateien aus Nextcloud automatisch in Qdrant einliest. ## Trigger - Nextcloud Webhook (NodeCreatedEvent / NodeUpdatedEvent) - Manueller HTTP-Aufruf für Bulk-Import ## Input Nextcloud Webhook Payload mit: - Dateipfad - Dateiname - Event-Typ (erstellt / geändert / gelöscht) ## Verarbeitung 1. Datei per WebDAV herunterladen 2. Text extrahieren je nach Typ (PDF, MD, DOCX, XLSX nur Metadaten) 3. Text in Chunks aufteilen (~500 Wörter, ~50 Wörter Overlap) 4. Chunks via Ollama embedden (`qwen3-embedding:0.6b`) 5. Vektoren + Metadaten in Qdrant speichern ## Metadaten je Chunk - Dateiname + Pfad - Dateityp - Semester / Fach (aus Ordnerstruktur ableiten) - Seite (bei PDF) - Chunk-Index - Timestamp ## Update-Verhalten - Bei geänderter Datei: alte Chunks löschen, neu einlesen - Bei gelöschter Datei: alle zugehörigen Chunks aus Qdrant entfernen ## Sicherheit - Shared Secret im Webhook Header zur Authentifizierung ## Netzwerk - Läuft im Coolify-internen Netzwerk - Kein öffentlicher Endpunkt nötig (Nextcloud im selben Netzwerk) - Qdrant und Ollama nur intern erreichbar ## Tech Stack - Python + FastAPI - `pymupdf`, `python-docx` für Extraktion - `qdrant-client`, `ollama` Python Libraries