Skip to content

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

@wangschang

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()

验收标准

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

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