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:
46
REQUIREMENTS.md
Normal file
46
REQUIREMENTS.md
Normal 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
|
||||
Reference in New Issue
Block a user