1. 记忆系统的总体架构统一接口 分层分发 类型化记忆MemoryTool对 Agent 提供统一入口execute(action, **kwargs)action决定要做什么add/search/summary/stats/update/remove/forget/consolidate/clear_allkwargs让不同操作拥有不同参数不强耦合MemoryManager真正的“路由编排”根据配置启用哪些记忆类型working / episodic / semantic / perceptual持有store存储后端与retriever检索策略并组织它们工作Memory Type四类记忆把知识按“认知属性/数据形态”拆开Working短期、临时、快、容量有限TTL容量Episodic事件/经历、有时间线SQLite结构化 向量检索Semantic抽象知识、实体关系图数据库 向量检索 推理/混合排序Perceptual多模态感知按模态分库/分向量空间支持跨模态检索2. MemoryTool.execute为什么要统一 execute让 Agent 调用变简单永远是execute(add, ...)这种形式逻辑集中在内部Action - 对应私有方法_add_memory/_search_memory/...便于扩展以后新增 action 不破坏外部接口3. add写入操作核心是补齐上下文元数据 管理会话归属关键思想session_id 自动生成确保同一段对话/用户上下文能被追踪后续 episodic/过滤检索很需要timestamp 自动加为“时间相关检索/衰减”准备importance重要性将“认知权重”显式化后续检索排序通常会用它做乘权如0.8 importance*0.4之类perceptual 的多模态元数据modality推断、保存原始路径raw_datafile_path4. search检索操作核心是相似度 过滤 融合排序你贴的代码里都在反复强调参数支持memory_type单类型memory_types多类型min_importance过滤低价值记忆输出不是原始结果而是人类可读格式memory_type_label、content_preview、importance在“每种记忆类型内部”检索进一步体现差异WorkingMemory混合检索 时间衰减 重要性权重思路快且稳定混合TF-IDF / 关键词作为关键词覆盖向量相似作为语义覆盖排序基础相关度向量70%/关键词30%再乘以时间衰减time_decay再乘以重要性权重importance_weight学习点Working 更像“会话内记忆缓存”目标是响应速度与鲁棒召回。EpisodicMemory结构化预过滤 向量召回 时间/重要性融合结构化过滤session/time/importance 等先缩小候选集再做向量召回综合评分用向量相似主要recency时间近因性importance重要性Episodic 的优势是“知道它发生在什么时候、属于哪个会话/事件”所以能更准。SemanticMemory向量 图结构 混合排序添加时embedding语义表示抽取实体/关系存入 Neo4j 图embedding 写入向量库Qdrant检索时向量检索相似语义图检索关系/邻域推理再融合排序0.7 * vector_score 0.3 * graph_score后再乘 importance 权重Semantic 强在“关系推理/概念网络”不是只看相似度。PerceptualMemory模态分离存储 跨模态检索 指数衰减设计为不同模态text/image/audio维护不同向量集合避免向量空间不匹配支持同模态检索跨模态检索通过统一语义对齐编码评分同样是向量相似主时间近因性次importance权重时间衰减思想非常关键用指数衰减模拟遗忘曲线保证“更新更近的记忆更可能被拿到”。5. forget遗忘机制为什么要“遗忘”遗忘不是 bug是为了控制存储成本容量避免噪声累积低重要性删强化时效性过期删三类策略importance_based按重要性阈值删除time_based超过 max_age_days 删除capacity_based超出上限则删最不重要Memory 系统不是“无限增长的日志”而是“可控的认知模型”。6. consolidate整合机制从短期到长期from_type - to_type默认 working - episodic用importance_threshold决定哪些短期记忆值得“固化”思想模仿“重要事件被巩固成长期记忆”这是“记忆生命周期管理”的核心闭环之一。拓展把记忆按“用途/数据形态/认知层级”拆分每类用最合适的检索与存储组合。所有检索排序都围绕三件事融合语义相似度向量/文本时间因子recency、衰减重要性权重importance写入时补齐元数据session、timestamp、modality、importance否则后面很难做高质量检索。提供统一入口给 Agentexecute action降低 Agent 调用复杂度、提升可扩展性。用遗忘与整合构建闭环避免记忆膨胀让系统越来越“像人”。速记Toolexecute(action, **kwargs)统一入口Manager分发/编排持有 store retrieverFour memoriesWorking快 TTL 容量 向量70%/关键词30%×时间×重要性Episodic结构化预过滤 向量召回 recency×importanceSemantic图向量混合0.7/0.3×importancePerceptual模态分库 同/跨模态检索 指数衰减×importanceforget按重要性/时间/容量删consolidate工作记忆中重要的迁移到长期episodic/semantic1) 主流 Memory记忆系统的典型流程主流系统大多遵循这一流水线A. 写入阶段add / ingest文本/多模态数据进入对话轮次、用户画像、文档片段、事件日志、图片/音频等预处理与分块文本清洗、切 chunk按段落/句子/窗口给每条 chunk 生成元数据user_id/session_id/timestamp/source/importance/tags嵌入表示Embedding把 chunk或多模态编码结果转成向量写入存储多存储协同向量数据库存embedding metadata id关系/图数据库可选存entity/relationship memory_id原文/结构化存储常见原文通常仍保存在对象存储/SQL/文档库中便于可读、审计、回放可选的“摘要/索引层”为节省检索成本做摘要、关键词索引、层级聚合short-term - long-termB. 读取阶段search / retrieve for RAG把用户查询转成向量Query embedding向量召回TopK可选的结构化过滤按 user/session/time/memory_type/权限过滤可选的图增强通过实体召回/关系扩展找到额外相关片段重排rerank与融合用 cross-encoder / 评分模型把向量召回重排融合多源向量BM25图把检索到的“证据片段”喂给 LLM生成最终回答RAG2) 最终存储到哪里最常见的三类存储主流架构通常至少包含① 向量数据库Vector DB存embedding向量 metadata id用途相似度检索 / 召回 TopK② 原文与结构化数据存储Content Store常见是SQLPostgreSQL/MySQL存结构化字段用户、权限、事件表文档库如 MongoDB存文档与索引信息对象存储/文件系统存原文可回溯虽然向量库里也能存 payload但工程上通常还是会保留一个“权威原文仓库”。③ 图数据库Graph DB可选但越来越常见存实体人物/概念/技能/产品与关系“使用/属于/因果/相互关联”用途实体级召回关系扩展邻居节点扩展更解释性的检索与路径推理3) 嵌入表示转换Embedding通常用什么技术常见技术栈Sentence Embedding / Text Embedding 模型例如泛称text-embedding-*、Sentence-BERT 系列、bge 系列、e5 系列等为检索优化的模型双塔bi-encoder结构query encoder doc encoder通常用于向量检索召回多模态嵌入如果有图像/音频CLIP图像-文本对齐Whisper / CLAP音频-文本对齐等可选BM25 / TF-IDF一些系统用“稀疏检索 向量检索”混合或用于兜底召回尤其短问题、专有名词Embedding 的输入输出输入chunk 文本或 query 文本输出固定维度的浮点向量例如 384/768/1024…4) 向量数据库用本地还是云端常见选择是什么部署方式主流趋势本地/自建对隐私、延迟、成本可控更友好云端/托管省运维、快速上线常见向量库/平台按流行度开源自建/可部署QdrantMilvusWeaviateElasticsearch/OpenSearch也能做向量托管云服务典型思路是“直接调用 API”PineconeZilliz CloudMilvus 托管以及一些云厂商提供的向量检索能力5) 图数据库主流图数据库角色图数据库通常不替代向量检索而是“补强关系推理”和“实体级召回”。常见用途从问题抽取实体例如“Python / 张三 / 项目A”在图里找相关实体邻居把相关节点的记忆片段扩展进候选集合再用向量重排或直接融合评分Neo4jNeo4j 很常见尤其在中文教程/开源示例里更常被提到原因Cypher 查询方便生态成熟很适合做 entity-relation 模型但也有其它选择TigerGraph大规模图Amazon Neptune托管图数据库NebulaGraph图数据库甚至某些系统用 RDF/三元组存储语义网风格6) 总结先嵌入embedding - 存向量数据库embedding 原文/metadata -可选存图数据库实体/关系 - RAG 检索时用向量召回 图扩展 重排 - 喂给 LLM。而嵌入一般用文本嵌入模型双塔/检索向量模型多模态用对应对齐模型CLIP/CLAP 等向量库一般自建Qdrant/Milvus/Weaviate或托管Pinecone 等图数据库Neo4j 常见也有其它图系统。