文章摘要
传统AIAgent的记忆管理通常采用将每轮对话转换为向量存入数据库,提问时按余弦相似度检索前几条结果的方式。这种黑盒方案存在两个明显缺陷:多任务并行时不同工作的上下文容易混杂;若Agent记错参数或后

传统AI Agent的记忆管理通常采用将每轮对话转换为向量存入数据库,提问时按余弦相似度检索前几条结果的方式。这种黑盒方案存在两个明显缺陷:多任务并行时不同工作的上下文容易混杂;若Agent记错参数或后台整理记忆时遗漏关键约束,用户既无法查看底层存储的内容,也无法一键回退到之前的状态。

最近开源的PilotDeck提供了一套白盒记忆方案,通过工作空间隔离不同记忆,支持人工修改和置顶操作;系统空闲时还会启动“梦境模式”,自动将零散的短期记录提炼合并为长期记忆,并支持随时回滚。不过,该方案默认使用本地Markdown文件存储记忆条目,依赖拷贝目录实现回滚,底层并未构建向量索引,无法满足大规模检索的需求。

为了让这套白盒记忆具备高效的向量检索能力,同时保留置顶排序、自动过期和快速回滚等特性,团队将其记忆结构迁移到了Milvus 3.0版本,成功跑通了完整的读写与快照回滚链路。本次实验重点验证该存储方案的可行性,涵盖四项核心测试方向:工作空间过滤与长文本存储、临时记忆自动过期、服务端多字段排序、合并出错时的快照回滚。

工作空间隔离与临时记忆自动过期

本次实验使用Milvus 3.0.1与PyMilvus 3.0.2,向量维度设为1024维,采用HNSW索引(COSINE距离度量)。创建集合时,将工作空间标识设为分区键,通过TIMESTAMPTZ类型配合集合属性开启记录级过期功能。

建表时有两个关键细节需注意:一是置顶状态字段使用INT8类型而非BOOL,因为服务端排序仅支持数值型和字符串,用1和0表示置顶状态可直接参与排序;二是长文本存储,单条记忆在64KB以内时用VARCHAR类型,超过则需开启StorageV3配置后使用TEXT类型。

测试时向指定工作空间写入三条数据:一条置顶规范、一条23KB的长文档、一条4秒后过期的临时记录。写入后立即查询返回三条结果,等待6秒后临时记录自动被过滤,仅保留两条长期记忆,无需额外定时脚本清理。

白盒面板检索与服务端排序

为测试多字段排序效果,向工作空间追加20条讨论碎片,其中一条设为置顶。通过查询接口传入排序规则,返回结果中置顶记忆优先排列,未置顶记录按置信度降序,置信度相同时按更新时间从新到旧排列,整个排序过程在服务端完成。

向量搜索路径的排序逻辑略有不同,仅对ANN向量召回的候选集做二次重排,而非全表排序。置顶记录需先进入候选集,才会出现在结果中,避免将语义无关的置顶结果强行排入。

若需统计各工作空间的有效记忆条数,可通过分组查询实现,直接获取不同工作空间的记忆数量。

梦境模式整合与快照回滚

梦境模式合并记忆时若出错,可通过Milvus 3.0的快照功能快速回滚。实验先写入10000条背景向量,启动梦境模式前创建快照,快照仅生成指向现有分区的元数据,未拷贝底层向量文件,耗时极短。

模拟合并出错的场景:写入错误归纳记忆并删除原有碎片,此时查询仅返回3条结果。通过快照回滚流程,将快照恢复到新集合,加载后切换业务别名,即可恢复原始22条记忆,错误记忆被彻底清除。

性能对比显示,快照回滚比传统重建索引快2.72倍,因为复用了现有数据段和索引文件,跳过了向量距离计算与建图过程,记忆库规模越大,优势越明显。

总结

将PilotDeck这类白盒记忆系统迁移到Milvus 3.0后,原本需要本地备份、定时清理和应用层排序的逻辑可整合到同一集合中:通过分区键隔离工作空间,通过TTL自动淘汰短期记忆,通过服务端排序和分组统计简化应用逻辑,通过快照实现快速回滚。对于需要长期运行、支持人工干预的AI Agent来说,Milvus 3.0不仅是向量检索组件,更是可靠的记忆存储底座。

以上内容不代表本平台立场,仅供读者参考