docs: initial requirements und design spec

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>
This commit is contained in:
2026-05-04 21:29:13 +02:00
commit 5554f25738
2 changed files with 277 additions and 0 deletions

46
REQUIREMENTS.md Normal file
View File

@@ -0,0 +1,46 @@
# 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