Neo4j 内存提供程序为代理框架代理提供知识图支持的持久内存。 与从静态知识库检索的 RAG 提供程序不同,内存提供程序存储并召回代理交互、自动提取实体并随时间推移生成知识图。
提供程序管理三种类型的内存:
- 短期记忆:对话历史记录和最近上下文
- 长期内存:从交互中提取的实体、首选项和事实
- 推理内存:过去的推理跟踪和工具使用模式
为什么将 Neo4j 用于代理内存?
- 知识图持久性:记忆存储为连接的实体,而不是平面记录,因此代理可以推理它记住的内容之间的关系。
- 自动实体提取:对话分析为结构化实体和关系,而无需手动架构设计。
- 跨会话召回:首选项、事实和推理痕迹会在不同会话间保持,并通过上下文提供者自动显现。
注释
Neo4j 为 Agent Framework 提供两个单独的集成。 此提供程序(neo4j-agent-memory)用于 持久内存 - 存储和召回代理交互、提取实体以及随时间推移生成知识图。 有关使用矢量、全文或混合搜索的现有知识图 中的 GraphRAG ,请参阅 Neo4j GraphRAG 上下文提供程序。
此提供程序尚不适用于 C# 。 有关用法示例,请参阅 Python 选项卡。
先决条件
- Neo4j 实例(自托管或 Neo4j AuraDB)
- 具有已部署聊天模型的 Azure AI Foundry 项目
- OpenAI API 密钥或 Azure OpenAI 部署(用于嵌入和实体提取)
- 环境变量集:
NEO4J_URI、、NEO4J_PASSWORDFOUNDRY_PROJECT_ENDPOINT、FOUNDRY_MODEL、OPENAI_API_KEY - 已配置 Azure CLI 凭据 (
az login) - Python 3.10 或更高版本
安装
pip install neo4j-agent-memory[microsoft-agent]
用法
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)
主要功能
- 双向:在调用之前自动检索相关上下文,并在响应后保存新内存
- 实体提取:使用多阶段提取管道从对话生成知识图
- 首选项学习:跨会话推断和存储用户首选项
- 内存工具:代理可以显式搜索内存、记住首选项和查找实体连接