MemPalace知识图谱完全指南:SQLite时间实体关系图入门与实践
MemPalace知识图谱完全指南:SQLite时间实体关系图入门与实践
【免费下载链接】mempalaceThe best-benchmarked open-source AI memory system. And it's free.项目地址: https://gitcode.com/GitHub_Trending/me/mempalace
MemPalace 是一款本地优先的开源 AI 记忆系统,它把对话原文完整存入本地,再用语义检索找回,零 API 调用、零订阅费。它内置的知识图谱基于 SQLite 构建:每条事实都带时间窗口(从何时为真,到何时失效),让你既能查"现在",也能回溯"过去"。这篇完全指南将带你从安装到实践,轻松上手这套时间实体关系图。
为什么 MemPalace 的知识图谱不一样?
大多数知识图谱方案依赖 Neo4j 或云端托管服务:要装数据库、要按月付费、数据还离开你的机器。MemPalace 的选择很简单——SQLite:
- 📦零依赖:一个
.sqlite3文件就是整个图谱,默认存放在~/.mempalace/knowledge_graph.sqlite3 - 🕐时间感知:每个三元组都有
valid_from → valid_to时间窗口,历史查询随时可查 - 🔒本地免费:所有数据留在磁盘上,无云、无 SLA、无合规负担
核心实现在 mempalace/knowledge_graph.py,官方概念文档见 website/concepts/knowledge-graph.md。
3 分钟入门:时间实体关系图存的是什么?
MemPalace 知识图谱存储的是带时间有效性的"三元组":
主体 → 关系 → 对象 [起始时间 → 结束时间] Kai → works_on → Orion [2025-06-01 → 至今]三条设计原则值得先理解:
- 事实有生命周期:某件事不再成立时,标记失效即可,历史记录依然存在
- 单值事实用"取代":比如换模型、换公司,旧值和新值在同一个精确时间点交接,不会出现查询时两条结果同时返回的歧义
- 可溯源:每条关系都能通过
source_closet链接回原始的逐字记忆
快速上手:从安装到第一条图谱
一键安装步骤
MemPalace 自带 CLI,推荐用uv隔离安装,避免依赖冲突:
uv tool install mempalace mempalace init ~/projects/myapp mempalace mine ~/projects/myapp首次运行需要下载本地嵌入模型(约 80MB),之后完全离线可用。
用 Python 添加和查询事实
from mempalace.knowledge_graph import KnowledgeGraph kg = KnowledgeGraph() kg.add_triple("Kai", "works_on", "Orion", valid_from="2025-06-01") kg.add_triple("Maya", "assigned_to", "auth-migration", valid_from="2026-01-15") kg.query_entity("Kai") # Kai 相关的一切 kg.query_entity("Maya", as_of="2026-01-20") # 2026 年 1 月为真的一切 kg.timeline("Orion") # 项目时间线让事实"过期"或"换代"
kg.invalidate("Kai", "works_on", "Orion", ended="2026-03-01") # 事实结束 kg.supersede("Kai", "uses_model", "gpt-4.1", "gpt-5.6", at="2026-07-20") # 单值换代supersede()会在一个事务内关闭旧事实、打开新事实,交接点上只返回新值——这是处理uses_model、works_at这类"当前值"关系的关键技巧。
时间旅行查询:这是最实用的能力
普通图谱只能回答"现在",时间实体关系图能回答任何时间点:
| 查询方式 | 回答的问题 | 示例 |
|---|---|---|
query_entity(名称) | 某实体当前所有关系 | Kai 现在在做什么? |
query_entity(名称, as_of=日期) | 某日期为真的关系 | 1 月 20 日 Maya 在忙什么? |
timeline(名称) | 实体的按时间排序故事 | Orion 项目的来龙去脉 |
kg.stats() | 图谱整体概览 | 多少实体、多少事实 |
细节实现(包括日期归一化、半开区间比较)见 knowledge_graph.py 的时序过滤逻辑,相关测试覆盖在 tests/test_knowledge_graph.py。
通过 MCP 工具:让 AI 助手直接操作图谱
MemPalace 的 MCP 服务器把知识图谱暴露为一组工具,你的 AI 编码助手可以直接读写图谱:
| 工具 | 用途 |
|---|---|
mempalace_kg_query | 按时间过滤查询实体关系 |
mempalace_kg_add | 添加事实 |
mempalace_kg_invalidate | 标记事实结束 |
mempalace_kg_supersede | 原子性地用一个当前值替换另一个 |
mempalace_kg_timeline | 实体时间线 |
mempalace_kg_stats | 图谱概览 |
完整参数说明见 website/reference/mcp-tools.md。配合记忆宫殿的翅膀/房间结构(人物和项目成为翅膀、话题成为房间),图谱检索还能按范围精确过滤,避免在无关项目中大海捞针——这套分层思路文档在 website/concepts/the-palace.md。
SQLite 存储解剖:两个表撑起整个图谱
整个图谱只有两张表,简单到你可以直接用 SQLite 工具打开查看:
entities表—— 实体节点(人、项目、工具、概念):
id:小写规范化名称name:展示名称type:person / project / tool / conceptproperties:JSON 扩展元数据
triples表—— 实体间关系:
subject → predicate → object:三元组本体valid_from/valid_to:时间窗口(NULL表示当前仍有效)confidence:0.0–1.0 置信度source_closet:回链到逐字记忆的来源
建表语句在 knowledge_graph.py,Python API 全量参考在 website/reference/api-reference.md。
常见问题
Q:需要额外的数据库吗?不需要。SQLite 随 Python 自带,图谱就是一个本地文件,备份即复制。
Q:和 Zep 这类商业方案比如何?Zep 的 Graphiti 同样是双时序模型,但它是基于 Neo4j 的托管服务,有定价和 SLA。MemPalace 的图谱 local-first、完全免费,适合个人和团队自托管。
Q:数据会上传到云端吗?不会。除非你主动选择,一切留在本机磁盘上。
结语
MemPalace 用最小的技术栈——SQLite + 时间窗口三元组——实现了商业方案才有的时间实体关系图。安装只要一条命令,图谱就能记住事实何时开始、何时结束、何时换代。如果你想要一个免费、本地、可回溯的 AI 知识图谱,这套方案值得现在就试一试:先uv tool install mempalace装好,再按上文三步建出你的第一条图谱。
【免费下载链接】mempalaceThe best-benchmarked open-source AI memory system. And it's free.项目地址: https://gitcode.com/GitHub_Trending/me/mempalace
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
