Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Zprostředkovatel paměti Neo4j poskytuje agentům Agent Framework trvalou paměť podporovanou grafem znalostí. Na rozdíl od poskytovatelů RAG, kteří načítají ze statických znalostních bází, poskytovatel paměti ukládá a odvolává interakce agentů, automaticky extrahuje entity a vytváří graf znalostí v průběhu času.
Poskytovatel spravuje tři typy paměti:
- Krátkodobá paměť: Historie konverzací a nedávný kontext
- Dlouhodobá paměť: Entity, předvolby a fakta extrahované z interakcí
- Paměť uvažování: Stopy uvažování a vzory použití nástrojů z minulosti
Proč používat Neo4j pro paměť agenta?
- Trvalost znalostních grafů: Vzpomínky se ukládají jako propojené entity, ne ploché záznamy, takže agent může mít důvod k vztahům mezi věcmi, které si pamatuje.
- Automatická extrakce entit: Konverzace se analyzují do strukturovaných entit a relací bez ručního návrhu schématu.
- Připomenutí napříč relacemi: Předvolby, fakta a stopy uvažování se uchovávají napříč relacemi a automaticky se zobrazí prostřednictvím zprostředkovatelů kontextu.
Poznámka:
Neo4j nabízí dvě samostatné integrace pro Agent Framework. Tento poskytovatel (neo4j-agent-memory) je určený pro trvalou paměť – ukládání a odvolávání interakcí agentů, extrahování entit a vytváření znalostního grafu v průběhu času. Pro použití GrafRAG z existujícího znalostního grafu pomocí vektorového, fulltextového nebo hybridního vyhledávání viz Neo4j GraphRAG Context Provider.
Poznámka:
Balíček .NET (AgentMemory) je nezávislý komunitní .NET port poskytovatele paměti Neo4j Labs – nejedná se o oficiální balíček Neo4j Labs. Informace o zdroji a podrobnostech najdete v úložišti AgentMemory (.NET).
Předpoklady
- Instance Neo4j (v místním prostředí nebo Neo4j AuraDB)
- Nasazení služby Azure OpenAI nebo Microsoft Foundry (chatovací model + embeddingový model)
- Proměnné prostředí nastaveny:
NEO4J_URI,NEO4J_USERNAME,NEO4J_PASSWORDaAZURE_OPENAI_ENDPOINT - přihlašovací údaje nakonfigurované v Azure CLI (
az login) nebo klíč API - .NET 8.0 nebo novější
Instalace
dotnet add package AgentMemory
dotnet add package AgentMemory.AgentFramework
Využití
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using AgentMemory;
using AgentMemory.Abstractions.Services;
using AgentMemory.AgentFramework;
using AgentMemory.AgentFramework.Tools;
var builder = Host.CreateApplicationBuilder(args);
// Registers Core + Neo4j infrastructure in one call (reads NEO4J_URI / NEO4J_USERNAME /
// NEO4J_PASSWORD, falling back to local-dev defaults). Passing configureLlm opts in to
// LLM-backed entity/fact/preference extraction, using the IChatClient registered below.
builder.Services.AddNeo4jAgentMemory(
configureMemory: _ => { },
configureNeo4j: neo4j =>
{
neo4j.Uri = Environment.GetEnvironmentVariable("NEO4J_URI") ?? "bolt://localhost:7687";
neo4j.Username = Environment.GetEnvironmentVariable("NEO4J_USERNAME") ?? "neo4j";
neo4j.Password = Environment.GetEnvironmentVariable("NEO4J_PASSWORD") ?? "password";
},
configureLlm: _ => { });
// Any Microsoft.Extensions.AI-compatible chat + embedding client works
var azureClient = new AzureOpenAIClient(
new Uri(Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT")!), new DefaultAzureCredential());
builder.Services.AddSingleton(azureClient.GetChatClient("gpt-4o-mini").AsIChatClient());
builder.Services.AddSingleton(azureClient.GetEmbeddingClient("text-embedding-3-small").AsIEmbeddingGenerator());
// AutoExtractOnPersist builds the knowledge graph from every conversation turn
builder.Services.AddAgentMemoryFramework(options =>
{
options.AutoExtractOnPersist = true;
options.ContextFormat.IncludeEntities = true;
options.ContextFormat.IncludeFacts = true;
options.ContextFormat.IncludePreferences = true;
});
using var host = builder.Build();
await using var scope = host.Services.CreateAsyncScope();
var services = scope.ServiceProvider;
// Bootstraps Neo4j schema/indexes on first run (idempotent)
await services.GetRequiredService<ISchemaBootstrapper>().BootstrapAsync();
var memoryProvider = services.GetRequiredService<Neo4jMemoryContextProvider>();
var memoryTools = services.GetRequiredService<MemoryToolFactory>().CreateAIFunctions();
// WithMemoryOwnerScoping wraps the whole invocation — recall, the tool-calling loop, and
// persistence — in the owner scope set by WithMemoryIdentity below, so no manual
// BeginOwnerScope call is needed around RunAsync.
AIAgent agent = services.GetRequiredService<IChatClient>().AsAIAgent(new ChatClientAgentOptions
{
ChatOptions = new ChatOptions
{
Instructions = "You are a helpful assistant with persistent memory.",
Tools = [.. memoryTools],
},
AIContextProviders = [memoryProvider],
}).WithMemoryOwnerScoping(services);
var session = (await agent.CreateSessionAsync())
.WithMemoryIdentity(userId: "user-123", sessionId: "session-1", applicationId: "my-app");
var response = await agent.RunAsync("Remember that I prefer window seats on flights.", session);
Klíčové funkce
-
Obousměrný:
Neo4jMemoryContextProviderpřipomíná relevantní paměť před každým spuštěním a udržuje novou paměť po – nevyžaduje ruční zapojení. -
Extrakce entit: Vytváří graf znalostí z konverzací s konfigurovatelným kanálem extrakce (
AutoExtractOnPersist) -
Učení preferencí: vyvozuje a ukládá uživatelské preference, fakta a entity, které se automaticky vyvolají zcela novým
AgentSessionpro stejného uživatele -
Paměťové nástroje:
MemoryToolFactoryzpřístupňujíAIFunction, aby model mohl explicitně vyhledávat, pamatovat si a znovu vybavovat informace -
Přednostně pro dependency injection: registrace pomocí
AddNeo4jAgentMemory(interně propojí Core a Neo4j) aAddAgentMemoryFramework, takže přirozeně zapadá do aplikací Generic Host a ASP.NET Core - Kromě rozhraní Agent Framework: Stejná knihovna se také integruje s klienty Sémantické jádro a MCP a zahrnuje integrovanou pozorovatelnost OpenTelemetry.
Zdroje
Předpoklady
- Instance Neo4j (v místním prostředí nebo Neo4j AuraDB)
- Projekt Azure AI Foundry s nasazeným modelem chatu
- Klíč rozhraní API OpenAI nebo nasazení Azure OpenAI (pro vkládání a extrakci entit)
- Proměnné prostředí nastavena:
NEO4J_URI,NEO4J_PASSWORD,FOUNDRY_PROJECT_ENDPOINT,FOUNDRY_MODEL,OPENAI_API_KEY - Nakonfigurované přihlašovací údaje Azure CLI (
az login) - Python 3.10 nebo novější
Instalace
pip install neo4j-agent-memory[microsoft-agent]
Využití
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)
Klíčové funkce
- Obousměrný: Automaticky načte relevantní kontext před vyvoláním a uloží nové vzpomínky po odpovědích.
- Extrakce entit: Vytvoří graf znalostí z konverzací pomocí kanálu extrakce s více fázemi.
- Učení předvoleb: Odvozování a ukládání uživatelských předvoleb napříč relacemi
- Nástroje pro paměť: Agenti můžou explicitně prohledávat paměť, pamatovat si předvolby a vyhledávat připojení entit.
Zdroje
Poznámka:
Podpora této funkce v Go již brzy. Nejnovější stav najdete v úložišti Agent Framework Go .