我们差点上线一个时间感知知识图谱,最终被一条评测拦下。这条评测只断言一件事:在时间 T,智能体应当报告 T 时刻真实存在的状态。结果它失败了 41%——图谱里存的事实没错,只是把错误时间窗口的事实交给了智能体。
时间知识图谱(TKG)的思路本身很好:把三元组变成四元组,给每条事实加上 valid_from 和 valid_to,让智能体记忆从扁平向量变成带时间结构化的记录。理论上,陈旧事实不再是靠相似度猜测,而是变成可过滤的条件。问题出在检索层:生成的查询按 valid_from 倒序取最新一条,从不按参考时间过滤。智能体在推理 03:00 的故障时,05:00 记录的"online"状态会被当作答案返回。事实是真的,时间戳是真的,只是来自错误的窗口。
更隐蔽的是,静态评测全部通过。RAGAS 式忠实度检查只验证答案是否基于检索上下文——它确实基于了,只是基于了错误的时间切片。图谱没错、schema 没错、数据没错,错在检索查询丢了时间过滤,而评测套件里没有任何测试能发现这一点。
修复检索只加了一个 WHERE 子句:先过滤 valid_from <= T 且 valid_to > T 的边,再排序取第一条。真正重要的修复是让参考时间成为 query_state 的必填参数,没有它直接报错;同时把时间窗口和参考时间一起传给模型,让它有机会发现不匹配。
这次没上线图谱,上线的是那条评测。图谱从来不是风险点,风险在于差点信任一个从未被问对问题的系统。给智能体做时间记忆,先写时间回归测试,再写图谱本身。
@DevToolboxHub
