Recallbase / Blog / Architektur

Wie Recallbase intern funktioniert

Kein Vektor-Datenbank-Zoo, kein Graph-Server, kein Redis: Die komplette Gedächtnis-Schicht läuft auf einer einzigen Postgres-Instanz. Hier ist die Architektur – vom Session-Hook bis zum bi-temporalen Wissensgraphen.

Konstellation verbundener Punkte – die Gedächtnis-Architektur

Der Kreislauf: Beobachten → Verdichten → Laden

Beim Session-Start lädt ein Hook (oder der MCP-Server) einen kuratierten, hart gedeckelten Kontext: letzte Session-Zusammenfassungen, bestätigtes Wissen, offene Punkte. Beim Session-Ende wird die Session dokumentiert. Stürzt sie ab, greift nachts das Auto-Dreaming: Das serverseitig gesicherte Transkript wird per LLM nachverdichtet – morgens ist das Gedächtnis vollständig.

Eine Postgres statt drei Systeme

Sessions, Wissensgraph (Knoten + Kanten), Embeddings (pgvector) und Volltext-Indizes leben in derselben Datenbank. Das ist kein Sparzwang, sondern eine Architektur-Entscheidung: eine Transaktionsgrenze, ein Backup, eine Wahrheit – und Self-Hosting bleibt realistisch. Der Markt konvergiert gerade auf genau dieses Muster.

Suche: hybride Rank-Fusion

Jede Suche läuft doppelt: Volltext (deutsch gestemmt + exakter Fallback) und Vektor-Ähnlichkeit. Beide Listen werden per Reciprocal Rank Fusion zu einem Ranking fusioniert – fällt das Embedding aus, degradiert die Suche still zu reinem Volltext. Agenten bekommen zuerst einen kompakten Treffer-Index (IDs + Einzeiler) und holen Volltexte gezielt nach – das hält den Kontext klein und die Token-Rechnung niedrig.

Bi-temporales Wissen

Erkenntnisse werden nie gelöscht, sondern invalidiert: valid_from, invalidated_at, Nachfolger-Verkettung. Die Widerspruchs-Erkennung entwertet veraltete Fakten automatisch – der Agent lernt keine alten Fehler, und „was galt damals?“ bleibt abfragbar. Zusätzlich trägt jede Erkenntnis ihre Ereigniszeit (nicht nur die Speicherzeit) und ein „läuft noch?“-Flag.

Mandantentrennung als Datenbank-Gesetz

Row Level Security, fail-closed: Ohne gesetzte Identität liefert jede Abfrage null Zeilen – auch bei einem Bug in der Anwendungsschicht. Unauthentifizierte Flüsse (Registrierung, Passwort-Reset) laufen über schmale SECURITY-DEFINER-Funktionen. Die App-Rolle kann RLS nicht umgehen, selbst wenn sie wollte.

Ein Gedächtnis, viele Münder

Claude Code spricht über Session-Hooks, Cursor/Codex/Gemini/OpenCode über den lokalen MCP-Server, die Claude-App am Handy über den Remote-MCP-Konnektor – alle gegen dieselbe API, alle sehen denselben Stand.

Neugierig geworden? Kostenlos ausprobieren – 1 Projekt, voller Kreislauf.

Architektur gut gefunden?

Dann probier sie aus – Setup in 2 Minuten, 1 Projekt kostenlos.

Kostenlos starten