{
"event": "PreToolUse",
"tool_name": "mcp__mcp-tasks__tasks_update",
"tool_input": {
"id": 517,
"description": "# Semantische Infrastruktur vereinheitlichen - RAG-Qualitätsstrategie\n\n## 1. IST-ZUSTAND ANALYSE\n\n### 1.1 Semantik-Tabellen (ki_content)\n\n| Tabelle | Rows | Zweck | Status |\n|---------|------|-------|--------|\n| `chunk_semantics` | 1811 | summary, keywords, sentiment, topics | ✓ Aktiv |\n| `chunk_text_semantics` | 1873 | statement_form, intent, frame, discourse_role | ✓ Aktiv |\n| `entity_semantics` | 0 | definition, context | ⚠️ LEER\/UNUSED |\n| `entity_knowledge_semantics` | 421 | semantic_role, functional_category, context_meaning | ✓ Aktiv |\n| `chunk_entities` | 10814 | Chunk↔Entity Verlinkung | ✓ Aktiv |\n| `chunk_taxonomy` | 5618 | Chunk↔Taxonomy Verlinkung | ✓ Aktiv |\n| `entity_taxonomy_mapping` | 1602 | Entity↔Taxonomy | ✓ Aktiv |\n| `entity_relations` | 271 | Entity-Relationen | ✓ Aktiv |\n| `entity_ontology` | 271 | Ontologie-Zuordnungen | ✓ Aktiv |\n\n### 1.2 Zwei Parallele Systeme\n\n**System A: SemanticStep (analyze_document)**\n- Quelle: `analyzers\/document_analyzer.py`\n- Speichert: `chunk_semantics` (summary, keywords, sentiment)\n- Aufruf: `pipeline.py semantic <doc_id>`\n- Model: Hardcoded in config.py\n\n**System B: TextSemanticAnalyzeStep (step_semantic_extended.py)**\n- Quelle: `step_semantic_extended.py`\n- Speichert: `chunk_text_semantics` (intent, frame, discourse_role)\n- Aufruf: Nur über Pipeline-Steps 14-15\n- Model: Aus DB (`get_step_model()`) ✓\n\n### 1.3 RAG-Nutzung (KRITISCH)\n\n**HybridSearchService verwendet:**\n- ✓ Qdrant Vektor-Suche\n- ✓ Entities für Filterung\n- ✓ Keywords für Reranking\n- ✗ KEINE chunk_semantics Daten!\n- ✗ KEINE chunk_text_semantics Daten!\n- ✗ KEINE entity_knowledge_semantics Daten!\n\n**Fazit:** Reichhaltige semantische Daten werden NICHT für RAG genutzt!\n\n---\n\n## 2. PROBLEME\n\n| # | Problem | Impact |\n|---|---------|--------|\n| P1 | Zwei redundante Semantic-Systeme | Verwirrung, doppelte Arbeit |\n| P2 | RAG nutzt keine semantischen Metadaten | Qualitätsverlust |\n| P3 | `entity_semantics` vs `entity_knowledge_semantics` Duplikation | Tote Tabelle |\n| P4 | `dokumentation_chunks` vs `chunks` Tabellen-Split | Inkonsistenz |\n| P5 | `semantic` CLI-Befehl ruft nur System A | Incomplete |\n| P6 | Keine semantische Filterung in Qdrant Payload | RAG blind für Semantik |\n\n---\n\n## 3. ZIEL-ARCHITEKTUR\n\n### 3.1 Einheitliches Semantik-Modell\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│ CHUNK SEMANTICS │\n├─────────────────────────────────────────────────────────────┤\n│ Inhalts-Semantik (WAS) │ Text-Semantik (WIE) │\n│ - summary │ - statement_form │\n│ - keywords[] │ - intent │\n│ - topics[] │ - frame │\n│ - sentiment │ - discourse_role │\n│ │ - is_negated │\n└─────────────────────────────────────────────────────────────┘\n\n┌─────────────────────────────────────────────────────────────┐\n│ ENTITY SEMANTICS │\n├─────────────────────────────────────────────────────────────┤\n│ - definition (1-2 Sätze) │\n│ - semantic_role (agent, patient, instrument, ...) │\n│ - functional_category (method, tool, concept, ...) │\n│ - context_meaning │\n│ - properties{} │\n└─────────────────────────────────────────────────────────────┘\n```\n\n### 3.2 RAG-Integration\n\n```\nUser Query\n │\n ▼\n┌──────────────────┐\n│ Query Analysis │ ← Intent erkennen (explain, define, compare)\n└────────┬─────────┘\n │\n ▼\n┌──────────────────┐\n│ Semantic Filter │ ← Filter nach frame, discourse_role\n└────────┬─────────┘\n │\n ▼\n┌──────────────────┐\n│ Vector Search │ ← Qdrant mit semantischem Payload\n└────────┬─────────┘\n │\n ▼\n┌──────────────────┐\n│ Semantic Rerank │ ← Boost für matching intent\/frame\n└────────┬─────────┘\n │\n ▼\n RAG Context\n```\n\n---\n\n## 4. VEREINHEITLICHUNGS-STRATEGIE\n\n### Phase 1: Tabellen-Konsolidierung\n\n1. **chunk_semantics + chunk_text_semantics → unified_chunk_semantics**\n - Alle Felder in einer Tabelle\n - Rückwärtskompatible Views für alte Queries\n\n2. **entity_semantics löschen → entity_knowledge_semantics nutzen**\n - Tabelle ist leer, kann weg\n - Alle Logik auf entity_knowledge_semantics\n\n### Phase 2: Pipeline-Integration\n\n1. **Neuer Step: `unified_semantic_analyze`**\n - Ersetzt System A + System B\n - Ein Prompt, ein LLM-Call pro Chunk\n - Extrahiert: summary, keywords, intent, frame, discourse_role\n\n2. **CLI-Befehl `semantic` erweitern**\n - Ruft unified step\n - Rückwärtskompatibel\n\n### Phase 3: RAG-Integration\n\n1. **Qdrant Payload erweitern**\n - `intent`, `frame`, `discourse_role` in Payload\n - Ermöglicht semantische Filter\n\n2. **HybridSearchService erweitern**\n - Query-Intent-Analyse\n - Semantische Filter vor Vector-Search\n - Reranking nach semantic match\n\n3. **Kontextqualität**\n - Bevorzuge `discourse_role=definition` für \"Was ist...?\" Fragen\n - Bevorzuge `discourse_role=example` für \"Beispiel für...?\" Fragen\n - Bevorzuge `frame=practical` für \"Wie...?\" Fragen\n\n---\n\n## 5. IMPLEMENTIERUNGSPLAN\n\n| # | Task | Priorität | Abhängigkeit |\n|---|------|-----------|--------------|\n| 1 | unified_chunk_semantics Tabelle erstellen | P1 | - |\n| 2 | Migration chunk_semantics → unified | P1 | 1 |\n| 3 | Migration chunk_text_semantics → unified | P1 | 1 |\n| 4 | Views für Rückwärtskompatibilität | P1 | 2,3 |\n| 5 | UnifiedSemanticStep erstellen | P2 | 4 |\n| 6 | Pipeline-Steps konsolidieren | P2 | 5 |\n| 7 | CLI `semantic` erweitern | P2 | 6 |\n| 8 | Qdrant Payload Schema erweitern | P3 | 4 |\n| 9 | Re-Embedding mit semantischem Payload | P3 | 8 |\n| 10 | HybridSearchService semantische Filter | P3 | 9 |\n| 11 | Query-Intent-Analyse | P3 | 10 |\n| 12 | Semantic Reranking | P3 | 11 |\n| 13 | entity_semantics Tabelle löschen | P4 | - |\n\n---\n\n## 6. ERWARTETE VERBESSERUNGEN\n\n| Metrik | Vorher | Nachher |\n|--------|--------|---------|\n| Semantic Coverage | 2 Tabellen, 50% Overlap | 1 Tabelle, 100% |\n| RAG Semantic Use | 0% | 100% |\n| Query-Kontext Match | Nur Vector | Vector + Semantic |\n| Maintenance | 2 Systeme | 1 System |\n| LLM Calls\/Chunk | 2 (A+B) | 1 (unified) |\n\n---\n\n## 7. RISIKEN\n\n| Risiko | Mitigation |\n|--------|------------|\n| Datenverlust Migration | Views + Backup vor Migration |\n| Breaking Changes | Rückwärtskompatible Views |\n| Performance Re-Embed | Inkrementelles Re-Embedding |\n| Prompt-Qualität unified | Iteratives Prompt-Engineering |\n\n---\n\n## 8. NÄCHSTE SCHRITTE\n\n**Zur Genehmigung:**\n1. Schema für `unified_chunk_semantics` definieren\n2. Migrations-Script erstellen\n3. UnifiedSemanticStep Prompt entwickeln\n\n**Entscheidung erforderlich:**\n- Soll `dokumentation_chunks` mit `chunks` zusammengeführt werden?\n- Priorität: Tabellen-Konsolidierung vs RAG-Integration zuerst?"
}
}
{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"task\": {\n \"id\": 517,\n \"uuid\": \"bcd8912c-506b-4593-a1ba-471421dea6e9\",\n \"title\": \"Semantische Infrastruktur vereinheitlichen - RAG-Qualitätsstrategie\",\n \"description\": \"# Semantische Infrastruktur vereinheitlichen - RAG-Qualitätsstrategie\\n\\n## 1. IST-ZUSTAND ANALYSE\\n\\n### 1.1 Semantik-Tabellen (ki_content)\\n\\n| Tabelle | Rows | Zweck | Status |\\n|---------|------|-------|--------|\\n| `chunk_semantics` | 1811 | summary, keywords, sentiment, topics | ✓ Aktiv |\\n| `chunk_text_semantics` | 1873 | statement_form, intent, frame, discourse_role | ✓ Aktiv |\\n| `entity_semantics` | 0 | definition, context | ⚠️ LEER\/UNUSED |\\n| `entity_knowledge_semantics` | 421 | semantic_role, functional_category, context_meaning | ✓ Aktiv |\\n| `chunk_entities` | 10814 | Chunk↔Entity Verlinkung | ✓ Aktiv |\\n| `chunk_taxonomy` | 5618 | Chunk↔Taxonomy Verlinkung | ✓ Aktiv |\\n| `entity_taxonomy_mapping` | 1602 | Entity↔Taxonomy | ✓ Aktiv |\\n| `entity_relations` | 271 | Entity-Relationen | ✓ Aktiv |\\n| `entity_ontology` | 271 | Ontologie-Zuordnungen | ✓ Aktiv |\\n\\n### 1.2 Zwei Parallele Systeme\\n\\n**System A: SemanticStep (analyze_document)**\\n- Quelle: `analyzers\/document_analyzer.py`\\n- Speichert: `chunk_semantics` (summary, keywords, sentiment)\\n- Aufruf: `pipeline.py semantic <doc_id>`\\n- Model: Hardcoded in config.py\\n\\n**System B: TextSemanticAnalyzeStep (step_semantic_extended.py)**\\n- Quelle: `step_semantic_extended.py`\\n- Speichert: `chunk_text_semantics` (intent, frame, discourse_role)\\n- Aufruf: Nur über Pipeline-Steps 14-15\\n- Model: Aus DB (`get_step_model()`) ✓\\n\\n### 1.3 RAG-Nutzung (KRITISCH)\\n\\n**HybridSearchService verwendet:**\\n- ✓ Qdrant Vektor-Suche\\n- ✓ Entities für Filterung\\n- ✓ Keywords für Reranking\\n- ✗ KEINE chunk_semantics Daten!\\n- ✗ KEINE chunk_text_semantics Daten!\\n- ✗ KEINE entity_knowledge_semantics Daten!\\n\\n**Fazit:** Reichhaltige semantische Daten werden NICHT für RAG genutzt!\\n\\n---\\n\\n## 2. PROBLEME\\n\\n| # | Problem | Impact |\\n|---|---------|--------|\\n| P1 | Zwei redundante Semantic-Systeme | Verwirrung, doppelte Arbeit |\\n| P2 | RAG nutzt keine semantischen Metadaten | Qualitätsverlust |\\n| P3 | `entity_semantics` vs `entity_knowledge_semantics` Duplikation | Tote Tabelle |\\n| P4 | `dokumentation_chunks` vs `chunks` Tabellen-Split | Inkonsistenz |\\n| P5 | `semantic` CLI-Befehl ruft nur System A | Incomplete |\\n| P6 | Keine semantische Filterung in Qdrant Payload | RAG blind für Semantik |\\n\\n---\\n\\n## 3. ZIEL-ARCHITEKTUR\\n\\n### 3.1 Einheitliches Semantik-Modell\\n\\n```\\n┌─────────────────────────────────────────────────────────────┐\\n│ CHUNK SEMANTICS │\\n├─────────────────────────────────────────────────────────────┤\\n│ Inhalts-Semantik (WAS) │ Text-Semantik (WIE) │\\n│ - summary │ - statement_form │\\n│ - keywords[] │ - intent │\\n│ - topics[] │ - frame │\\n│ - sentiment │ - discourse_role │\\n│ │ - is_negated │\\n└─────────────────────────────────────────────────────────────┘\\n\\n┌─────────────────────────────────────────────────────────────┐\\n│ ENTITY SEMANTICS │\\n├─────────────────────────────────────────────────────────────┤\\n│ - definition (1-2 Sätze) │\\n│ - semantic_role (agent, patient, instrument, ...) │\\n│ - functional_category (method, tool, concept, ...) │\\n│ - context_meaning │\\n│ - properties{} │\\n└─────────────────────────────────────────────────────────────┘\\n```\\n\\n### 3.2 RAG-Integration\\n\\n```\\nUser Query\\n │\\n ▼\\n┌──────────────────┐\\n│ Query Analysis │ ← Intent erkennen (explain, define, compare)\\n└────────┬─────────┘\\n │\\n ▼\\n┌──────────────────┐\\n│ Semantic Filter │ ← Filter nach frame, discourse_role\\n└────────┬─────────┘\\n │\\n ▼\\n┌──────────────────┐\\n│ Vector Search │ ← Qdrant mit semantischem Payload\\n└────────┬─────────┘\\n │\\n ▼\\n┌──────────────────┐\\n│ Semantic Rerank │ ← Boost für matching intent\/frame\\n└────────┬─────────┘\\n │\\n ▼\\n RAG Context\\n```\\n\\n---\\n\\n## 4. VEREINHEITLICHUNGS-STRATEGIE\\n\\n### Phase 1: Tabellen-Konsolidierung\\n\\n1. **chunk_semantics + chunk_text_semantics → unified_chunk_semantics**\\n - Alle Felder in einer Tabelle\\n - Rückwärtskompatible Views für alte Queries\\n\\n2. **entity_semantics löschen → entity_knowledge_semantics nutzen**\\n - Tabelle ist leer, kann weg\\n - Alle Logik auf entity_knowledge_semantics\\n\\n### Phase 2: Pipeline-Integration\\n\\n1. **Neuer Step: `unified_semantic_analyze`**\\n - Ersetzt System A + System B\\n - Ein Prompt, ein LLM-Call pro Chunk\\n - Extrahiert: summary, keywords, intent, frame, discourse_role\\n\\n2. **CLI-Befehl `semantic` erweitern**\\n - Ruft unified step\\n - Rückwärtskompatibel\\n\\n### Phase 3: RAG-Integration\\n\\n1. **Qdrant Payload erweitern**\\n - `intent`, `frame`, `discourse_role` in Payload\\n - Ermöglicht semantische Filter\\n\\n2. **HybridSearchService erweitern**\\n - Query-Intent-Analyse\\n - Semantische Filter vor Vector-Search\\n - Reranking nach semantic match\\n\\n3. **Kontextqualität**\\n - Bevorzuge `discourse_role=definition` für \\\"Was ist...?\\\" Fragen\\n - Bevorzuge `discourse_role=example` für \\\"Beispiel für...?\\\" Fragen\\n - Bevorzuge `frame=practical` für \\\"Wie...?\\\" Fragen\\n\\n---\\n\\n## 5. IMPLEMENTIERUNGSPLAN\\n\\n| # | Task | Priorität | Abhängigkeit |\\n|---|------|-----------|--------------|\\n| 1 | unified_chunk_semantics Tabelle erstellen | P1 | - |\\n| 2 | Migration chunk_semantics → unified | P1 | 1 |\\n| 3 | Migration chunk_text_semantics → unified | P1 | 1 |\\n| 4 | Views für Rückwärtskompatibilität | P1 | 2,3 |\\n| 5 | UnifiedSemanticStep erstellen | P2 | 4 |\\n| 6 | Pipeline-Steps konsolidieren | P2 | 5 |\\n| 7 | CLI `semantic` erweitern | P2 | 6 |\\n| 8 | Qdrant Payload Schema erweitern | P3 | 4 |\\n| 9 | Re-Embedding mit semantischem Payload | P3 | 8 |\\n| 10 | HybridSearchService semantische Filter | P3 | 9 |\\n| 11 | Query-Intent-Analyse | P3 | 10 |\\n| 12 | Semantic Reranking | P3 | 11 |\\n| 13 | entity_semantics Tabelle löschen | P4 | - |\\n\\n---\\n\\n## 6. ERWARTETE VERBESSERUNGEN\\n\\n| Metrik | Vorher | Nachher |\\n|--------|--------|---------|\\n| Semantic Coverage | 2 Tabellen, 50% Overlap | 1 Tabelle, 100% |\\n| RAG Semantic Use | 0% | 100% |\\n| Query-Kontext Match | Nur Vector | Vector + Semantic |\\n| Maintenance | 2 Systeme | 1 System |\\n| LLM Calls\/Chunk | 2 (A+B) | 1 (unified) |\\n\\n---\\n\\n## 7. RISIKEN\\n\\n| Risiko | Mitigation |\\n|--------|------------|\\n| Datenverlust Migration | Views + Backup vor Migration |\\n| Breaking Changes | Rückwärtskompatible Views |\\n| Performance Re-Embed | Inkrementelles Re-Embedding |\\n| Prompt-Qualität unified | Iteratives Prompt-Engineering |\\n\\n---\\n\\n## 8. NÄCHSTE SCHRITTE\\n\\n**Zur Genehmigung:**\\n1. Schema für `unified_chunk_semantics` definieren\\n2. Migrations-Script erstellen\\n3. UnifiedSemanticStep Prompt entwickeln\\n\\n**Entscheidung erforderlich:**\\n- Soll `dokumentation_chunks` mit `chunks` zusammengeführt werden?\\n- Priorität: Tabellen-Konsolidierung vs RAG-Integration zuerst?\",\n \"type\": \"ai_task\",\n \"status\": \"in_progress\",\n \"created_by\": \"mcp-tasks\",\n \"created_by_type\": \"ai\",\n \"parent_task_id\": null,\n \"due_date\": null,\n \"created_at\": \"2025-12-28T13:32:12.496571\",\n \"updated_at\": \"2025-12-28T13:34:30.689062\",\n \"completed_at\": null,\n \"metadata\": {}\n },\n \"message\": \"Task #517 updated\"\n}"
}
]
}