Skip to content

创建mem0图关系查询测试demo #5

Description

@wangschang

mem0图关系查询测试demo

目标

创建一个完整的mem0测试演示程序,实现图关系的存储、查询和可视化输出功能。

功能需求

1. 基础功能

  • 使用mem0库建立知识图谱存储
  • 实现实体和关系的添加功能
  • 实现基于图结构的查询功能
  • 支持多种查询模式(节点查询、关系查询、路径查询)

2. 数据模型

  • 定义实体类型(人物、组织、地点、概念等)
  • 定义关系类型(工作于、位于、属于、相关等)
  • 支持属性存储(时间、权重、描述等)

3. 查询功能

  • 单节点查询:根据实体ID或名称查询
  • 关系查询:查询两个实体间的关系
  • 邻居查询:查询指定实体的所有相关实体
  • 路径查询:查询两个实体间的最短路径
  • 子图查询:根据条件提取子图

4. 输出功能

  • 文本格式输出(JSON、表格)
  • 图形可视化输出(使用networkx + matplotlib)
  • 交互式图形界面(可选:使用plotly或pyvis)

5. 测试数据

创建包含以下关系的测试数据集:

  • 人物关系网络
  • 公司组织架构
  • 地理位置关系
  • 知识概念图谱

技术栈

  • mem0: 核心记忆存储
  • networkx: 图数据结构和算法
  • matplotlib/plotly: 图形可视化
  • pandas: 数据处理
  • json: 数据序列化

文件结构

mem0_graph_demo/
├── main.py              # 主程序入口
├── graph_manager.py     # 图管理器
├── query_engine.py     # 查询引擎
├── visualizer.py       # 可视化模块
├── test_data.py        # 测试数据生成
├── requirements.txt    # 依赖包
└── README.md          # 使用说明

示例用法

# 创建图管理器
graph = GraphManager()

# 添加实体和关系
graph.add_entity("张三", "人物", {"年龄": 30, "职业": "工程师"})
graph.add_relation("张三", "工作于", "ABC公司")

# 查询功能
result = graph.query_neighbors("张三")
path = graph.find_path("张三", "李四")

# 可视化输出
visualizer = GraphVisualizer(graph)
visualizer.show_graph()

验收标准

  • 能够成功存储和检索图关系数据
  • 查询功能正确返回预期结果
  • 可视化输出清晰易读
  • 代码结构清晰,有完整的文档
  • 包含完整的测试用例

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions