logo
Entwicklung
Suchen
Dreidimensionales Gedächtnissystem

Dreidimensionales Gedächtnissystem

Überblick

Das Gedächtnissystem des Arbeitsbereichs verwendet eine dreidimensionale Architektur und speichert und verwaltet Wissen in den drei Dimensionen Konto, Unternehmen und Sitzung. Das Gedächtnis ist tief in die Konversation integriert – bei jeder Konversation werden relevante Erinnerungen abgefragt und in den Kontext eingespeist, und nach jedem Interaktionsdurchgang werden automatisch neue Erinnerungen extrahiert.

Technische Grundlage: mem0 REST API + Neo4j-Wissensgraph.


Dreidimensionale Architektur

Dimension Geltungsbereich Schreibweise Verwaltungsrechte Konversationseinspeisung
Kontoebene userId (organisationsübergreifend) Manuelles Hinzufügen + automatische Extraktion aus der Konversation Vom Benutzer selbst verwaltet „Benutzerprofil" wird in den System-Prompt eingespeist
Unternehmensebene orgId (organisationsisoliert) Manuelle Pflege durch Administrator Nur Administratoren des Arbeitsbereichs „Unternehmensprofil" wird in den System-Prompt eingespeist
Sitzungsebene runId (einzelne Sitzung) Automatische Extraktion in jedem Durchgang Automatisch verwaltet Semantische Abfrage innerhalb der Sitzung

Gedächtnis auf Kontoebene

  • Organisationsübergreifende Freigabe: An userId gebunden, in allen Organisationen des Benutzers verfügbar
  • Schreibweise:
    • Manuell: Über die Gedächtnisverwaltungsoberfläche oder per Befehl in der Konversation hinzufügen
    • Automatisch: In der Konversation werden merkenswerte Informationen automatisch erkannt
  • Verwaltungsoberfläche: APP-Einstellungen → Gedächtnis
  • Detaillierte Dokumentation: Gedächtnisverwaltung

Gedächtnis auf Unternehmensebene

  • Organisationsisolation: An orgId gebunden, nur für Mitglieder der aktuellen Organisation sichtbar
  • Verwaltungsrechte: Nur Administratoren des Arbeitsbereichs können es pflegen
  • Verwaltungsoberfläche: Bereichsverwaltung → Erweiterte Einstellungen → Unternehmensgedächtnis
  • Detaillierte Dokumentation: Erweiterte Einstellungen – Unternehmensgedächtnis

Gedächtnis auf Sitzungsebene

  • Einzelne Sitzung: An runId gebunden, nur innerhalb der aktuellen Sitzung gültig
  • Extraktion in jedem Durchgang: Nach jedem Konversationsdurchgang werden automatisch Erinnerungen analysiert und extrahiert
  • Keine Verwaltung erforderlich: Das System verarbeitet dies automatisch

Mechanismus der Gedächtnisextraktion

Explizite Befehle (Konfidenz 0,99)

Der Benutzer fordert den Agent direkt auf, Informationen zu merken oder zu vergessen:

Aktion Auslöse-Schlüsselwörter
Gedächtnis hinzufügen „merken", „notieren", „Gedächtnis speichern", „im Gedächtnis speichern", „remember", „store in memory"
Gedächtnis löschen „Gedächtnis löschen", „vergiss", „vergessen", „forget this", „remove from memory"

Implizite Erkennung (Konfidenz 0,5–0,93)

Das System erkennt persistente Fakten in der Konversation automatisch über reguläre Ausdrucksmuster:

Signaltyp Beispiel Konfidenz
Persönliches Profil „Ich heiße Zhang San", „Ich bin Frontend-Entwickler", „my name is" 0,93
Persönlicher Besitz „Ich habe eine Katze", „Ich halte", „I own" 0,90
Persönliche Präferenz „Ich verwende gerne TypeScript", „I prefer" 0,88
Assistentenstil „Bitte antworte künftig auf Chinesisch", „always use", „Präferenz für das Antwortformat" 0,86

Konfidenzschwellen

Modus Schwellenwert Beschreibung
strict 0,85 Konservativer Modus, extrahiert nur Erinnerungen mit hoher Konfidenz
standard (Standard) 0,65 Ausgewogener Modus
relaxed 0,50 Aggressiver Modus, mehr Inhalte werden gemerkt

Automatische Ausschlussregeln

Die folgenden Inhalte werden nicht als Erinnerungen extrahiert:

  • Reine Fragen (mit Fragezeichen endend, mit Fragewort beginnend)
  • Smalltalk/Begrüßungsfloskeln
  • Inhalte in Codeblöcken
  • Zeitkritische/zeitgebundene Informationen (Datum, Nachrichten, temporäre Zustände)
  • Nicht persistente Themen (Bug-Berichte, Fehlermeldungen)

Wissensgraph

Backend-Speicherung (Neo4j)

Gedächtnisbeziehungen werden in Form von Tripeln in der Neo4j-Graphdatenbank gespeichert:

(source Entität) --[relationship]--> (target Entität)
                      
                      (source Entität) --[relationship]--> (target Entität)

                    
Dieser Codeblock im schwebenden Fenster

N-Hop-Nachbarschaftsabfrage (1–4 Hops):

MATCH path = (n {name: $entity})-[*1..depth]-(m) WHERE ALL(node IN nodes(path) WHERE node.user_id = $user_id) UNWIND relationships(path) AS rel RETURN source, relationship, target
                      
                      MATCH path = (n {name: $entity})-[*1..depth]-(m)
WHERE ALL(node IN nodes(path) WHERE node.user_id = $user_id)
UNWIND relationships(path) AS rel
RETURN source, relationship, target

                    
Dieser Codeblock im schwebenden Fenster

Die Cypher-Abfrage stellt sicher, dass niemals Benutzergrenzen überschritten werden.

Frontend-Visualisierung

Verwendung von react-force-graph-2d zur Darstellung eines kräftegerichteten Graphen:

Knotentyp Farbe Beschreibung
Hub Violett #6d28d9 Zentraler Knoten von Benutzer/Organisation
Fact Blau #2563eb Gedächtniseintrag
Entity Bernsteinfarben #f59e0b (Standard) Extrahierte Entität; die konkrete Farbe wird per djb2-Hash auf eine 10-Farben-Palette abgebildet

Optimierung des Graph-Renderings (Update 2026-04) NEW

Die neue Version des Graphen führt zwei Dichte-Schwellenwerte ein, um zu vermeiden, dass sich bei zu vielen Knoten die Beschriftungen überlappen:

Schwellenwert-Konstante Wert Bedeutung
PILL_READABILITY_MIN_SCALE 1.5 Bei einer Skalierung kleiner als 1,5x werden keine Textbeschriftungen gerendert
PILL_MIN_SCREEN_AREA_PER_NODE 3000 Wenn die Bildschirmfläche pro Knoten weniger als 3000 Pixel beträgt, werden keine Beschriftungen gerendert

Erst wenn beide Bedingungen gleichzeitig erfüllt sind, werden Beschriftungen angezeigt. Andernfalls werden nur Punkte gerendert.

Stabilisierung der Entity-Type-Farben:

  • Über den djb2-Hash wird der Entitätstyp → Farbindex berechnet
  • Entitäten desselben Typs behalten in verschiedenen Ansichten und zu verschiedenen Zeitpunkten stets dieselbe Farbe
  • Die 10-Farben-Palette unterstützt die zyklische Wiederverwendung für unbegrenzt viele Typen

Bug-Fix: Bei der Zuordnung der Graphbeziehungen wurden die Felder sourceTypes / targetTypes zuvor verworfen, sodass alle Knoten auf die graue Fallback-Farbe zurückfielen. Dieser Bug wurde behoben (siehe sidecar/src/mem0Service.ts).

Mehrstufiges Drill-down

Durch Klicken auf einen Knoten lassen sich dessen zugehörige Entitäten aufklappen und das Wissensnetz Schicht für Schicht vertiefen. Die Graph-Engine unterstützt:

  • neighborhood() – N-Hop-Nachbarschaftsabfrage
  • shortestPath() – kürzester Pfad zwischen zwei Entitäten
  • extractEntitiesFromText() – Extraktion von Entitätsnamen aus Text

Zusammenspiel von Gedächtnis und Konversation

Zeitpunkte der Gedächtnisabfrage

Zeitpunkt Aktion
Neue Konversation Abfrage des Kontoprofil-Gedächtnisses + Unternehmensprofil-Gedächtnisses, Zusammenfügen im System-Prompt
Benutzer sendet Nachricht Das Werkzeug memory_query ruft relevante Erinnerungen semantisch ab
Grapherweiterung searchWithGraphExpansion – semantischer Abruf + 1-Hop-Grapherweiterung, gibt relevante Entitäten und Kanten zurück

Einspeiseposition des Gedächtnisses

Im System-Prompt werden zwei Gedächtnisprofile eingespeist:

Du bist der GPTBots-KI-Assistent... ## Benutzerprofil - Der Benutzer ist Frontend-Entwickler - Bevorzugt die Verwendung von TypeScript - ... ## Unternehmensprofil - Das Unternehmen verwendet den React-Technologie-Stack - Projektcode Project Alpha - ...
                      
                      Du bist der GPTBots-KI-Assistent...

## Benutzerprofil
- Der Benutzer ist Frontend-Entwickler
- Bevorzugt die Verwendung von TypeScript
- ...

## Unternehmensprofil
- Das Unternehmen verwendet den React-Technologie-Stack
- Projektcode Project Alpha
- ...

                    
Dieser Codeblock im schwebenden Fenster

Gedächtniswerkzeuge

Der Agent kann über die folgenden Werkzeuge aktiv Erinnerungen abfragen und verwalten:

Werkzeug Aktion Beschreibung
memory_query list / search / graph_traverse Auflisten, semantische Suche, Graphdurchlauf
memory_manage add / update / delete Erinnerungen hinzufügen, ändern, löschen
conversation_search search Historische Konversationen durchsuchen
recent_chats list Aktuelle Konversationen auflisten

Kontoübergreifende Gateway-Isolation NEW

Wenn ein Knoten mit Enterprise-Geltungsbereich kontoübergreifend aufgerufen wird:

  • Gedächtnis auf Kontoebene (userId-gebunden): ❌ nicht zugänglich
  • Gedächtnis auf Unternehmensebene (orgId-gebunden): ✅ zugänglich
  • Gedächtnis auf Sitzungsebene (innerhalb dieser Sitzung): ✅ zugänglich

Über das Flag isRemoteSession wird in der Abfragephase von mem0Service eine zwangsweise Filterung durchgesetzt – kontoübergreifende Aufrufe können die persönlichen Erinnerungen des Eigentümers des Zielknotens nicht lesen.

Designziel: Schutz der persönlichen Privatsphäre bei gleichzeitiger uneingeschränkter kollaborativer Freigabe von Wissen auf Organisationsebene. Siehe Multi-Knoten-Architektur.


mem0-Fähigkeiten

Das Gedächtnis-Backend bietet auf Basis von mem0 die folgenden Automatisierungsfähigkeiten:

Fähigkeit Beschreibung
Automatische Aktualisierung Neue Informationen überschreiben alte Informationen (z. B. „Ich mag Python" → „Ich mag TypeScript")
Automatisches Zusammenführen Ähnliche Erinnerungen werden zu einem vollständigeren Eintrag zusammengeführt
Automatisches Vergessen Bei widersprüchlichen Informationen werden alte Versionen automatisch bereinigt

Timeout-Schutz

Aktion Timeout
Gedächtnisabfrage/-verwaltung 25 Sekunden
Operationen des Gedächtnisses auf Sitzungsebene 5 Sekunden (schnelles Timeout, blockiert die Konversation nicht)
Abruf von Graphbeziehungen 3 Sekunden (nach Timeout elegantes Herabsetzen)

Was das für den Benutzer bedeutet

Das Gedächtnissystem ermöglicht es dem Agent, „dich zu kennen". Ohne Gedächtnis ist der Agent bei jeder Konversation wie ein Fremder beim ersten Treffen; mit Gedächtnis kennt der Agent deine Präferenzen, deinen Projekthintergrund und deine Arbeitsgewohnheiten.

Wie sich die drei Dimensionen in der Praxis zeigen:

  • Kontogedächtnis: „Du hast gesagt, du magst TypeScript" → Der Agent verwendet in den Konversationen aller Organisationen bevorzugt TypeScript
  • Unternehmensgedächtnis: Der Administrator hat „Das Unternehmen verwendet die PostgreSQL-Datenbank" hinzugefügt → Wenn alle Mitglieder der Organisation mit dem Agent über Datenbanken sprechen, empfiehlt der Agent standardmäßig eine PostgreSQL-Lösung
  • Sitzungsgedächtnis: Du sagst in dieser Konversation „Das aktuelle Projekt heißt Project Alpha" → In dieser Konversation merkt sich der Agent das, in einer neuen Konversation nicht unbedingt

So kannst du das Gedächtnis verwalten:

  • Für persönliche Präferenzen: Sage in der Konversation „Merke dir, dass ich das Dark-Theme bevorzuge", oder füge es unter APP-Einstellungen → Gedächtnis manuell hinzu
  • Für Unternehmenswissen: Wende dich an den Administrator, damit es unter Bereichsverwaltung → Erweiterte Einstellungen → Unternehmensgedächtnis hinzugefügt wird
  • Wenn du feststellst, dass eine Erinnerung falsch ist: Sage in der Konversation „Vergiss die frühere Präferenz zu Python", oder lösche sie direkt in der Gedächtnisverwaltung
  • Vorhandene Erinnerungen ansehen: Unter APP-Einstellungen → Gedächtnis kannst du die Liste und den Graphen durchsehen

Verwandte Dokumentation