HyperAIHyperAI

Command Palette

Search for a command to run...

So baut man eine benutzerdefinierte LLM-Gedächtnisschicht von Grund auf auf

Ein benutzerdefiniertes Gedächtnissystem für LLMs von Grund auf zu bauen, ist entscheidend, um kontinuierliche, personalisierte Interaktionen in Chatanwendungen zu ermöglichen. Da LLMs grundsätzlich zustandslos sind, verlieren sie bei jedem neuen Aufruf jegliches Kontextwissen – was für personalisierte Chatbots problematisch ist. Dieser Artikel zeigt, wie man ein einfaches, aber leistungsfähiges Gedächtnissystem auf Basis der Mem0-Architektur implementiert, das aus vier Kernkomponenten besteht: Extraktion, Embedding, Abruf und Pflege. Zunächst werden aus dem Gesprächsverlauf atomare Fakten extrahiert, etwa „Benutzer bevorzugt Tee“ oder „Benutzer spielt Fußball“. Dazu wird DSPy eingesetzt, um strukturierte Ausgaben aus unstrukturierten Texten zu generieren. Die Extraktion erfolgt durch eine Signature, die als Systemprompt fungiert und die LLMs anweist, nur relevante, selbstständige Fakten zu extrahieren. Diese Fakten werden anschließend in Vektoren umgewandelt, wobei das Modell text-embedding-3-small mit 64-dimensionalen Vektoren verwendet wird, um Kosteneffizienz und Geschwindigkeit zu gewährleisten. Die Vektoren werden in QDrant gespeichert – einer schnellen, kostenlos nutzbaren Vector-Datenbank mit Unterstützung für hybride Filter (z. B. nach Benutzer-ID). Jeder Speicherpunkt enthält Metadaten wie user_id, memory_text und date, was eine effiziente, benutzerbasierte Suche ermöglicht. Beim Abruf der Gedächtnisinhalte wird ein ReAct-Agent (Reasoning and Acting) eingesetzt. Dieser entscheidet autonom, ob ein neuer Suchvorgang erforderlich ist. Wenn der LLM denkt, dass Kontext fehlt, ruft er eine Funktion auf, die den aktuellen Gesprächsbeitrag in einen Suchvektor umwandelt und die am nächsten liegenden Gedächtnisse aus QDrant abruft. Dies geschieht nur dann, wenn tatsächlich relevante Informationen benötigt werden – ein entscheidender Punkt für Effizienz. Die Pflege des Gedächtnisses ist der kritischste Teil. Das System muss nicht nur neue Erkenntnisse speichern, sondern auch veraltete oder widersprüchliche Informationen aktualisieren oder löschen. Dazu wird ein zweiter ReAct-Agent eingesetzt, der entscheidet, ob eine neue Erkenntnis hinzugefügt, ein bestehendes Gedächtnis aktualisiert, gelöscht oder ignoriert werden soll. Diese Entscheidung basiert auf dem Vergleich neuer und vorhandener Fakten – etwa wenn ein Benutzer sagt „Ich mag Tee“, später aber „Ich mag Tee nicht mehr“. Der Agent erkennt den Widerspruch und löscht/aktualisiert entsprechend. Die Architektur ist modular und optional: Kein Schritt wird automatisch ausgeführt. Stattdessen verlässt sich der Agent auf die Intelligenz des LLMs, um die richtigen Werkzeuge (z. B. fetch_similar_memories, add_memory) zu nutzen. Dies macht das System flexibel, skalierbar und leicht anpassbar. Bewertung & Perspektive: Experten loben den Ansatz als praxisnahes Beispiel für Context Engineering, das über reine Prompting hinausgeht. Die Kombination aus DSPy, ReAct und QDrant zeigt, wie moderne LLM-Anwendungen kontextuell, dynamisch und personalisiert werden können. Die Architektur ist besonders für Anwendungen wie persönliche Assistenten, Kundenbetreuung oder Bildungsplattformen geeignet. Die Möglichkeit, Gedächtnis auf Graphen oder Dateisystemen zu speichern, eröffnet weitere Erweiterungsmöglichkeiten. Für Entwickler ist dies ein wertvoller Einstieg in die Welt der agilen, kontextbasierten Systeme – und ein klares Signal: Gedächtnis ist kein Feature, sondern eine zentrale Komponente moderner KI-Anwendungen.

Verwandte Links

So baut man eine benutzerdefinierte LLM-Gedächtnisschicht von Grund auf auf | Aktuelle Beiträge | HyperAI