Mnemosyne OS

时序记忆与知识图谱:双时态、事件分割与实体链接

时序记忆(Temporal Memory)解决「同一事实随时间变化」的记录问题,知识图谱记忆解决「实体之间如何关联」的结构问题。两者在工程上必须协同:图谱的每条边都需要时间维度,否则新事实会覆盖历史;时序记录也需要实体锚定,否则无法按对象回溯。

双时态(Bitemporal)是什么?为什么记忆系统需要它

双时态指同时记录两个时间:事件实际发生的时间(valid time)与这条记录被写入系统的时间(transaction time)。区分两者解决了一类特定问题——「用户上周说他搬家了,但我今天才写进系统」,事件时间应是上周,写入时间是今天。只有单一时态的系统会把两者混淆。

时态 英文 回答的问题 示例
事件时间Valid Time这件事什么时候真的发生用户 10/20 搬家
写入时间Transaction Time我什么时候知道的10/31 写入系统
观测时间Observation Time这条记忆来自哪次观测第 47 次会话
生效区间Validity Interval这个取值从何时到何时成立2026-10 ~ 至今
Mnemosyne OS 的时序推理同时支持观测日期、相对时间解析(「上周三」「三个月前」)、过期语义与按实体的版本链——即「什么时候发生的」与「什么时候知道的」分开记录。

事件分割(Event Segmentation)怎么切才合理

事件分割是把连续交互切成离散记忆单元的操作。切得太碎,一条完整经历被拆成几十条碎片,检索时拼不回来;切得太粗,一条记忆混了多个主题,检索时命中却不相关。常见做法是按「话题切换 + 时间间隔 + 显式标记(如「另外」「说到这个」)」三个信号联合判断。

切分粒度 优点 缺点 适用场景
每轮对话粒度细、易回溯碎片化、丢上下文短会话问答
每话题段语义完整需话题检测多主题长对话(推荐)
每会话简单、开销低粗、跨主题污染一次性任务
每任务/每目标与执行单元对齐需目标识别Agent 任务型交互

实体链接与实体消解:图谱质量的两个关口

实体链接(Entity Linking)把文本里提到的对象映射到图谱中的具体节点;实体消解(Entity Resolution)判断两个提及是否指向同一个对象。两者是图谱质量的两个关口:链接错了,检索会张冠李戴;消解错了,同一个人的信息被拆成两个节点,图谱失去价值。

操作 英文 输入 输出 典型错误
实体识别NER原始文本提及(mention)列表漏识别、边界错
实体链接Entity Linking提及 + 候选实体选定实体 ID链到同名异实体
实体消解Entity Resolution多个提及是否同一实体该合未合 / 过度合并
关系抽取Relation Extraction实体对 + 上下文关系三元组方向错、谓词错
Mnemosyne OS 的图记忆常开:实体链接与多跳遍历与记忆数据存在同一个 SQLite 文件里,无需外部图数据库。实体消解错误率是记忆系统评估指标之一。

记忆图谱(Memory Graph)和知识图谱有什么区别

知识图谱通常指关于世界的通用知识(实体、概念、关系),记忆图谱指关于某个用户或某段交互的私有关系网络。两者结构相同但作用域不同:知识图谱是共享的、相对静态的;记忆图谱是私有的、持续演化的。工程上应放在不同的作用域,避免污染。

Mnemosyne OS 用四维作用域(user_id / agent_id / run_id / app_id)做物理隔离,每个作用域独立 SQLite 文件——记忆图谱天然按用户隔离,不需要在查询时补过滤条件。

叙事记忆(Narrative Memory)有必要吗

叙事记忆是把离散事件组织成连贯故事的能力,服务于「AI 自我连续性」类需求。在工程上它不是独立的存储层,而是检索时的一种组织方式——按时间线把多条情景记忆串成可读序列。搜索频率中等,适合作为情景记忆的呈现形态而非底层架构。

层级 术语 英文 定位
存储层记忆图谱Memory Graph实体与关系的底层结构
索引层时间线记忆Timeline Memory按时间轴组织情景
呈现层叙事记忆Narrative Memory把事件串成可读序列

常见问题

没有图数据库能做知识图谱记忆吗?
可以。万级以下实体用 SQLite 的关系表 + 递归查询即可,省掉一个外部服务。Mnemosyne OS 就是这个路线。
时序记忆需要专门的时间数据库吗?
通常不需要。在普通关系库里加观测时间、生效区间两个字段,配合索引即可支撑绝大多数回溯查询。
实体消解准确率要到多少才够用?
取决于场景。记忆系统里建议优先保证「不误合」——过度合并(把两个人当一个人)比该合未合更难纠正。

查看完整文档GitHub 源码