Teil 2 · CogniVault Architektur: Dauerhafte Ingestion mit DBOS

Juni 2, 2026·
Ndimofor Aretas
Ndimofor Aretas
· 4 Min Lesezeit
blog Architecture Deep Dives

Alle Abkürzungen werden im Anhang am Ende der Seite ausführlich erklärt.

In einem einfachen lokalen KI-Setup ist das Hinzufügen von Dokumenten zu deiner Datenbank normalerweise nur ein simples Python-Skript. Du öffnest ein PDF, zerhackst den Text in Chunks, verwandelst diese Chunks in Mathe (Embeddings) und speicherst sie.

Das funktioniert super für ein fünfseitiges Essay. Aber was passiert, wenn du ein 1.000-seitiges technisches Handbuch einliest (Ingestion) und dein Laptop bei Seite 800 in den Ruhemodus geht?

Das Skript stirbt. Wenn du deinen Laptop aufweckst, musst du wieder bei Seite 1 anfangen und verschwendest so Zeit und Rechenleistung. Ein einfaches Skript reichte für CogniVault nicht aus. Wir brauchten einen Durable Workflow (dauerhaften Workflow).

Das Fabrikbuch (DBOS)

Stell dir die Daten-Ingestion wie ein Fließband in einer Fabrik vor. Wenn der Strom ausfällt, sollten die Arbeiter nicht jedes Produkt von Grund auf neu bauen müssen. Sie sollten einfach in ein permanentes Kassenbuch (Ledger) schauen, genau sehen, welche Kiste sie gerade gepackt haben, als das Licht ausging, und dort weitermachen.

CogniVault verwendet ein Framework namens DBOS (Database-Oriented Operating System), das von einer PostgreSQL-Datenbank gestützt wird, um als dieses Buch zu fungieren.

Jeder Schritt des Ingestion-Prozesses protokolliert seinen Abschluss in Postgres. Wenn der Server mittendrin abstürzt, passiert im Moment nichts Dramatisches — die Magie entfaltet sich beim Neustart: DBOS liest das Buch, sieht, welche Schritte bereits abgeschlossen sind, spielt die aufgezeichneten Ergebnisse sofort ab und macht beim ersten unvollendeten Schritt weiter.

Eine wichtige Grenze: Postgres enthält nur das Buch — welche Schritte gelaufen sind und was sie zurückgegeben haben. Deine Dokumente, Chunks und Vektoren leben dort nie. Sie wandern in einen FAISS-Index plus eine JSON-Metadaten-Datei auf der Festplatte.

SHA-256 Hashing: Der Idempotenz-Trick

Das System muss auch bei erneuten Uploads clever sein. Wenn du einen Tippfehler in einem riesigen Dokument behebst und es noch einmal hochlädst, willst du nicht, dass das System 10 Minuten verschwendet, um das Ganze neu einzubetten (re-embedding).

CogniVault erreicht Idempotenz (die Fähigkeit, dieselbe Operation mehrmals auszuführen, ohne das Ergebnis nach der ersten Anwendung zu verändern) mit dem allerersten Schritt des Workflows: Es scannt den docs/-Ordner und generiert einen SHA-256-Hash (einen einzigartigen digitalen Fingerabdruck) für jede Datei.

  • Wenn der Hash neu ist, wird die Datei verarbeitet.
  • Wenn sich der Hash geändert hat (weil du die Datei bearbeitet hast), löscht es die alten Text-Chunks per “Soft-Delete” und bettet nur die neue Version neu ein.
  • Wenn der Hash identisch ist, überspringt es die Datei komplett.

Hier können wir sehen, wie das logisch abläuft:

graph TD Raw[📄 Hochgeladenes Dokument] --> DBOS[🐘 DBOS Workflow startet] subgraph DauerhaftePipeline ["Dauerhafte Ingestion-Pipeline"] DBOS -->|Schritt 1| Hash{Hash-Prüfung SHA-256} Hash -->|Unverändert| Skip[Verarbeitung überspringen] Hash -->|Neu / Geändert| Extract[✂️ Schritt 2: Text pro Dokument extrahieren] Extract --> Chunk[Chunking: 1000 Zeichen, 100 Überlappung] Chunk -->|Schritt 3, 5er-Batches| Embed[🔢 embeddinggemma Embeddings] Embed -->|Schritt 4| Save[(💾 FAISS Index + Metadaten JSON)] end Save -->|Workflow abgeschlossen| Done[✅ Bereit für die Suche]

(Ein Detail für die Neugierigen: Die per Checkpoint gesicherten Schritte sind der Scan, die Extraktion pro Dokument, jeder Embedding-Batch und das Speichern. Das Chunking dazwischen ist schnelle, reine Python-Arbeit, also läuft es einfach als Teil des Workflow-Körpers erneut — es mit einem Checkpoint zu versehen, würde mehr kosten, als es neu zu machen.)


Was kommt als Nächstes?

Indem wir die Ingestion-Pipeline in DBOS verpacken, verwandelt sich das System von einem anfälligen Skript in eine robuste Zustandsmaschine (State Machine) auf Produktionsniveau.

Jetzt, da unsere Daten sicher eingelesen sind, wie deployen wir diese gesamte Pipeline, ohne die GPU unseres Laptops zum Schmelzen zu bringen? Lies Teil 3: Warum wir Ollama nicht in Docker packen

Du kannst die DBOS-Implementierung auch direkt in der Datei backend/services/ingest.py im CogniVault-Repository erkunden.


Anhang: Abkürzungen in diesem Beitrag

AbbreviationFull formMeaning
DBOSDatabase-Oriented Operating SystemEine Bibliothek, die Workflow-Schritte in einer Datenbank sichert, sodass abgestürzte Jobs fortgesetzt statt neu gestartet werden
SHA-256Secure Hash Algorithm, 256-bitEine Fingerabdruck-Funktion: Jede Datei wird auf einen einzigartigen 64-Zeichen-Hash abgebildet; änderst du ein Byte, ändert sich der Hash komplett
PDFPortable Document FormatDas Dokumentenformat, dessen Text (und Scans) die Pipeline extrahiert
FAISSFacebook AI Similarity SearchMetas Vektorsuch-Bibliothek — wo die Embeddings tatsächlich leben
JSONJavaScript Object NotationDas Textformat, das für die Chunk-Metadaten-Datei neben dem FAISS-Index verwendet wird
AIArtificial IntelligenceSoftware, die Aufgaben ausführt, für die normalerweise menschliche Intelligenz erforderlich ist
GPUGraphics Processing UnitDie Hardware, die lokale Modell-Inferenz schnell macht — das Thema von Teil 3