Protokoll #23931

ID23931
Zeitstempel2025-12-27 15:34:17.575101
Clientroot
IP145.224.72.140
Modellclaude-sonnet-4-20250514
Statuscompleted
Tokens2,614 (Input: 22, Output: 2,592)
Dauer104 ms
Request-Zeit2025-12-27 15:34:17.575101
Response-Zeit2025-12-27 15:34:17.679404

Request

{
    "event": "PreToolUse",
    "tool_name": "mcp__mcp-docs__docs_get",
    "tool_input": {
        "id": 100
    }
}

Response

{
    "tool_response": [
        {
            "type": "text",
            "text": "{\n  \"success\": true,\n  \"doc\": {\n    \"id\": 100,\n    \"parent_id\": 91,\n    \"slug\": \"rag-prozess\",\n    \"path\": \"\/prozesse\/rag-prozess\",\n    \"title\": \"RAG-Prozess\",\n    \"description\": \"Dokumentation des gesamten RAG-Prozesses (Retrieval Augmented Generation) für Chat und Content Studio\",\n    \"content\": \"# RAG-Prozess\\n\\n## Status: Aktualisiert 2025-12-27\\n\\n## Übersicht\\n\\nDer RAG-Prozess (Retrieval Augmented Generation) bildet das Herzstück der KI-gestützten Wissensgenerierung. Die Architektur trennt strikt zwischen **Offline-Pipeline** (Wissensaufbau) und **Online-Pipeline** (Wissenskonsum).\\n\\n### Grundprinzip\\n- Die **Offline-Pipeline** erzeugt und strukturiert Wissen (Python-Skripte)\\n- Die **Online-Pipeline** konsumiert Wissen, ohne es zu verändern (PHP-Services)\\n- Zwischen beiden Pipelines besteht **keine Rückkopplung zur Laufzeit**\\n\\n---\\n\\n## Offline-Pipeline: Tatsächlicher Ablauf (IST)\\n\\n**Pfad:** `\/var\/www\/scripts\/pipeline\/`\\n**Orchestrator:** `pipeline.py`\\n**Step-Module:** `step_extract.py`, `step_load.py`, `step_transform.py`, `step_embed.py`, `step_semantic.py`\\n\\n### Phase 0: Detection\\n\\n| Step | Modul | Beschreibung |\\n|------|-------|--------------|\\n| detect | `detect.py` | Dateien scannen, Hash-Vergleich |\\n| queue | `detect.py` | Neue\/geänderte Dateien in Queue |\\n\\n### Phase 1: Extraction (pro Dokument)\\n\\n| Step | Modul | Beschreibung |\\n|------|-------|--------------|\\n| extract | `step_extract.py` → `extract.py` | Text aus PDF\/DOCX\/PPTX\/MD\/TXT |\\n| hash | `step_extract.py` | SHA256 Hash berechnen |\\n| rotation | `orientation.py` | Seitenrotation erkennen (PDF) |\\n\\n### Phase 2: Load\\n\\n| Step | Modul | Beschreibung |\\n|------|-------|--------------|\\n| doc_create | `step_load.py` | Dokument in `documents` anlegen |\\n| page_store | `step_load.py` | Seiten in `document_pages` speichern |\\n\\n### Phase 3: Vision (nur PDF)\\n\\n| Step | Modul | Beschreibung |\\n|------|-------|--------------|\\n| vision | `step_transform.py` → `vision.py` | Seiten mit llama3.2-vision:11b analysieren |\\n| vision_store | `vision.py` | Ergebnisse in `document_pages.vision_analysis` |\\n\\n### Phase 4: Chunking\\n\\n| Step | Modul | Beschreibung |\\n|------|-------|--------------|\\n| chunk | `step_transform.py` → `chunk.py` | Text in semantische Chunks zerlegen |\\n| chunk_store | `step_load.py` | Chunks in `chunks` speichern |\\n\\n### Phase 5: Enrichment (nur PDF)\\n\\n| Step | Modul | Beschreibung |\\n|------|-------|--------------|\\n| enrich | `step_transform.py` → `enrich.py` | Vision-Kontext zu Chunks hinzufügen |\\n\\n### Phase 6: Embedding (Layer 3 - Dokument wird suchbar)\\n\\n| Step | Modul | Beschreibung |\\n|------|-------|--------------|\\n| embed | `step_embed.py` → `embed.py` | Embeddings mit mxbai-embed-large |\\n| qdrant_store | `embed.py` | Vektoren in Qdrant speichern |\\n| status_embedded | `step_load.py` | Status = \\\"embedded\\\" |\\n\\n**Nach Phase 6 ist das Dokument im Chat suchbar!**\\n\\n### Phase 7: Semantic Analysis (Layer 4 - optional\/async)\\n\\n| Step | Modul | Beschreibung |\\n|------|-------|--------------|\\n| entity_extract | `analyzers\/entity_extractor.py` | Entitäten extrahieren (Anthropic\/Ollama) |\\n| entity_store | `analyzers\/entity_extractor.py` | Entitäten in `entities` speichern |\\n| entity_normalize | `analyzers\/entity_normalizer.py` | canonical_name setzen |\\n| relation_extract | `analyzers\/relation_extractor.py` | Relationen extrahieren |\\n| relation_store | `analyzers\/document_analyzer.py` | In `entity_relations` speichern |\\n| taxonomy_classify | `analyzers\/taxonomy_classifier.py` | Taxonomie-Kategorien zuweisen |\\n| ontology_classify | `analyzers\/ontology_classifier.py` | Ontologie-Klassen zuweisen |\\n| chunk_entity_link | `analyzers\/document_analyzer.py` | Chunks mit Entitäten verknüpfen |\\n| chunk_taxonomy | `analyzers\/document_analyzer.py` | Taxonomie auf Chunks propagieren |\\n| entity_taxonomy | `analyzers\/document_analyzer.py` | Taxonomie auf Entitäten |\\n| chunk_semantics | `analyzers\/semantic_analyzer.py` | Chunk-Semantik analysieren |\\n\\n### Phase 8: Finalization\\n\\n| Step | Modul | Beschreibung |\\n|------|-------|--------------|\\n| status_done | `step_load.py` | Status = \\\"done\\\" |\\n\\n---\\n\\n## Datenfluss-Diagramm\\n\\n```\\n┌─────────────────────────────────────────────────────────────────┐\\n│ Phase 0: DETECTION                                               │\\n│ detect.py: scan_directory() → queue_files()                     │\\n└─────────────────────────────┬───────────────────────────────────┘\\n                              │\\n                              ▼\\n┌─────────────────────────────────────────────────────────────────┐\\n│ Phase 1: EXTRACTION                                              │\\n│ step_extract.py → extract.py                                    │\\n│   • Text aus PDF\/DOCX\/PPTX\/MD\/TXT                               │\\n│   • SHA256 Hash                                                 │\\n│   • Rotationserkennung (orientation.py)                         │\\n└─────────────────────────────┬───────────────────────────────────┘\\n                              │\\n                              ▼\\n┌─────────────────────────────────────────────────────────────────┐\\n│ Phase 2: LOAD                                                    │\\n│ step_load.py                                                    │\\n│   • documents Eintrag erstellen                                 │\\n│   • document_pages speichern                                    │\\n└─────────────────────────────┬───────────────────────────────────┘\\n                              │\\n                              ▼ (nur PDF)\\n┌─────────────────────────────────────────────────────────────────┐\\n│ Phase 3: VISION                                                  │\\n│ step_transform.py → vision.py                                   │\\n│   • Seiten als Bilder rendern                                   │\\n│   • llama3.2-vision:11b Analyse                                 │\\n│   • Überschriften, Bilder, Tabellen, Layout erkennen            │\\n└─────────────────────────────┬───────────────────────────────────┘\\n                              │\\n                              ▼\\n┌─────────────────────────────────────────────────────────────────┐\\n│ Phase 4: CHUNKING                                                │\\n│ step_transform.py → chunk.py                                    │\\n│   • Semantisches Chunking nach Struktur                         │\\n│   • Überlappung: 10%                                            │\\n│   • Min: 100, Max: 2000 Zeichen                                 │\\n└─────────────────────────────┬───────────────────────────────────┘\\n                              │\\n                              ▼ (nur PDF)\\n┌─────────────────────────────────────────────────────────────────┐\\n│ Phase 5: ENRICHMENT                                              │\\n│ step_transform.py → enrich.py                                   │\\n│   • Vision-Kontext zu Chunks hinzufügen                         │\\n└─────────────────────────────┬───────────────────────────────────┘\\n                              │\\n                              ▼\\n┌─────────────────────────────────────────────────────────────────┐\\n│ Phase 6: EMBEDDING (Layer 3)                                     │\\n│ step_embed.py → embed.py                                        │\\n│   • mxbai-embed-large (1024 dim)                                │\\n│   • Qdrant: Collection \\\"documents\\\"                              │\\n│   • Status: \\\"embedded\\\" ✓ SUCHBAR                                │\\n└─────────────────────────────┬───────────────────────────────────┘\\n                              │\\n                              ▼\\n┌─────────────────────────────────────────────────────────────────┐\\n│ Phase 7: SEMANTIC (Layer 4) - Optional                           │\\n│ step_semantic.py → analyzers\/*                                  │\\n│   • Entity-Extraktion (Anthropic oder Ollama)                   │\\n│   • Relationen                                                  │\\n│   • Taxonomie-Klassifikation                                    │\\n│   • Ontologie-Zuordnung                                         │\\n│   • Chunk-Semantik (summary, keywords, sentiment)               │\\n└─────────────────────────────┬───────────────────────────────────┘\\n                              │\\n                              ▼\\n┌─────────────────────────────────────────────────────────────────┐\\n│ Phase 8: FINALIZATION                                            │\\n│   • Status: \\\"done\\\" ✓                                            │\\n└─────────────────────────────────────────────────────────────────┘\\n```\\n\\n---\\n\\n## Konfiguration\\n\\n**Quelle:** `config.py`\\n\\n| Parameter | Wert | Beschreibung |\\n|-----------|------|--------------|\\n| NEXTCLOUD_PATH | `\/var\/www\/nextcloud\/data\/root\/files\/Documents` | Quellverzeichnis |\\n| SUPPORTED_EXTENSIONS | `[\\\".pdf\\\", \\\".pptx\\\", \\\".docx\\\", \\\".md\\\", \\\".txt\\\"]` | Dateitypen |\\n| EMBEDDING_MODEL | `mxbai-embed-large` | Ollama Embedding-Modell |\\n| EMBEDDING_DIMENSION | `1024` | Vektordimension |\\n| MIN_CHUNK_SIZE | `100` | Min. Chunk-Größe |\\n| MAX_CHUNK_SIZE | `2000` | Max. Chunk-Größe |\\n| CHUNK_OVERLAP_PERCENT | `10` | Überlappung |\\n| OCR_ENABLED | `True` | OCR für Scans |\\n| OCR_LANGUAGE | `deu` | OCR-Sprache |\\n| ROTATION_DETECTION_ENABLED | `True` | Seitenrotation erkennen |\\n| ROTATION_OSD_CONFIDENCE_THRESHOLD | `2.0` | OSD Confidence-Schwelle |\\n| SEMANTIC_SYNC | `True` | Synchrone Semantik-Analyse |\\n| SEMANTIC_USE_ANTHROPIC | `False` | Anthropic oder Ollama |\\n\\n---\\n\\n## Datei-Referenzen\\n\\n### Pipeline-Kern\\n\\n```\\n\/var\/www\/scripts\/pipeline\/\\n├── pipeline.py           # Orchestrator\\n├── config.py             # Konfiguration\\n├── db.py                 # Datenbank-Wrapper\\n├── detect.py             # Datei-Erkennung\\n├── extract.py            # Text-Extraktion\\n├── orientation.py        # Rotationserkennung (NEU!)\\n├── chunk.py              # Chunking\\n├── embed.py              # ... [TRUNCATED-bad3c059d590d82c]"
        }
    ]
}
← Vorheriger Zur Liste Nächster →