-
Notifications
You must be signed in to change notification settings - Fork 0
content_manager.cpp
makr-code edited this page Dec 21, 2025
·
1 revision
# content_manager.cpp
**Stand:** 5. Dezember 2025
**Version:** 1.0.0
**Kategorie:** Src
---
Path: `src/content/content_manager.cpp`
**Purpose:** Implementiert `ContentManager` für Content‑Ingest, Chunking, optionale ZSTD‑Kompression, Metadatenverwaltung und Integration mit Vector/Graph Indizes.
**Kerntypen:**
- `ContentMeta` — Metadaten eines Content‑Objekts (mime_type, size_bytes, compressed, chunk_count, embedding_dim, timestamps, hashes).
- `ChunkMeta` — Metadaten eines Chunks (seq_num, chunk_type, embedding, content_id).
- `ContentManager` — bietet Import/Get/Delete/Search APIs.
**Wichtige API‑Funktionen (Übersicht):**
- `importContent(spec, blob)` — Ingest eines Content‑Objekts.
- `getContentMeta(content_id)` — lädt `ContentMeta`.
- `getContentBlob(content_id)` — liefert entpackten Blob (falls komprimiert, Dekompression intern).
- `getContentChunks(content_id)` — liefert Chunk‑Liste (`ChunkMeta`).
- `getChunk(chunk_id)` — lädt einzelnes Chunk‑Meta.
- `searchContent(query_text, k, filters)` — vektorbasierte Suche via TextProcessor→Embedding.
- `searchWithExpansion(query_text, k, expansion_hops, filters)` — erweitert per Graph BFS/Dijkstra.
- `deleteContent(content_id)` — löscht Blob, Chunks, Metadaten und Index‑Einträge.
- `getStats()` — einfache Statistiken (counts, approximate storage size).
**Speicher‑Keys / Konventionen:**
- `content:<id>` → ContentMeta JSON
- `content_blob:<id>` → Blob (roh oder ZSTD)
- `chunk:<id>` → ChunkMeta JSON
- `content_chunks:<id>` → JSON Liste der chunk ids
- `content_hash:<sha256>` → lookup für Duplikaterkennung
**Import‑Ablauf (`importContent`):**
1. `spec` JSON parsen (metadaten, chunks, edges optional).
2. Generiere IDs falls notwendig (UUID fallback).
3. Entscheide Kompression über Heuristik + `config:content` (z.B. skip small mime types, size threshold ~4KB).
4. Wenn komprimiert → ZSTD (nur wenn `THEMIS_HAS_ZSTD` verfügbar), sonst roher Blob.
5. Speichere Blob unter `content_blob:<id>` und Meta unter `content:<id>`.
6. Für jeden Chunk: speichere `chunk:<id>`, optional Embedding → `vector_index_->addEntity(...)` in `chunks:` namespace.
7. Optional: Kanten in `graph_index_` anlegen.
**Kompressions‑Heuristik (aktuell):**
- MIME‑Whitelist / Blacklist: gewisse textliche MIMEs komprimieren, bereits komprimierte MIMEs (z. B. `image/*`, `video/*`) werden ausgelassen.
- Größenheuristik: Standardfall komprimieren wenn > ~4096 Bytes (siehe Quellcode: `return size > 4096;`).
- Build‑Zeit: Wenn ZSTD nicht vorhanden ist (kein `THEMIS_HAS_ZSTD`) → Fallback auf rohen Blob.
**Deduplication:**
- SHA256 des Inhalts wird berechnet und in `content_hash:<hex>` abgelegt; ein Treffer kann Import überspringen oder referenzieren.
**Suche & Expansion:**
- `searchContent` nutzt einen `TextProcessor` (falls registriert) zur Erstellung einer Query‑Embedding und ruft `vector_index_->searchKnn` auf.
- `searchWithExpansion` kombiniert Vector‑Scores mit Graph‑Expansion (BFS) und optionalen Dijkstra‑Kosten; Parameter `alpha/beta/gamma` steuern Gewichtung und Hop‑Penalty.
**Fehlerbehandlung / Fallbacks:**
- Alle `storage_->put`/`get` Rückgaben werden geprüft; fehlgeschlagene Stores geben `Status::Error` zurück.
- Dekompressionsfehler führen zu Rückgabe des rohen Bytestrings (Fallback).
**Beispiel `spec` (Import JSON):**
```json
{
"id": "", // optional
"mime_type": "text/plain",
"title": "Beispiel",
"chunks": [ { "seq_num": 0, "id": "", "embedding": [0.1, 0.2, ...] } ],
"edges": [ { "from": "obj:1", "to": "obj:2", "weight": 1.0 } ]
}Pseudocode‑Beispiel (Ingest → Suche):
ContentManager cm(storage, vector_index, graph_index);
json spec = ...; std::string blob = readFile("file.txt");
auto st = cm.importContent(spec, blob);
auto meta = cm.getContentMeta(st.id);
auto results = cm.searchContent("Suchtext", 10, json::object());Wichtige Ergänzungen / TODOs:
- E2E Tests: ingest → getBlob → searchContent → deleteContent (inkl. Kompressionsvarianten).
- Concurrency: dokumentieren, welche atomic/transactional Guarantees Storage bietet und ob externes Locking empfohlen wird (race beim Setzen von
embedding_dim). - Explizite Beispiele für
config:contentSettings.
- Übersicht
- Home
- 📋 Dokumentations-Index
- 📋 Quick Reference
- 📊 Sachstandsbericht 2025
- 🚀 Features
- 🗺️ Roadmap
- Ecosystem Overview
- Strategische Übersicht
- Architektur
- Basismodell
- Storage & MVCC
- Indexe & Statistiken
- Query & AQL
- Caching
- Content Pipeline
- Suche
- Performance & Benchmarks
- Enterprise Features
- Qualitätssicherung
- Vektor & GNN
- Geo Features
- Sicherheit & Governance
- Überblick
- RBAC & Authorization
- RBAC
- Policies (MVP)
- Authentication
- Schlüsselverwaltung
- Verschlüsselung
- TLS & Certificates
- PKI & Signatures
- PII Detection
- Vault & HSM
- Audit & Compliance
- Security Audits & Hardening
- Competitive Gap Analysis
- Deployment & Betrieb
- Deployment
- Docker
- Tracing & Observability
- Observability
- Change Data Capture
- Operations Runbook
- Infrastructure Roadmap
- Horizontal Scaling Implementation Strategy
- Entwicklung
- Übersicht
- Code Quality Pipeline
- Developers Guide
- Cost Models
- Todo Liste
- Tool Todo
- Core Feature Todo
- Priorities
- Implementation Status
- Roadmap
- Future Work
- Next Steps Analysis
- AQL LET Implementation Guide
- Development Audit
- Sprint Summary (2025-11-17)
- WAL Archiving
- Search Gap Analysis
- Source Documentation Plan
- API Implementations
- Changefeed
- Security Development
- Development Overviews
- Publikation & Ablage
- Admin-Tools
- APIs
- Client SDKs
- Implementierungs-Zusammenfassungen
- Planung & Reports
- Dokumentation
- Release Notes
- Styleguide & Glossar
- Roadmap
- Changelog
- Source Code Documentation
- Übersicht
- Source Documentation
- Main
- Main (Detailed)
- Main Server
- Main Server (Detailed)
- Demo Encryption
- Demo Encryption (Detailed)
- API
- Authentication
- Cache
- CDC
- Content
- Geo
- Governance
- Index
- LLM
- Query
- Security
- Server
- Server README
- [VCCDB Design](src/server/VCCDB Design.md.md)
- Audit API Handler
- Auth Middleware
- Classification API Handler
- HTTP Server
- Keys API Handler
- PII API Handler
- Policy Engine
- Ranger Adapter
- Reports API Handler
- Retention API Handler
- SAGA API Handler
- SSE Connection Manager
- Storage
- Time Series
- Transaction
- Utils
- Archive