有文档依据的回答也可能过时
智能体回答附件上限为100 MB,引用真实且高度相关的文档,但文档宣布的是下月规则,今天上限80 MB。错误不一定是模型编造,也可能是记忆保留内容却丢失时间含义。如何让检索不把同一话题误当成适用于当前问题?
摘要。用两个轴构建记忆:事实何时有效,系统何时持有某版本。合成上传上限包含迟知的变化和未来公告。推导并在SQLite执行时间筛选,区分有支持、缺失与冲突。未运行语言模型或评价嵌入引擎,而是验证为智能体准备证据的确定性层。
两个日期回答两个不同问题
有效时间回答规则何时适用;知晓时间回答系统何时有此版本。设上限9月1日从50变80 MB,但9月3日才采集更新。9月2日现实与档案不一致。今天回顾当天有效规则得80,回顾智能体当时可读内容得50。两种重建都有用,但不能互换。
再加事件:9月20日采集到10月1日起100 MB的公告。最新入库文档说的是未来,因此总选最新时间戳也不能回答当前问题。名称、数值、文档均为教学合成,不是EL-AI限制或功能。MB是规则值,不是上传性能测量。
保留版本,不改写过去
每行保留标识、数值、来源、有效起止和知晓起止。半开区间含开始不含结束,使9月1日旧版结束、新版开始而不重叠。使用UTC午夜、按日粒度;真实系统须先选精度和时区。9999-12-31仅表示未知结束,并非千年有效承诺。
9月3日更新到达时保留旧快照并关闭其知晓区间;加入有效至9月1日的旧规则修正快照及80 MB规则。9月20日同理关闭80 MB无已知终点的快照,加入10月1日结束版本及未来规则。记录知识变化,追溯修正不能伪装成采集前已知。
筛选把问题变成四个比较
t是问题涉及日期,k是采用知识的截止日期。t落在有效区间且k落在知晓区间的行才合格。当前回答两者均为今天,审计则可能不同。分开参数可避免无意用后续更新评判系统过去能知道什么。
语义检索可识别话题,但相似度不替代时间约束。合成相关分给旧文本0.97、当前0.93、未来0.99。只排序选100 MB;先按9月29日筛选得80 MB。这些不是事实概率或嵌入模型输出,而是隔离不依赖特定语义引擎的选择错误。
| 有效日期t | 知晓日期k | MB值 | 解释 |
|---|---|---|---|
| 2026-09-29 | 2026-09-29 | 80 | current |
| 2026-08-20 | 2026-09-29 | 50 | historical |
| 2026-09-02 | 2026-09-29 | 80 | retrospective |
| 2026-09-02 | 2026-09-02 | 50 | known_then |
| 2026-10-02 | 2026-09-29 | 100 | announced_future |
| 2025-12-01 | 2026-09-29 | — | missing |
known_then表示9月2日档案说50,并非实际限制50。未来行表示公告10月1日起100,不表示今天允许100,也不保证公告必实施。无数据不是零。可靠自然语言回答应保留这些限定,而非只给模型裸数。
冲突不能靠取平均解决
加入同期间声称90 MB的第二来源,与80冲突。假定适用范围相同且无明确优先顺序,两者都通过筛选。收集不同值:无值是缺失,一个值是现有材料一致支持,多值是冲突。不能平均85,也不能因后入库就选90。优先级需明确来源权威或替代规则,而非为了总能回答。
supported不等于已认证真相,只表示现有相关合格行数值一致。两份副本非独立验证,权威源也会错,更新可能尚未到达。确定性检查需与证据信任分开。智能体应可表述现有来源报告,并提供来源、版本和参考日期。
从逻辑规则到执行查询
查询选择证据而非写回答。ORDER BY id保证复现顺序,不给来源排权威。参数应绑定而非拼接SQL。内存SQLite每次从相同五条合成行开始,再另加冲突。还检查边界:用9月3日知识查询8月31日得50、9月1日得80,直接验证结束端不包含。
直接扫描排序前需O(n)比较。大档案可索引实体键和区间,但实际成本由选择性与执行计划决定,本文未测性能。键还应包含产品、环境和适用范围,混合不同服务会制造假冲突。本例仅单服务以隔离时间;增加文档不能修复未建模范围。

智能体记忆也包括副本与摘要
更新可能修复主文档,却留下向量库旧片段、智能体摘要和缓存回答。若摘要丢失来源ID,就不知道需失效哪些对象。应保留哪个版本产生哪个片段摘要的派生关系。溯源不是真相,转换链不保证提取正确,却允许输入变化时重查。
W3C PROV Primer描述实体、修订、派生与生成时间;SQL Server文档说明FOR SYSTEM_TIME AS OF历史查询。两者均不替代应用定义的规则生效时间。本原型由程序显式管理双区间,SQLite不会自动维护。
检索还需覆盖问题。只取最相似文档再因未来而丢弃,可能在档案有当前规则时仍答缺失。最终选择前筛选或必要时扩候选能避免此损失,却不保证采集完整。对变化敏感的当前问题可能需直查权威源,本地检索成功不证明全局最新。
回答保留日期、来源与知识边界
应给智能体结构化对象,包含数值或状态、合格来源、所问有效日期及知识快照。冲突时列替代,缺失时再找证据或说明边界。生成文字仍需检查:正确筛选不能阻止模型省略10月1日起。可最终比对数值和时间限定与确定性对象;此扩展仅建议,未实现。
有用记忆不只保存说过什么,还保存何时适用、何时学到。相关性选话题,有效性选时期,溯源让重建可检查。本实验区分今天80、过去50及未来公告100 MB,无需语言模型猜哪个文档优先。
来源与可复现性
W3C — PROV Model Primer, Working Group Note, 30 April 2013, sections 2.6–2.9.
Microsoft — Query data in a system-versioned temporal table, AS OF and historical queries.
片段只展示一个知识快照,便于阅读有效性筛选。归档含双轴完整版本、五行、六问题、冲突和边界检查,均以Python和SQLite执行。未向外部模型发送数据。结果仅描述此确定性测试集,不代表智能体总体可靠性或EL-AI已提供功能。
records = [
dict(value=50, start='2026-01-01', end='2026-09-01'),
dict(value=80, start='2026-09-01', end='2026-10-01'),
dict(value=100, start='2026-10-01', end='9999-12-31'),
]
for date in ('2026-08-20', '2026-09-29', '2026-10-02'):
values = {r['value'] for r in records if r['start'] <= date < r['end']}
status = 'missing' if not values else ('conflict' if len(values)>1 else 'supported')
print(date, status, sorted(values))
# One knowledge snapshot only. Full archive implements both temporal axes in SQLite.
代码、数据与说明 · JSON. 教学计算使用 Python 3.14.0,图使用 Matplotlib 3.11.2。分析由 AI 辅助,不声称经过同行评审或人工审核。原创 ImageGen 封面仅作示意,不记录 EL-AI 人员、场所或实际安装。来源查阅于 2026 年 9 月 29 日。

