Suche/Langzeitgedächtnis für KI-Agenten mit Graph- und Vektorsuche bauen

Langzeitgedächtnis für KI-Agenten mit Graph- und Vektorsuche bauen

Nutze dies, wenn KI-Agenten Wissen über Sitzungen hinweg behalten sollen. Wandelt Dateien, URLs und Text in durchsuchbare Graph- und Vektordaten um, trennt die Daten jedes Nutzers mit Authentifizierung und macht Speicher und Modellanbieter austauschbar, ohne den Kerncode zu ändern.

Diese KI-Regeln verwenden
## Das Gedächtnis in Stufen vom Einlesen der Daten bis zur Suche aufteilen Lege einen eindeutigen Lebenszyklus für dauerhaftes Wissen fest: Übernimm Rohdateien, URLs oder Text in Datensätze; wandle das Material in Entitäten, Beziehungen, Abschnitte und Zusammenfassungen um; rufe relevantes Wissen mit einer ausgewählten Strategie ab; und ergänze den gespeicherten Graphen um zusätzlichen Kontext oder weitere Regeln. Halte diese Stufen unabhängig aufrufbar, aber in ihrer Zusammensetzung widerspruchsfrei. Die Aufnahme muss vor der Umwandlung dauerhafte Datensatz- und Dateneinträge anlegen. Die Umwandlung klassifiziert und unterteilt Inhalte, extrahiert strukturierte Beziehungen, fasst sie bei Bedarf zusammen und schreibt zueinander passende Graph- und Vektordarstellungen. Der Abruf muss die Autorisierung anwenden, bevor Ergebnisse zurückgegeben werden. Die Ergänzung muss Provenienz und Versionsmetadaten bewahren. ## Das System in Schichten teilen, damit der Kerncode Anbieter nie direkt aufruft Trenne versionierte API- oder SDK-Einstiegspunkte, Lebenszyklusfunktionen, die Ablaufsteuerung der Verarbeitungskette, die Aufgabenausführung, Domänenmodule, Infrastrukturadapter und externe Dienste. Abhängigkeiten sollten durch diese Schichten nach unten weisen, damit Domänenverhalten nicht unmittelbar anbieterspezifische Zugriffsprogramme einbindet. Stelle atomare Graphkonzepte ausdrücklich dar: Knoten oder Datenpunkte tragen stabile Kennungen, Typen, Beschreibungen, Versionen und Metadaten; Kanten tragen Quelle, Ziel und Beziehungstyp; Tripel stellen Subjekt-Prädikat-Objekt-Fakten dar. Nutze eine Behälterstruktur für Wissensgraphen, um zusammengehörige Knoten- und Kantensammlungen zwischen Extraktion, Speicherung und Abruf zu übertragen. ## Pipelines aus kleinen Aufgaben bauen und jede Suchstrategie ausdrücklich wählen Stelle Verarbeitungsschritte als kombinierbare Aufgaben dar, die nacheinander oder parallel ausgeführt werden können, sofern ihre Datenabhängigkeiten dies zulassen. Eine Verarbeitungskette sollte Klassifizierung, Abschnittsextraktion, strukturierte Graphextraktion, Zusammenfassung und Speicherung als getrennte Einheiten sichtbar machen, damit Fehler und Wiederholungsversuche auf ihren jeweiligen Bereich beschränkt bleiben. Leite Suchvorgänge über einen ausdrücklich festgelegten Strategietyp. Unterstütze Graphdurchläufe mit Vervollständigung, durch Zusammenfassungen gestützten Graphkontext, Tripelabruf, vektorielle und lexikalische Abschnittssuche, Dokumentzusammenfassungen, zeitbezogenen Abruf, die Umwandlung natürlicher Sprache in strukturierte Abfragen, direkte Graphabfragen und bei ausreichender Begründung die automatische Strategiewahl. Alle Strategien müssen denselben Autorisierungsfilter und einen stabilen Ergebnisvertrag verwenden. ## Speicher- und Modellanbieter hinter Schnittstellen legen, damit sie austauschbar sind Definiere getrennte Schnittstellen für Graph-, Vektor- und relationale Speicher. Wähle konkrete Systeme über Fabriken aus, damit lokale Voreinstellungen, entfernte Dienste und Produktionsdatenbanken ausgetauscht werden können, ohne Domänenaufgaben zu verändern. Belasse anbieterspezifische Verbindungslogik, Fähigkeitsprüfungen und Fehler für nicht unterstützte Vorgänge im Adapter. Verwende dieselbe Grenze für Sprachmodelle, Einbettungssysteme, Rahmenwerke für strukturierte Ausgaben, Dateilader und Objektspeicher. Die Konfiguration wählt eine Implementierung; der Domänencode nutzt die Schnittstelle. Wenn einem Speichersystem eine Fähigkeit wie direkte Graphabfragen oder eine Abrufart fehlt, lehne den Vorgang ausdrücklich ab, statt unbemerkt auf ein Verhalten mit anderer Semantik zurückzufallen. ## Authentifizierung immer verlangen, wenn die Daten jedes Nutzers getrennt werden Modelliere den Zugriff als Kette vom Benutzer über den Datensatz zu den Daten und erzwinge Lese-, Schreib-, Lösch- und Freigabeberechtigungen vor dem Graph- oder Vektorabruf. Trenne den Speicher, soweit unterstützt, nach Benutzer und Datensatz, damit Filterfehler nicht das Wissen eines anderen Mandanten offenlegen können. Behandle die Zugriffssteuerung des Speichersystems und die API-Authentifizierung als gemeinsame Sicherheitsvorkehrung. Das Aktivieren der Mandantentrennung muss Authentifizierung voraussetzen; eine ausdrückliche Einstellung zum Abschalten der Authentifizierung darf eine aktive Zugriffssteuerung nicht außer Kraft setzen. Ein gemeinsam genutzter Speicher für einen einzelnen Benutzer ist ein bewusst gewählter, eigenständiger Modus. Gib ein leeres Ergebnis zurück, statt die Existenz nicht zugänglicher Datensätze offenzulegen, und bewahre zugleich genügend interne Diagnoseinformationen für autorisierte Betreiber. ## Sprachmodell und Einbettungen als Paar einrichten und Produktionseinstellungen gemeinsam prüfen Konfiguriere den Sprachmodell- und den Einbettungsanbieter als Paar. Ist nur einer festgelegt, kann eine implizite Voreinstellung für den anderen zu fehlenden Zugangsdaten, inkompatibler Tokenisierung oder unerwarteten externen Aufrufen führen. Prüfe beim Start beide Anbieter, Endpunkte, Modelle, den Modus für strukturierte Ausgaben und die Ratenbegrenzungen. Bewahre Geheimnisse in einer umgebungsvariablengestützten Konfiguration auf und stelle optionale Integrationen über zusätzliche Installationspakete oder Funktionsgruppen bereit. Lokale Voreinstellungen können dateibasierte relationale, Vektor- und Graphspeicher nutzen; für den Produktionseinsatz müssen jedoch Speicherpfade, Berechtigungen für Fernanfragen, lokaler Dateizugriff, die Berechtigung für Rohabfragen, Authentifizierung, Mandantentrennung und dauerhafter Objektspeicher gemeinsam geprüft werden. ## Neue Speicher oder Suchstrategien über feste Registrierungspunkte hinzufügen Füge Fähigkeiten am engsten geeigneten stabilen Erweiterungspunkt hinzu: Implementiere eine Aufgabe und registriere sie in einer Verarbeitungskette, implementiere eine Speicherschnittstelle für ein neues Speichersystem, ergänze die Anbieterkonfiguration hinter der Modellvermittlungsschicht, erweitere Dokumentlader um ein neues Format, registriere eine Abrufstrategie oder definiere ein Graphmodell, das den gemeinsamen Datenpunktvertrag erweitert. Halte bei der ontologiegestützten Extraktion den Auflöser, die Ontologiequelle und die Abgleichsstrategie konfigurierbar. Prüfe vor der Speicherung, ob extrahierte Entitätstypen und Beziehungen dem ausgewählten semantischen Rahmen entsprechen. Neue Erweiterungen müssen erforderliche Abhängigkeiten, unterstützte Fähigkeiten, Konfigurationsfelder und das Verhalten bei Fehlern angeben. ## Jede Komponente und den ganzen Weg vom Einlesen bis zur Suche testen Ordne Tests nach Einheitenverhalten, Integrationsgrenzen, Befehlszeilen- oder API-Einstiegspunkten und aufgabenspezifischem Verhalten. Jede Funktionalität benötigt gezielte Tests; Speicheradapter, Modellvermittlungsschichten und andere Integrationen benötigen dagegen Grenztests mit realistischen Konfigurationen und Fehlerantworten. Unterhalte mindestens einen vollständigen Integrationspfad von der Aufnahme über die Umwandlung bis zum Abruf, einschließlich asynchroner Ausführung und Autorisierungsfilterung. Teste jede öffentliche asynchrone Funktion durch direktes Abwarten oder mit einem Ausführungswerkzeug für die Ereignisschleife. Führe Prüfungen der Testabdeckung, statische Codeprüfungen sowie Formatierungs- und Typprüfungen gemäß den Vorgaben des Repositoriums aus und richte die Tests an der Schichtenstruktur des Quellcodes aus. ## Zuerst die Konfiguration prüfen und leere Suchergebnisse von Fehlern unterscheiden Untersuche Konfigurationsfehler, bevor du die Logik der Verarbeitungskette änderst. Prüfe die aufeinander abgestimmten Modell- und Einbettungseinstellungen, den Modus für strukturierte Ausgaben, die Kompatibilität des Tokenisierers, Datenbank-URLs und Zugangsdaten, die Verfügbarkeit der Dienste und die Ratenbegrenzungen. Mache die Ausweichlogik zwischen Anbietern sichtbar, damit eine unvollständige Konfiguration nicht unbemerkt einen unbeabsichtigten entfernten Dienst auswählt. Unterscheide ein leeres autorisiertes Ergebnis von einem Übertragungs- oder Analysefehler. Nach Berechtigungen gefilterte Suchen dürfen die Existenz von Datensätzen nicht offenlegen; Verbindungsfehler sollten den Adapter und die fehlgeschlagene Voraussetzung benennen; Fehler durch Ratenbegrenzungen sollten den Zeitpunkt für einen erneuten Versuch angeben; Fehler strukturierter Ausgaben sollten den konfigurierten Extraktionsmodus benennen. Verwende strukturierte Protokolle und optionale Diagnoseinstrumentierung, protokolliere jedoch niemals Zugangsdaten oder sensible abgerufene Inhalte.