如何对记忆进行分类、索引和召回?
未标记
考查重点:记忆类型与作用域检索。按事实/偏好/事件/经验分类,带主体来源时效建结构/向量索引,当前任务过滤检索并处理冲突
本题目录
参考答案
核心回答
先把两个分类维度分开:短期与长期描述信息跨多久、在哪个会话范围使用;事实、偏好、事件和做事方法描述内容本身。原始记录负责留证,结构化记忆负责维护可信状态,检索索引负责按当前任务找到相关信息。 它们可以分层,但不必固定成三种数据库或三层架构。
每条长期记忆至少关联主体、适用范围、来源、时间与状态。召回时先按用户、租户、项目和可见权限限定范围,再结合关键词、语义及时间条件检索,最后处理冲突与过期信息,只把当前任务需要的内容送进模型。
不同内容怎样存
用户明确表达的偏好和已核实的项目事实适合结构化字段;一次故障的操作过程适合事件记录,并链接原始轨迹;跨任务可复用的方法可以形成受版本管理的流程或 Skill。当前对话的工具结果与未完成计划则可能只需要保存在任务状态中。
不要把“情节记忆”限定为一定只存在单会话,也不要把“语义记忆”理解成一定只能用向量库。类型与具体存储形式不是同一层概念。
索引和召回如何协作
元数据索引处理主体、实体、有效期和状态;关键词检索适合精确名称、编号和路径,向量检索补充不同表述的相近含义。有明确关系推理需求时再引入图索引,不能只为分层而增加系统。
例如查询某项目当前数据库配置,先限定项目和当前有效记录,精确名称定位配置项;需要解释迁移原因时,再召回相关事件并按引用取回原文。相似度高但属于其他项目的内容不应进入候选。
如何避免召回旧事实
新旧记录要有替换和冲突关系,检索默认排除撤回、过期和失效条目;无法判断时保留证据并请求澄清。索引、摘要和缓存需要随记忆版本更新,否则库里改对了,模型仍可能读到旧投影。
评测除了相关性与召回,还要看错误记忆引用、跨用户泄露、删除后再次出现及上下文成本。保存了多少内容不等于记住得好。
对应教程
- 《25-LangGraph高级特性》:第2.6—2.7节区分线程状态的
Checkpointer与跨线程信息的Store;本文补充记忆内容、索引与权限范围的组织。
参考资料
- 国内:Snailclimb:Agent Memory:采用记忆抽取、索引、重排与冲突清理的分工,组织存储和召回流程。
- 国内:datawhalechina:第八章 记忆与检索:参考记忆与知识检索独立维护、按任务组合的结构,不把全部历史直接拼进上下文。
- 国内:adongwanai:Agent Memory:从原理到实战:采用原文、结构化记录、摘要和混合检索的职责比较,说明存储形式与记忆类型的区别。
- 国内:WeThinkIn:Agent记忆与上下文工程:采用主体、作用域、来源、有效期与状态治理,解释权限过滤和冲突处理。
- 国外:LangChain:Memory overview:核对语义、情节、程序性记忆及命名空间、同步/后台更新的概念边界。
- 国外:Anthropic:Effective context engineering for AI agents:采用轻量索引、按需取回原文与上下文预算,区分持久记忆和当轮投影。

