{
"event": "PreToolUse",
"tool_name": "mcp__mcp-docs__docs_update",
"tool_input": {
"id": 20,
"content": "<nav class=\"breadcrumb\">\n <a href=\"\/docs\">Dokumentation<\/a> » <a href=\"\/docs\/ki-system\">KI-System<\/a> » Pipeline\n<\/nav>\n\n<h1>Document Pipeline<\/h1>\n<p class=\"doc-meta\"><strong>Erstellt:<\/strong> 2025-12-20 | <strong>Aktualisiert:<\/strong> 2025-12-31<\/p>\n\n<p>Automatischer Import und Verarbeitung von Dokumenten aus Nextcloud.<\/p>\n\n<table>\n <tr><th>Quelle<\/th><td>\/var\/www\/nextcloud\/data\/root\/files\/Documents<\/td><\/tr>\n <tr><th>Formate<\/th><td>PDF, PPTX, DOCX, MD, TXT<\/td><\/tr>\n <tr><th>Trigger<\/th><td>Polling + Event-basiert<\/td><\/tr>\n <tr><th>Sprache<\/th><td>Python 3.13<\/td><\/tr>\n<\/table>\n\n<h2>Pipeline-Schritte<\/h2>\n<pre><code>1. DETECT → Neue\/geänderte Dateien erkennen\n2. EXTRACT → Text extrahieren (OCR, Vision)\n3. CHUNK → Semantisches Chunking\n4. ENRICH → Metadaten anreichern\n5. STORE → In MariaDB speichern\n6. EMBED → Vektoren erzeugen\n7. INDEX → In Qdrant speichern\n8. ANALYZE → Semantische Analyse<\/code><\/pre>\n\n<h2>Text-Extraktion<\/h2>\n<table>\n <tr><th>Format<\/th><th>Tool<\/th><th>Features<\/th><\/tr>\n <tr><td>PDF<\/td><td>PyMuPDF<\/td><td>OCR via Tesseract<\/td><\/tr>\n <tr><td>PPTX<\/td><td>python-pptx<\/td><td>Slides + Speaker Notes<\/td><\/tr>\n <tr><td>DOCX<\/td><td>python-docx<\/td><td>Text-Extraktion<\/td><\/tr>\n <tr><td>MD\/TXT<\/td><td>direkt<\/td><td>UTF-8<\/td><\/tr>\n<\/table>\n\n<h2>Bild-Handling<\/h2>\n<p>Bilder in Dokumenten werden via Vision-API beschrieben und als Text-Chunk gespeichert.<\/p>\n\n<h2>Chunking<\/h2>\n<table>\n <tr><th>Methode<\/th><td>Semantisch + Hierarchisch<\/td><\/tr>\n <tr><th>Größe<\/th><td>Intelligent (kontextabhängig)<\/td><\/tr>\n <tr><th>Overlap<\/th><td>~10%<\/td><\/tr>\n <tr><th>Hierarchie<\/th><td>Dokument → Kapitel → Abschnitt<\/td><\/tr>\n<\/table>\n\n<h2>Chunk-Metadaten<\/h2>\n<pre><code>{\n \"document_id\": 123,\n \"chunk_index\": 0,\n \"heading_path\": [\"Kapitel 1\", \"Abschnitt 1.2\"],\n \"source_folder\": \"\/Documents\/Therapie\",\n \"entities\": [\"Carl Rogers\"],\n \"taxonomy_terms\": [\"Methoden\"]\n}<\/code><\/pre>\n\n<h2>Queue-System<\/h2>\n<table>\n <tr><th>Queue<\/th><td>ki_content.pipeline_queue<\/td><\/tr>\n <tr><th>Runs<\/th><td>ki_content.pipeline_runs (Status, Logging)<\/td><\/tr>\n <tr><th>Retry<\/th><td>Max 3 Versuche, exponential backoff<\/td><\/tr>\n<\/table>\n\n<h2>Pipeline-Scripts<\/h2>\n<pre><code>\/var\/www\/scripts\/pipeline\/\n├── pipeline.py → Haupt-Orchestrierung\n├── detect.py → Datei-Monitoring\n├── extract.py → Text-Extraktion\n├── chunk.py → Semantisches Chunking\n├── embed.py → Embedding-Erzeugung\n├── analyze.py → Semantische Analyse\n├── generate_semantics.py → Semantik-Generierung (Entities, Relations)\n├── db.py → Datenbank-Operationen\n├── config.py → Konfiguration\n├── run.sh → Ausführungs-Wrapper\n│\n├── generate.py → Content-Generierung (RAG + Kritiker)\n├── web_generate.py → Web-API für Content-Generierung\n├── chat.py → RAG-Chat (interaktiv + CLI)\n├── web_chat.py → Web-API für RAG-Chat\n│\n└── venv\/ → Python Virtual Environment<\/code><\/pre>\n\n<h3>Script-Kategorien<\/h3>\n<table>\n <tr><th>Kategorie<\/th><th>Scripts<\/th><th>Docs<\/th><\/tr>\n <tr><td>Import-Pipeline<\/td><td>detect, extract, chunk, embed, analyze<\/td><td><a href=\"\/docs\/ki-system\/ki-embedding\">Embedding<\/a><\/td><\/tr>\n <tr><td>Semantik<\/td><td>generate_semantics.py<\/td><td><a href=\"\/docs\/ki-system\/ki-entitaeten\">Entitäten<\/a><\/td><\/tr>\n <tr><td>Content-Generierung<\/td><td>generate.py, web_generate.py<\/td><td><a href=\"\/docs\/content-studio\">Content-Studio<\/a><\/td><\/tr>\n <tr><td>RAG-Chat<\/td><td>chat.py, web_chat.py<\/td><td><a href=\"\/docs\/ki-system\/ki-chat\">RAG-Chat<\/a><\/td><\/tr>\n <tr><td>Infrastruktur<\/td><td>db.py, config.py, run.sh<\/td><td><a href=\"\/docs\/ki-system\/ki-datenbank\">Datenbank<\/a><\/td><\/tr>\n<\/table>\n\n<h2>Ausführung<\/h2>\n<pre><code>cd \/var\/www\/scripts\/pipeline\n\n# Neue Dokumente scannen\n.\/run.sh scan\n\n# Queue verarbeiten\n.\/run.sh process\n\n# Pending Embeddings\n.\/run.sh embed\n\n# Volle Pipeline\n.\/run.sh all\n\n# Einzelne Datei\n.\/run.sh file \/pfad\/zur\/datei.pdf\n\n# Status anzeigen\n.\/run.sh status<\/code><\/pre>"
}
}
{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"doc\": {\n \"id\": 20,\n \"parent_id\": 16,\n \"slug\": \"ki-pipeline\",\n \"path\": \"\/ki-system\/ki-pipeline\",\n \"title\": \"Pipeline\",\n \"description\": \"Automatischer Import und Verarbeitung von Dokumenten aus Nextcloud.\",\n \"content\": \"<nav class=\\\"breadcrumb\\\">\\n <a href=\\\"\/docs\\\">Dokumentation<\/a> » <a href=\\\"\/docs\/ki-system\\\">KI-System<\/a> » Pipeline\\n<\/nav>\\n\\n<h1>Document Pipeline<\/h1>\\n<p class=\\\"doc-meta\\\"><strong>Erstellt:<\/strong> 2025-12-20 | <strong>Aktualisiert:<\/strong> 2025-12-31<\/p>\\n\\n<p>Automatischer Import und Verarbeitung von Dokumenten aus Nextcloud.<\/p>\\n\\n<table>\\n <tr><th>Quelle<\/th><td>\/var\/www\/nextcloud\/data\/root\/files\/Documents<\/td><\/tr>\\n <tr><th>Formate<\/th><td>PDF, PPTX, DOCX, MD, TXT<\/td><\/tr>\\n <tr><th>Trigger<\/th><td>Polling + Event-basiert<\/td><\/tr>\\n <tr><th>Sprache<\/th><td>Python 3.13<\/td><\/tr>\\n<\/table>\\n\\n<h2>Pipeline-Schritte<\/h2>\\n<pre><code>1. DETECT → Neue\/geänderte Dateien erkennen\\n2. EXTRACT → Text extrahieren (OCR, Vision)\\n3. CHUNK → Semantisches Chunking\\n4. ENRICH → Metadaten anreichern\\n5. STORE → In MariaDB speichern\\n6. EMBED → Vektoren erzeugen\\n7. INDEX → In Qdrant speichern\\n8. ANALYZE → Semantische Analyse<\/code><\/pre>\\n\\n<h2>Text-Extraktion<\/h2>\\n<table>\\n <tr><th>Format<\/th><th>Tool<\/th><th>Features<\/th><\/tr>\\n <tr><td>PDF<\/td><td>PyMuPDF<\/td><td>OCR via Tesseract<\/td><\/tr>\\n <tr><td>PPTX<\/td><td>python-pptx<\/td><td>Slides + Speaker Notes<\/td><\/tr>\\n <tr><td>DOCX<\/td><td>python-docx<\/td><td>Text-Extraktion<\/td><\/tr>\\n <tr><td>MD\/TXT<\/td><td>direkt<\/td><td>UTF-8<\/td><\/tr>\\n<\/table>\\n\\n<h2>Bild-Handling<\/h2>\\n<p>Bilder in Dokumenten werden via Vision-API beschrieben und als Text-Chunk gespeichert.<\/p>\\n\\n<h2>Chunking<\/h2>\\n<table>\\n <tr><th>Methode<\/th><td>Semantisch + Hierarchisch<\/td><\/tr>\\n <tr><th>Größe<\/th><td>Intelligent (kontextabhängig)<\/td><\/tr>\\n <tr><th>Overlap<\/th><td>~10%<\/td><\/tr>\\n <tr><th>Hierarchie<\/th><td>Dokument → Kapitel → Abschnitt<\/td><\/tr>\\n<\/table>\\n\\n<h2>Chunk-Metadaten<\/h2>\\n<pre><code>{\\n \\\"document_id\\\": 123,\\n \\\"chunk_index\\\": 0,\\n \\\"heading_path\\\": [\\\"Kapitel 1\\\", \\\"Abschnitt 1.2\\\"],\\n \\\"source_folder\\\": \\\"\/Documents\/Therapie\\\",\\n \\\"entities\\\": [\\\"Carl Rogers\\\"],\\n \\\"taxonomy_terms\\\": [\\\"Methoden\\\"]\\n}<\/code><\/pre>\\n\\n<h2>Queue-System<\/h2>\\n<table>\\n <tr><th>Queue<\/th><td>ki_content.pipeline_queue<\/td><\/tr>\\n <tr><th>Runs<\/th><td>ki_content.pipeline_runs (Status, Logging)<\/td><\/tr>\\n <tr><th>Retry<\/th><td>Max 3 Versuche, exponential backoff<\/td><\/tr>\\n<\/table>\\n\\n<h2>Pipeline-Scripts<\/h2>\\n<pre><code>\/var\/www\/scripts\/pipeline\/\\n├── pipeline.py → Haupt-Orchestrierung\\n├── detect.py → Datei-Monitoring\\n├── extract.py → Text-Extraktion\\n├── chunk.py → Semantisches Chunking\\n├── embed.py → Embedding-Erzeugung\\n├── analyze.py → Semantische Analyse\\n├── generate_semantics.py → Semantik-Generierung (Entities, Relations)\\n├── db.py → Datenbank-Operationen\\n├── config.py → Konfiguration\\n├── run.sh → Ausführungs-Wrapper\\n│\\n├── generate.py → Content-Generierung (RAG + Kritiker)\\n├── web_generate.py → Web-API für Content-Generierung\\n├── chat.py → RAG-Chat (interaktiv + CLI)\\n├── web_chat.py → Web-API für RAG-Chat\\n│\\n└── venv\/ → Python Virtual Environment<\/code><\/pre>\\n\\n<h3>Script-Kategorien<\/h3>\\n<table>\\n <tr><th>Kategorie<\/th><th>Scripts<\/th><th>Docs<\/th><\/tr>\\n <tr><td>Import-Pipeline<\/td><td>detect, extract, chunk, embed, analyze<\/td><td><a href=\\\"\/docs\/ki-system\/ki-embedding\\\">Embedding<\/a><\/td><\/tr>\\n <tr><td>Semantik<\/td><td>generate_semantics.py<\/td><td><a href=\\\"\/docs\/ki-system\/ki-entitaeten\\\">Entitäten<\/a><\/td><\/tr>\\n <tr><td>Content-Generierung<\/td><td>generate.py, web_generate.py<\/td><td><a href=\\\"\/docs\/content-studio\\\">Content-Studio<\/a><\/td><\/tr>\\n <tr><td>RAG-Chat<\/td><td>chat.py, web_chat.py<\/td><td><a href=\\\"\/docs\/ki-system\/ki-chat\\\">RAG-Chat<\/a><\/td><\/tr>\\n <tr><td>Infrastruktur<\/td><td>db.py, config.py, run.sh<\/td><td><a href=\\\"\/docs\/ki-system\/ki-datenbank\\\">Datenbank<\/a><\/td><\/tr>\\n<\/table>\\n\\n<h2>Ausführung<\/h2>\\n<pre><code>cd \/var\/www\/scripts\/pipeline\\n\\n# Neue Dokumente scannen\\n.\/run.sh scan\\n\\n# Queue verarbeiten\\n.\/run.sh process\\n\\n# Pending Embeddings\\n.\/run.sh embed\\n\\n# Volle Pipeline\\n.\/run.sh all\\n\\n# Einzelne Datei\\n.\/run.sh file \/pfad\/zur\/datei.pdf\\n\\n# Status anzeigen\\n.\/run.sh status<\/code><\/pre>\",\n \"status\": \"published\",\n \"sort_order\": 4,\n \"depth\": 1,\n \"created_at\": \"2025-12-20T11:13:58\",\n \"updated_at\": \"2025-12-31T04:26:21\"\n },\n \"message\": \"Document #20 updated\"\n}"
}
]
}