Zugang aus Übersee: www.kdjingpai.com
Ctrl + D Lesezeichen für diese Seite

DiffMem ist ein leichtgewichtiges Speicher-Backend, das für KI-Intelligenzen und konversationelle Systeme entwickelt wurde. Es verwendet innovativ Git als Kern des Speichers und speichert KI-Speicher als für Menschen lesbare Markdown-Dateien. Die Commit-Historie von Git wird verwendet, um die Entwicklung von Erinnerungen im Laufe der Zeit zu verfolgen, während das System einen speicherinternen BM25-Index zum schnellen und interpretierbaren Abrufen von Informationen einsetzt. Bei diesem Projekt handelt es sich derzeit um einen Proof of Concept (PoC), mit dem untersucht werden soll, wie ein Versionskontrollsystem zum Aufbau einer effizienten und skalierbaren Speichergrundlage für KI-Anwendungen verwendet werden kann. DiffMem behandelt den Speicher als eine versionierte Wissensbasis: der "aktuelle Stand" des Wissens wird in editierbaren Dateien gespeichert, während historische Änderungen in Git-Commit-Graphen gespeichert werden. Dieses Design ermöglicht es Intelligenzen, einen kompakten, aktuellen Wissensstand abzufragen, während sie gleichzeitig in der Lage sind, bei Bedarf in die Entwicklung der Speicher einzutauchen.

Funktionsliste

  • Git-gesteuerte SpeichersystemeGit: Verwenden Sie die Versionskontrollfunktionen von Git, um die Entwicklung der KI-Speicher zu verwalten und zu verfolgen, wobei jede Speicheraktualisierung einem Git-Commit entspricht.
  • Human-lesbares FormatMemories werden als einfache Markdown-Dateien gespeichert, die Entwickler direkt lesen, bearbeiten und verwalten können.
  • Aktueller Stand SchwerpunktStandardmäßig wird nur der "aktuelle Stand" von Wissensdokumenten indiziert und durchsucht, was den Umfang von Abfragen reduziert und die Abfrageeffizienz und Token-Ökonomie im Kontext von Large Language Models (LLMs) verbessert.
  • Differential Evolution Tracking: durchgit diffund anderen Befehlen kann der intelligente Körper effizient bestimmte Informationen im Laufe der Zeit abfragen, ohne eine komplette Historie laden zu müssen.
  • Schnelle TextsucheBM25-Index: Ein speicherinterner BM25-Index sorgt für schnelle Antworten im Millisekundenbereich bei der Stichwortsuche.
  • modulare KomponenteDas System besteht aus mehreren Kernmodulen, darunter das Modul, das für die Analyse der Dialoge und die Übermittlung der Aktualisierungen zuständig ist写入智能体verantwortlich für die Integration des Abfragekontexts der上下文管理器sowie die mit der Durchführung der Suche beauftragten Personen搜索智能体.
  • Leichtgewichtig und einfach zu integrierenGeringe Projektabhängigkeiten, keine Notwendigkeit, einen separaten Server bereitzustellen, und kann als Python-Modul direkt in bestehende Projekte integriert werden.

Hilfe verwenden

DiffMem ist so konzipiert, dass es als einfaches Python-Modul ohne komplexe Serverimplementierung importiert werden kann. Im Folgenden finden Sie eine detaillierte Beschreibung der Installation und Verwendung.

Vorbereitung und Installation der Umgebung

  1. Klonen der Codebasis
    Zunächst muss sie von GitHub geklont werdenDiffMemdas Quellcode-Repository auf Ihren lokalen Computer. Öffnen Sie ein Terminal oder ein Befehlszeilentool und geben Sie den folgenden Befehl ein:

    git clone https://github.com/Growth-Kinetics/DiffMem.git
    

    Nach der Ausführung wird die Codebase in eine Datei im aktuellen Verzeichnis mit dem NamenDiffMemim Ordner des

  2. Wechseln Sie in das Projektverzeichnis
    ausnutzencdBefehl in den Projektordner:

    cd DiffMem
    
  3. Installieren von Abhängigkeiten
    DiffMem benötigt zur Ausführung eine Reihe von Python-Bibliotheken, die in der Dokumentationrequirements.txtin der Datei. Sie können diepipum sie zu installieren:

    pip install -r requirements.txt
    ```    这个命令会自动下载并安装`gitpython`、`rank-bm25`和`sentence-transformers`等必要的库。
    
  4. Einstellen des API-Schlüssels
    DiffMem erfordert die Verwendung von Large Language Models (LLMs), um zusammenzuarbeiten, z. B. um den Inhalt von Gesprächen zu analysieren. Das Projekt verwendet OpenRouter, um LLM-Aufrufe zu verwalten. Sie müssen Ihren API-Schlüssel in einer Umgebungsvariablen festlegen.
    Für Linux- oder macOS-Systeme verwenden Sie dieexportBefehl:

    export OPENROUTER_API_KEY='你的密钥'
    

    Für Windows-Systeme verwenden Sie diesetBefehl:

    set OPENROUTER_API_KEY='你的密钥'
    

    bitte angeben你的密钥Ersetzen Sie ihn durch Ihren eigenen gültigen API-Schlüssel.

Kernfunktion Betrieb

Die Hauptfunktionalität von DiffMem wird durch dieDiffMemoryKlasse ist für den Benutzer sichtbar. Sie können diese Klasse initialisieren und dann ihre Methoden zum Lesen, Schreiben und Abfragen des Speichers aufrufen.

  1. Initialisierung der Speicherbank
    Zunächst müssen Sie dieDiffMemoryKlasse und initialisieren Sie sie mit einem lokalen Pfad. Dieser Pfad wird als Git-Repository dienen, in dem der Speicher gespeichert wird.

    from src.diffmem import DiffMemory
    # 初始化记忆库,指定仓库路径、用户名和API密钥
    # 如果路径不存在,系统会自动创建一个新的Git仓库
    memory = DiffMemory(
    repo_path="/path/to/your/memory_repo",
    user_name="alex",
    api_key="你的OpenRouter密钥"
    )
    

    Im obigen Code ist die/path/to/your/memory_repoErsetzen Sie ihn durch den Pfad zu dem Ordner, in dem Sie Ihre Erinnerungen speichern möchten.

  2. Bearbeitung und Übermittlung von Erinnerungen
    Sie können einen Teil des Dialogs oder des Sitzungsinhalts an dieprocess_and_commit_sessionDie Schreibintelligenz von DiffMem analysiert den Text automatisch, um Entity-Informationen zu extrahieren oder zu aktualisieren, und speichert diese Änderungen dann in einem einzigen Git-Commit.

    # 假设你有一段新的对话内容
    conversation_text = "今天和妈妈一起喝了咖啡,她提到下周要去旅行。"
    session_id = "session-12345" # 为这次会话指定一个唯一的ID
    # 处理并提交这次会话的记忆
    memory.process_and_commit_session(conversation_text, session_id)
    print("记忆已成功处理并提交。")
    

    Bei der Ausführung wird das relevante Wissen in der Markdown-Datei aktualisiert und ein neuer Git-Commit-Datensatz erzeugt, wobei die Commit-Nachricht die Session-ID enthält.

  3. Kontext erhalten
    Wenn es an der Zeit ist, mit der KI zu interagieren, können Sie dieget_contextMethode, um relevante Hintergrundinformationen für den aktuellen Dialog zu erhalten. Diese Methode unterstützt verschiedene "Tiefen"-Parameter, um den Grad der Detailliertheit der Informationen zu steuern.

    • depth="basic":: Zugang zu den wichtigsten Informationsblöcken.
    • depth="wide"Semantische Suche: Führen Sie eine semantische Suche durch, um mehr relevante Informationen zu erhalten.
    • depth="deep"Rückgabe des vollständigen Inhalts der mit der Abfrage verbundenen Datei.
    • depth="temporal"Git: Gibt zeitliche Informationen über den Verlauf von Git zurück.
    # 假设当前的对话是关于“妈妈的旅行计划”
    current_conversation = "妈妈的旅行计划定了吗?"
    # 获取深度上下文
    context = memory.get_context(current_conversation, depth="deep")
    # 将获取到的上下文信息打印出来
    print("获取到的相关上下文:")
    print(context)
    

    Dieser Kontext kann in das LLM eingespeist werden, um genauere und kontextbezogenere Antworten zu generieren.

  4. Direkte Durchführung von Suchvorgängen
    Sie können auch einfach diesearchMethode zum Abrufen von Informationen aus der Speicherbank.

    query = "关于妈妈的信息"
    search_results = memory.search(query)
    print(f"关于 '{query}' 的搜索结果:")
    for result in search_results:
    print(f"- {result}")
    

Beispielcode zur Ausführung

In der Projektbeschreibungexamples/Eine vollständige Demodatei zur Verwendung ist im Verzeichnisusage.py. Sie können es direkt ausführen, um den gesamten Arbeitsablauf von DiffMem zu beobachten.
Führen Sie den folgenden Befehl im Terminal aus:

python examples/usage.py

Dieses Skript demonstriert, wie die Speicherbank initialisiert wird, wie neue Speicher übertragen werden und wie der Kontext auf der Grundlage neuer Dialoginhalte abgerufen wird, wobei die gesamte DiffMem-Kette von der Nachrichteneingabe bis zur Ausgabe gezeigt wird.

Anwendungsszenario

  1. Persönlicher KI-Assistent
    Persönliche KI-Assistenten können mit Langzeitspeicherfunktionen ausgestattet werden. Assistenten können sich an Benutzerpräferenzen, vergangene Gespräche, wichtige Daten und Ereignisse erinnern. Da sich die Erinnerungen im Laufe der Zeit weiterentwickeln, kann der Assistent genau abrufen, "was wir letzte Woche besprochen haben" oder "wie alt meine Tochter jetzt ist", da er sich nur auf den jüngsten Stand der Informationen konzentriert und gleichzeitig einen historischen Überblick behält.
  2. KI-Systeme, die kontinuierlich lernen müssen
    In Bereichen wie Kundenservice und technischem Support müssen KI-Intelligenzen ständig neues Produktwissen und Geschäftsprozesse erlernen.DiffMem kann die Entwicklung dieses Wissens aufzeichnen. Wenn eine Bedienungsanleitung aktualisiert wird, speichert das System die neue Version und protokolliert die Änderungen über die Git-Historie. So wird sichergestellt, dass die KI immer die genauesten Informationen liefert und die historische Version eines jeden Wissenspunkts nachvollziehen kann.
  3. Multi-Intelligenz-Zusammenarbeit
    In einem Multi-Intelligenz-System können verschiedene Intelligenzen denselben DiffMem-Speicher gemeinsam nutzen. Durch die Verzweigungs- und Zusammenführungsanforderungsmechanismen von Git können die Intelligenzen bei der Aktualisierung des gemeinsamen Wissens und der Lösung möglicher "Speicherkonflikte" zusammenarbeiten, um einen konsistenten, versionierten Teamspeicher zu bilden.
  4. Interpretierbarkeit und Fehlersuche
    KI kann sich für Entwickler manchmal wie eine "Black Box" verhalten, und DiffMem verbessert die Interpretierbarkeit von KI-Speicherdaten erheblich, indem es sie als für Menschen lesbaren Text und Git-Commit-Historie speichert. Entwickler können den Code so überprüfen, als wäre ergit logim Gesang antwortengit diffZu sehen, was die KI "gelernt" hat und "wie sich das Wissen verändert hat", ist sehr hilfreich bei der Fehlersuche im Verhalten und Entscheidungsprozess der KI.

QA

  1. Wie unterscheidet sich DiffMem von herkömmlichen Vektordatenbanken?
    Vektordatenbanken werden in erster Linie für die Ähnlichkeitssuche von hochdimensionalen Daten verwendet, wobei Informationen (z. B. Text) in Vektoren umgewandelt und gespeichert werden und dann ähnliche Inhalte durch Berechnung des Abstands zwischen den Vektoren gefunden werden. DiffMem hingegen verfolgt ein völlig anderes Konzept, das sich nicht auf Vektoreinbettungen stützt, sondern Speicher als versionierte Textdokumente verwaltet. Die Stärke von DiffMem liegt in der Fähigkeit, Informationen im Zeitverlauf zu verarbeiten und Änderungen eines Fakts (z. B. das Alter einer Person, das sich von 9 auf 10 Jahre geändert hat) eindeutig nachzuvollziehen, wohingegen Vektordatenbanken bei dieser Art von "Faktenaktualisierungen" möglicherweise veraltete und verrauschte Informationen zurückbehalten.
  2. Warum sollten Sie Git als Backend-Technologie wählen?
    Die Wahl fiel auf Git, weil es eine ausgereifte und leistungsstarke Lösung für die Verwaltung von Dokumenten in Versionen darstellt. Die Vorteile von Git passen gut zu den Anforderungen des KI-Gedächtnisses: Es unterstützt natürlich die Verfolgung von Änderungen (diff), Aufzeichnung der Geschichte (log), zurück zu einem beliebigen Zeitpunkt (checkout) und Filialverwaltung (branch). Außerdem wird Git verteilt und die Daten werden in einfachen Dateien gespeichert, wodurch das Repository in hohem Maße portabel und beständig ist und nicht auf proprietäre Formate angewiesen ist.
  3. Ist DiffMem für Produktionsumgebungen geeignet?
    Derzeit handelt es sich bei DiffMem um ein Proof of Concept (PoC)-Projekt, und die Autoren haben deutlich gemacht, dass es noch nicht für Produktionsumgebungen gehärtet wurde. Es hat einige Einschränkungen, wie z. B. die Notwendigkeit einer manuellen Fernsynchronisierung von Git (push/pull), der Mechanismus zur Fehlerbehandlung ist relativ einfach, und es gibt keinen Sperrmechanismus für den gleichzeitigen Zugriff mehrerer Benutzer. Daher sind vor dem direkten Einsatz in groß angelegten kommerziellen Anwendungen weitere Entwicklungen und Tests erforderlich.
  4. Welches sind die wichtigsten Software-Abhängigkeiten, die zur Ausführung von DiffMem erforderlich sind?
    DiffMem ist ein leichtgewichtiges Projekt mit folgenden HauptabhängigkeitenGitPythonBibliothek (für die Bearbeitung von Git-Repositories in Python),rank-bm25Bibliothek (für die Implementierung effizienter Algorithmen zur Textsuche) und diesentence-transformers(zur Unterstützung semantisch verwandter Suchfunktionen).
0Lesezeichen
0Gelobt

Empfohlen

Sie können keine AI-Tools finden? Versuchen Sie es hier!

Geben Sie einfach das Schlüsselwort Barrierefreiheit Bing-SucheDer Bereich KI-Tools auf dieser Website bietet eine schnelle und einfache Möglichkeit, alle KI-Tools auf dieser Website zu finden.

Neue Veröffentlichungen

zurück zum Anfang

de_DEDeutsch