文章摘要
本文指出AI智能体现有全量记录、重度概括的记忆设计存在局限,不同场景下单独使用知识库或原始文档检索各有优劣,据此提炼记忆存储边界原则,提出四层记忆架构,Milvus 3.0通过实体级检索解决了检索粒度与模型推理需求不匹配的矛盾。

全量记录和重度概括的信息处理方式,存在明显局限。不久前,某AI研究团队发布的一份研究中提到值得关注的现象:经过精心设计的知识库或智能体记忆模块,信息检索准确率有时反而不如直接查询原始文档;而给模型塞入过多原始信息,同样会导致检索准确率大幅下滑。

在需要整合多份文档的综合任务中,整理后的知识库优势明显:比如在涉及多份材料的问答场景里,整理后的知识库得分可达87%,直接检索原始文档仅为73%。但在另一些场景中,整理后的知识库并未带来收益:比如仅需从单份文档找答案的法律任务里,提前生成的知识库没有提升效果。还有部分法律任务中,整理后的知识库体积甚至比原始文档更大,说明这种整理未实现有效压缩。在企业知识库场景中情况相反:仅用知识库准确率仅48%,直接检索原始文档达53%,两者结合则提升至61%,每道题还能节省约2万token资源。

由此引出系列问题:既然全量记录和重度概括都有不足,智能体该如何存储信息?记忆出错该如何修正?又该如何与原始文本检索配合?

信息存储的误区:全量记录与过度概括的弊端

先看过度记录的问题:研究者让某款智能体运行一款游戏,提供可自由读写的记忆目录。当运行到约10000步时,不同版本智能体表现差异明显。其中一款保存了大量变化的游戏状态,但之前记录的信息很快失效,随着文件增加,它花在查找维护记忆上的精力越来越多,甚至在第10000步附近,新建第四个记忆文件夹,后续17步里新建6个文件、删除9个,却未执行任何游戏操作——记录整理本身挤占了任务时间。

再看离线整理文档的情况:该研究团队使用大量内部原始文件,让另一款智能体通过多轮离线会话构建修订带交叉链接的知识库。在25道测试题中,随着整理会话从2次增至128次,仅靠知识库答题准确率从13%升至48%,但仍低于直接检索原始文档的53%——说明整理提升了知识库可用性,但无法完全替代原始检索。

在模拟法律与企业并购测试中,研究者观察到不同结果:跨文档综合的并购问答里,知识库有优势;单文档检索的法律任务里,知识库无收益;部分任务中整理后的知识库体积超原始文档,未实现压缩;还有并发写入问题:多个智能体同时向共享表格写入条款摘要,出现概括差、遗漏、互相覆盖问题,最终仅覆盖72%评分事实,改为每份合同单独建页、单个智能体写入并保留关键条款后,覆盖率达100%。

值得存储的信息:明确存储边界

从这些案例可提炼原则:优先存储后续可能反复使用、重新获取或推导成本高的信息;对随时可读取且不断变化的状态,减少重复记录。

比如游戏场景中,当前金钱、位置等状态可从画面读取,重复写入会产生冗余和过期信息;而当前目标、路线计划以及模型总结的策略,若不保存可能在新会话中丢失。

部分智能体的记忆组织体现了这一原则:顶层文件保存当前目标、计划和规则,目录存路线计划,子目录存游戏策略。例如,某智能体连续失败后调整操作时序捕获目标,记下这一经验作为后续参考;另一款智能体也采用类似方式,维护小型记忆目录并持续更新目标,最终完成游戏。

此外,能否将经历转化为可靠规则,还与模型验证猜想的能力有关。在某数据库问答任务中,模型答题后可将答案写入记忆供后续使用,测试发现提示词作用因模型而异:对部分模型,明确提醒读取记忆和验证猜想能提升得分;对另一些模型,仅说明记忆可用就足够。若规定“只记录失败”,部分模型从记忆中获得的收益会减少。因此,对尚不稳定的模型,明确引导可能有效;对能力较强的模型,保留选择空间比预设狭窄规则更合适。

记忆错误的修正与检索:四层记忆架构的价值

模型在会话中写下的记忆可能从一开始就错误,若后续继续使用,错误会反复影响决策。比如在某游戏路段,智能体因错误记录地标方位,陷入死循环,多次掉下同一跳台,最终未能通过该路段。

针对这种情况,研究团队引入离线整理机制,让模型将记忆笔记与底层原始会话日志逐条核对,修正方位错误后,后续顺利通过该路段。这也引出四层记忆使用方法:顶层预加载控制在200行以内,仅放目录索引;中间层的知识库需与原始文档搜索联合使用,两者结合能提升准确率并节省token;知识库的作用是提供跨文档导航线索,定位具体文档后仍需回到原始文本获取准确细节。

落地价值:解决检索与推理的矛盾

在生产实践中,知识库通常需与原文配合使用,并保留明确关联:摘要用于概括记忆,原文保留具体细节,两者同时检索,即使某个细节未进入摘要,也可从原文找到。此外,检索场景存在矛盾:检索的匹配粒度是文本片段,但模型推理需要完整语义的原始记录。

比如询问故障处置方案时,检索会命中子片段,但孤立片段无法判断是否适用,完整的处置要求承载在整条工单记录中。若将子片段独立入库,会导致召回分布倾斜,上层应用需额外处理逻辑获取多元参考。

某向量数据库的相关组件解决了这类矛盾:将完整记录作为顶层实体,内部嵌套子片段、向量等属性,实体级检索算子让全部子向量参与打分,但返回的是完整实体,上层可按需读取内部原文,组装成完整上下文交付给模型。

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