
NOAA 长期记忆实战nooa-memory 向量检索如何实现跨会话记忆、反思与遗忘【免费下载链接】labs-OO-AgentsNVIDIA Object Oriented Agents: the Pythonic way to build AI Agents.项目地址: https://gitcode.com/gh_mirrors/la/labs-OO-Agentsnooa-memory是 NVIDIA 开源 Agent 框架 NOAAObject Oriented Agents中的长期记忆子系统基于向量检索为 AI Agent 提供跨会话的持久记忆并内置反思离线记忆巩固与遗忘记忆衰减与剪枝机制全部本地运行、开箱即用。本文面向新手介绍如何快速启用跨会话记忆、6 种记忆类型、混合向量检索原理、反思与遗忘机制以及后端选型与最佳实践。一、3 步为 Agent 开启跨会话长期记忆没有长期记忆的 Agent 每次会话都是失忆的。nooa-memory 的设计理念很独特记忆由 Agent 自己书写和整理通过remember/recall等原生工具完成而不是由外部管道在背后悄悄提取。启用只需两步官方文档packages/nooa-memory/src/nooa_memory/README.md安装依赖uv add nooa-memory在 Agent 上激活nemo.memory技能注册实现见 packages/nooa-memory/src/nooa_memory/memory_skill/init.pyagent.skills.activate([nemo.memory]) # 此后所有记忆操作都挂在 self.memory 上 agent.memory.remember(部署服务请运行 make ship。, typeskill, importanceHIGH) hits agent.memory.recall(如何部署服务) # 向量检索 图关联 agent.memory.reflect() # 离线巩固 agent.memory.stats() # 记忆使用统计技能挂载时会自动向上下文注入一份MEMORY_SCHEMA_GUIDE见 packages/nooa-memory/src/nooa_memory/manager.py告诉模型你拥有并管理自己的记忆该怎么写、怎么写。默认配置无需任何外部服务本地 SQLite 文件 确定性离线嵌入enabledFalse时 Agent 行为与原来完全一致有回归测试保证。可运行的最小演示examples/quickstart/12_memory.py。二、记忆类型与重要性分级6 种 type 5 级 importance每条记忆schema.Memory只有id、type、content、created_at必填其余字段都有合理默认值定义见 packages/nooa-memory/src/nooa_memory/schema.py记忆类型含义info持久事实、偏好、规则skill可复用的、已验证的操作步骤episode某次任务/事件中的具体经历intent触发式提醒当 X 发生时执行 Yreflection从多条经历中提炼出的洞察scratch临时工作记忆重要性分 5 档CRITICAL / HIGH / MEDIUM / LOW / TRIVIAL直接影响检索排序与遗忘保护。记忆之间还可以用associate建立有向图边causes、refines、contradicts、part_of等为多跳联想检索打基础。三、混合向量检索召回管线如何工作 recall(query)的完整管线在 packages/nooa-memory/src/nooa_memory/retrieval.py 中实现共 3 步混合候选池稠密向量 KNNembedding 相似度∪ 稀疏关键词匹配两路召回合并ACT-R 风格打分借鉴认知科学的记忆激活模型综合三个信号加权——相关性与查询的语义余弦、新近度ACT-R 基础激活函数最近/经常访问的记忆得分更高、重要性importance 归一化多跳联想扩散激活沿记忆图的边逐跳传播并衰减把与查询相关、但不直接相似的记忆也带出水面。另外还有一个常被忽略的能力——自发联想Spontaneous Association每轮对话前BeforeTurn钩子会从最近对话自动合成查询走同一条完整检索管线把命中的记忆注入上下文块。也就是说Agent 不主动调用recall也能被动受益于长期记忆。四、反思Reflection离线记忆巩固 6 步流水线reflect()在任务完成后自动运行triggerpost_task是一条借鉴大脑睡眠巩固机制的有序流水线实现见 packages/nooa-memory/src/nooa_memory/reflection.pymerge合并近似重复的记忆为一条规范记录reconsolidate聚类相关记忆可选 LLM 调解器解决矛盾/过时取值保留最新edge formation为嵌入相近的记忆建立图边re-score结合显著度与访问频率重新评估重要性abstract可选 LLM 推理器把一批episode提炼成紧凑的reflection洞察prune清理已衰减的低价值记忆。 关键经验不挂 LLM 时第 1/3/4/6 步纯确定性运行、零 LLM 调用实测中反思的增益只出现在检索是瓶颈的场景大量零散事实 有限检索预算可50%对单点精准查找反而可能 −20%——它是刻意使用的工具而非默认全开的开关。五、遗忘Forgetting艾宾浩斯遗忘曲线的工程实现nooa-memory 的遗忘分两个时间尺度packages/nooa-memory/src/nooa_memory/forgetting.py在线每条记忆的保留率按艾宾浩斯曲线R e^(−Δt/S)随时间衰减而稳定性 S随strength被成功检索的次数增大——常用的记忆衰得更慢离线反思阶段剪枝低于阈值的记忆并带三重保护——太年轻的记忆、高重要性记忆≥ CRITICAL 档附近、protected_types默认含skill永不被自动剪掉未关闭的todo也受保护。剪枝默认是软删除存档打墓碑可配置为物理删除误忘也能追溯。六、后端选型向量与嵌入都可以自由切换单一 SQLite 文件同时存放记忆记录、关联图与向量数据后端通过一个协议插拔替换packages/nooa-memory/src/nooa_memory/vector_backends.py、packages/nooa-memory/src/nooa_memory/embeddings.py向量后端说明额外依赖numpy默认进程内精确暴力余弦适合 ≤10 万条无sqlite_vec同一 SQLite 文件内的近似检索sqlite-vecchroma_embedded/chroma_http本地目录 / 独立 Chroma 服务适合超大规模chromadb嵌入后端二选一hashing确定性、离线、零依赖默认或litellm对接 OpenAI 兼容的/embeddings如 text-embedding-3-large。四种向量后端返回完全一致的排序可无缝互换——小规模用默认配置即可上万条再考虑 Chroma。七、何时该开长期记忆官方实测数据参考 ✅官方在真实模型上做了对照实验汇总于 packages/nooa-memory/src/nooa_memory/README.md场景结果跨会话的不可猜测事实recall_qa75%开记忆 75% vs 关闭 0%LoCoMo 多跳问答44~60%LongMemEval 长程记忆70%检索预算紧张下的综合任务 反思50%核心原则当答案无法从当前上下文推导过去会话的事实、无法猜的偏好与决策时长期记忆收益最大记忆已过时也可能帮倒忙所以才需要反思与遗忘配套。调试时可以用框架现成的可观测性事件MemoryWritten/MemoryRecalled/MemoryInjected/ReflectionCompleted以及memory_stats()返回的写入、召回、合并、剪枝等计数packages/nooa-memory/src/nooa_memory/monitoring.py。八、延伸阅读核心源码与文档索引子系统总览文档packages/nooa-memory/src/nooa_memory/README.md技能适配层nemo.memory注册packages/nooa-memory/pyproject.toml集成管理器与工具混入packages/nooa-memory/src/nooa_memory/manager.py混合检索与打分packages/nooa-memory/src/nooa_memory/retrieval.py离线巩固流水线packages/nooa-memory/src/nooa_memory/reflection.py遗忘引擎packages/nooa-memory/src/nooa_memory/forgetting.py完整可运行演示含反思/遗忘全过程examples/quickstart/12_memory.py单元测试检索/反思/遗忘/向量后端packages/nooa-memory/tests/【免费下载链接】labs-OO-AgentsNVIDIA Object Oriented Agents: the Pythonic way to build AI Agents.项目地址: https://gitcode.com/gh_mirrors/la/labs-OO-Agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考