Neo4j Agent Memory

Neo4j 实验室  ·  面向 AI 智能体的图原生内存

你的智能体总是“健忘”。
解决这个问题。

存储对话、构建知识图谱,并让你的智能体从自身的推理中学习——一切皆由 Neo4j 提供支持。

实验性 社区支持
pip install neo4j-agent-memory

三种内存类型,一个图数据库

大多数智能体内存系统只提供扁平的上下文窗口或简单的向量存储。Neo4j 智能体内存为你的智能体提供了三个独特的内存层——它们全部连接在一个知识图谱中。

短期内存

对话与经历

包含顺序消息链、会话管理、基于元数据的搜索和对话摘要的完整对话历史。

  • 语义消息搜索
  • 会话范围界定与列表
  • 元数据过滤
  • 基于大语言模型的摘要

长期内存

事实、实体与偏好

一个由实体(人、地点、组织)、偏好、事实和关系构成的知识图谱——自动从对话中构建。

  • POLE+O 实体分类
  • 实体去重
  • 时间事实有效期
  • 地理空间查询

推理内存

工具使用与推理轨迹

记录智能体如何解决问题——每一个思考、工具调用和结果——使其能够从过去的推理模式中学习。

  • 轨迹相似度搜索
  • 工具调用统计
  • 与消息关联的轨迹
  • 流式轨迹记录
async with MemoryClient(settings) as memory:
    # Short-term: store conversations
    await memory.short_term.add_message(session_id, "user", "Find Italian restaurants near me")

    # Long-term: build a knowledge graph
    await memory.long_term.add_entity("La Trattoria", "ORGANIZATION", subtype="COMPANY")

    # Reasoning: record how the agent solved problems
    trace = await memory.reasoning.start_trace(session_id, task="Restaurant search")
    await memory.reasoning.record_tool_call(step.id, "search_api", {"query": "Italian"}, results)
    await memory.reasoning.complete_trace(trace.id, outcome="Recommended La Trattoria", success=True)

    # Get unified context for LLM prompts
    context = await memory.get_context("restaurant recommendation", session_id=session_id)

独特之处

图原生,而非外挂式

从零开始基于 Neo4j 构建。实体、消息、轨迹和偏好都是节点和关系——而不是表中的行或向量存储中的块。通过一次遍历即可查询所有内存类型。

矢量 + 图 + 空间合一

同一个数据库中完成语义相似度搜索、图遍历和地理空间查询。无需单独的向量数据库、Redis 或 Postgres。按含义、关系或位置查找实体。

多阶段实体提取

在可配置的流水线中结合 spaCy、GLiNER2、GLiREL 和 LLM 提取器。支持 8 种领域模式(播客、新闻、医疗、法律……)。支持为 10 万+ token 的文档进行流式提取。

三层内存,紧密相连

短期对话为长期实体提取提供信息。推理轨迹回溯至触发消息。智能体能够理解发生了什么、它知道什么以及它是如何解决问题的

维基百科丰富信息与地理编码

实体会自动通过维基百科描述、图像和维基数据 ID 进行增强。位置实体获取地理空间查询所需的坐标。这一切都在后台完成。

框架中立

适用于 LangChain、PydanticAI、LlamaIndex 和 CrewAI。也可以直接使用客户端。选择你喜欢的智能体框架——内存层保持不变。

演示

全栈聊天智能体

一个新闻研究助手,它使用所有三种内存类型并提供交互式内存图谱可视化。双击节点可展开邻居并探索知识图谱。

带展开功能的内存图谱可视化
对话范围内的图谱过滤
双重 Neo4j 数据库(内存 + 新闻)

领域模式示例

针对不同领域的 8 种专业提取模式。了解 GLiNER2 领域模式如何通过类型描述和置信度调整提高实体提取的准确性。

播客 新闻 科学 商业 医疗 法律 娱乐 POLE+O

快速入门

pip install neo4j-agent-memory[openai]
import asyncio
from pydantic import SecretStr
from neo4j_agent_memory import MemoryClient, MemorySettings

async def main():
    settings = MemorySettings(
        neo4j={"uri": "bolt://:7687", "password": SecretStr("password")}
    )

    async with MemoryClient(settings) as memory:
        # Store a conversation
        await memory.short_term.add_message("user-123", "user", "I love Italian food!")

        # Build knowledge automatically
        await memory.long_term.add_preference("food", "Loves Italian cuisine", confidence=0.9)

        # Get combined context for your LLM
        context = await memory.get_context("restaurant recommendation", session_id="user-123")
        print(context)

asyncio.run(main())

实体提取流水线

spaCy 快速且免费
GLiNER2 零样本 NER
GLiREL 关系提取
LLM 高准确率
知识图谱 合并结果

在可配置的流水线中组合提取器。支持 5 种合并策略和 8 种领域模式。支持为 10 万+ token 的文档进行流式提取。

架构

                         ┌─────────────────────────────────────────────┐
                         │              MemoryClient                   │
                         ├───────────────┬──────────────┬──────────────┤
                         │  Short-Term   │  Long-Term   │  Reasoning   │
                         │  Memory       │  Memory      │  Memory      │
                         ├───────────────┴──────────────┴──────────────┤
                         │          Extraction Pipeline                 │
                         │  ┌───────┬─────────┬────────┬─────┐        │
                         │  │ spaCy │ GLiNER2 │ GLiREL │ LLM │        │
                         │  └───────┴─────────┴────────┴─────┘        │
                         ├─────────────────────────────────────────────┤
                         │        Neo4j Graph Database                  │
                         │   Nodes · Relationships · Vectors · Spatial │
                         └─────────────────────────────────────────────┘

需求

  • Python 3.10+

  • Neo4j 5.20+(建议安装 APOC 插件)

  • OpenAI API Key(用于嵌入和 LLM 提取)

© . This site is unofficial and not affiliated with Neo4j, Inc.