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>
47 lines
1.3 KiB
Markdown
47 lines
1.3 KiB
Markdown
# 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
|