Initial commit fuer den RAG-Ingestor-Microservice. Enthaelt die urspruengliche REQUIREMENTS.md und die ausgearbeitete Design-Spec nach Brainstorming-Session. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1.3 KiB
1.3 KiB
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
- Datei per WebDAV herunterladen
- Text extrahieren je nach Typ (PDF, MD, DOCX, XLSX nur Metadaten)
- Text in Chunks aufteilen (~500 Wörter, ~50 Wörter Overlap)
- Chunks via Ollama embedden (
qwen3-embedding:0.6b) - 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-docxfür Extraktionqdrant-client,ollamaPython Libraries