Freigeben über


Neo4j-Speicheranbieter

Der Neo4j-Speicheranbieter bietet Agent Framework-Agents beständigen Speicher, der von einem Wissensdiagramm unterstützt wird. Im Gegensatz zu RAG-Anbietern, die aus statischen Wissensdatenbanken Informationen abrufen, speichert der Memory-Anbieter Interaktionen mit Agenten und ruft diese ab, indem er automatisch Entitäten extrahiert und im Laufe der Zeit einen Wissensgraph erstellt.

Der Anbieter verwaltet drei Speichertypen:

  • Kurzfristiger Speicher: Aufgezeichnete Unterhaltungen und aktueller Kontext
  • Langzeitspeicher: Entitäten, Präferenzen und Fakten, die aus Interaktionen extrahiert werden
  • Reasoning memory: Vergangene Argumentationsspuren und Werkzeugnutzungsmuster

Gründe für die Verwendung von Neo4j für den Agent-Speicher?

  • de-DE: Wissensgraphpersistenz: Erinnerungen werden als verbundene Entitäten gespeichert, nicht als flache Datensätze, sodass der Agent über Beziehungen zwischen Dingen nachdenken kann, die er sich erinnert.
  • Automatische Entitätsextraktion: Unterhaltungen werden ohne manuelles Schemadesign in strukturierte Entitäten und Beziehungen analysiert.
  • Sitzungsübergreifende Erinnerung: Einstellungen, Fakten und Ablaufspuren bleiben sitzungsübergreifend verfügbar und werden automatisch über Kontextanbieter bereitgestellt.

Hinweis

Neo4j bietet zwei separate Integrationen für Agent Framework. Dieser Anbieter (neo4j-agent-memory) dient für beständigen Speicher – Speichern und Zurückrufen von Agentinteraktionen, Extrahieren von Entitäten und Erstellen eines Wissensdiagramms im Laufe der Zeit. Informationen zu GraphRAG aus einem vorhandenen Wissensdiagramm mit Vektor-, Volltext- oder Hybridsuche finden Sie im Neo4j GraphRAG-Kontextanbieter.

Dieser Anbieter ist noch nicht für C# verfügbar. Beispiele für die Verwendung finden Sie auf der Registerkarte Python.

Voraussetzungen

  • Eine Neo4j-Instanz (selbst gehostet oder Neo4j AuraDB)
  • Ein Azure AI Foundry-Projekt mit einem bereitgestellten Chatmodell
  • Ein OpenAI-API-Schlüssel oder eine Azure OpenAI-Bereitstellung (für Einbettungen und Entitätsextraktion)
  • Umgebungsvariablen gesetzt: NEO4J_URI, NEO4J_PASSWORD, FOUNDRY_PROJECT_ENDPOINT, FOUNDRY_MODEL, OPENAI_API_KEY
  • Konfigurierte Azure CLI-Anmeldeinformationen (az login)
  • Python 3.10 oder höher

Installation

pip install neo4j-agent-memory[microsoft-agent]

Verwendung

import os
from pydantic import SecretStr
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from azure.identity.aio import AzureCliCredential
from neo4j_agent_memory import MemoryClient, MemorySettings
from neo4j_agent_memory.integrations.microsoft_agent import (
    Neo4jMicrosoftMemory,
    create_memory_tools,
)

# Pass Neo4j and embedding configuration directly via constructor arguments.
# MemorySettings also supports loading from environment variables or .env files
# using the NAM_ prefix (e.g. NAM_NEO4J__URI, NAM_EMBEDDING__MODEL).
settings = MemorySettings(
    neo4j={
        "uri": os.environ["NEO4J_URI"],
        "username": os.environ.get("NEO4J_USERNAME", "neo4j"),
        "password": SecretStr(os.environ["NEO4J_PASSWORD"]),
    },
    embedding={
        "provider": "openai",
        "model": "text-embedding-3-small",
    },
)

memory_client = MemoryClient(settings)

async with memory_client:
    memory = Neo4jMicrosoftMemory.from_memory_client(
        memory_client=memory_client,
        session_id="user-123",
    )
    tools = create_memory_tools(memory)

    async with AzureCliCredential() as credential, Agent(
            client=FoundryChatClient(
            credential=credential,
            project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
            model=os.environ["FOUNDRY_MODEL"],
        ),
        instructions="You are a helpful assistant with persistent memory.",
        tools=tools,
        context_providers=[memory.context_provider],
    ) as agent:
        session = agent.create_session()
        response = await agent.run("Remember that I prefer window seats on flights.", session=session)

Wichtigste Funktionen

  • Bidirektional: Ruft automatisch relevanten Kontext vor dem Aufruf ab und speichert neue Erinnerungen nach Antworten.
  • Entitätsextraktion: Erstellt ein Wissensdiagramm aus Unterhaltungen mithilfe einer mehrstufigen Extraktionspipeline
  • Einstellungslernen: Leitet Benutzereinstellungen über Sitzungen hinweg ab und speichert sie.
  • Speichertools: Agents können Arbeitsspeicher explizit durchsuchen, Einstellungen speichern und Entitätsverbindungen suchen

Ressourcen

Nächste Schritte