跳到主要内容

GitHub 项目:记忆工程生态导读

七天实战

边学边练请访问 7 天学会 Memory Engineering:首页记忆分层可视化、/learn 七天课表、/lab 五个本地沙盒、社区与资源矩阵。

阅读方式

不要「收藏式 star」。每接触一个仓库,至少跑通 Quickstart,并写三句话:它解决什么、不解决什么、如何嵌入你的写/读路径。本文不引用星标数(波动快且易误导)。

如何用开源学记忆工程

能力层选仓库,而不是按热度:

  1. Agent 记忆运行时(分页、core/archival)
  2. 记忆中间件(自动抽取偏好、会话记忆 API)
  3. 编排与检查点(图状态、thread)
  4. 索引与检索(向量、混合、重排)
  5. 图存储与多跳
  6. 研究原型(HippoRAG 等思想)

1. Letta(原 MemGPT 路线)

是什么

把 LLM 上下文当作稀缺「主存」,外部消息与档案当作「磁盘」,由 Agent 通过工具决定换入换出、自我编辑核心记忆。Letta 是该思想的工程化延续。

为什么重要

它直接回答 Day1/Day2 的痛点:窗口有限时如何持续对话而不靠你手工截断。分页、中断、core memory 与 archival memory 的分离,是记忆工程的操作系统隐喻教科书。

怎样发展

MemGPT 论文提出 OS 隐喻与分页调度 → 社区实现与托管演进 → Letta 强调 Agent 运行时与记忆管理一体化。学习时抓住「谁决定换页」:是框架策略还是模型发工具调用。

何时用 / 何时不用

适合不适合
需要长期人格/档案的个人 Agent只要简单 FAQ 检索
想研究 self-managed context强合规、写路径必须确定性规则引擎
教学演示 Working vs LTM已有严格 BPM 工作流且禁止模型自改记忆

学习任务

  1. 跑官方快速开始,观察 core 与 archival 的读写工具。
  2. 故意塞超长历史,记录何时触发外存检索。
  3. 对比:关闭自我编辑,仅允许规则写入,行为差在哪里。
  4. 画一张与你自研 pack() 的对照表(谁做预算、谁做换页)。

2. Mem0

是什么

面向应用的记忆层:从对话中抽取可持久事实/偏好,提供添加、搜索、更新、删除等 API,常挂在现有 ChatBot / Agent 外。

为什么 / 何时用

当你已有编排(自研或 LangGraph),缺的是「自动沉淀用户记忆」而不是再造运行时。适合产品快速加个性化。

适合边界
SaaS 助手要跨会话偏好深度分页调度仍需自管 Working
多项目复用同一记忆后端复杂图谱推理需另接 KG
托管与自托管选项评估抽取质量依赖模型,需评测集

学习任务

用同一组对话:「我叫…」「我过敏…」「以后用表格回复」→ 检查写入条数、是否去重、错误事实如何 update/delete。把结果记入你的记忆评测表。

3. Zep

是什么

会话与长期记忆服务方向:强调对话历史管理、摘要、检索,以及面向 Agent 的记忆基础设施(具体模块以官方文档为准)。

为什么 / 何时用

适合「会话 STM + 自动摘要 + 可检索 LTM」一体化,减少自建滑动窗口与巩固任务的样板代码。

学习任务

  1. 建两条 thread,验证隔离。
  2. 长对话后查看摘要是否可追溯到原文证据。
  3. 测延迟:写入后多久可被下一轮检索到(对在线产品关键)。

4. LangGraph Checkpointer

是什么

LangGraph 把 Agent 做成状态图;Checkpointer 把图状态(含消息列表)按 thread_id 持久化,支持恢复、人机协同中断。

为什么重要

它解决的是 STM / 工作流状态,不是完整 LTM 平台。很多团队误以为「有了 checkpointer 就有记忆工程」——其实你仍需向量/KG/门禁。

它解决你仍需自建
线程级消息与状态恢复跨线程用户画像
时间旅行调试混合检索与重排
与节点编排一体多租户命名空间策略

学习任务

最小图:chatbot 节点 + MemorySaver / SqliteSaver → 重启进程续聊 → 再外挂一个 search_memory 工具读向量库,体会「状态」与「记忆」分层。

5. LlamaIndex

是什么

索引与检索抽象层:Document → Node → Index → Retriever → Query Engine;亦有记忆、Agent 相关模块。强项是把异构数据变成可查询索引并与 LLM 合成答案。

何时用

文档型知识 + 对话记忆混合时,用同一套 retriever 接口做实验;快速对比分块与重排策略。

学习任务

同一语料,对比 sentence / window / semantic splitter 的 Recall;把「用户偏好」设为单独 Index,避免与手册混检。

6. 向量库:Chroma / Milvus / Qdrant

三者都解决稠密向量存取与 ANN 检索,差异在部署体量与生态。

项目典型定位学习焦点
Chroma本地/原型友好元数据过滤、集合隔离、快速验证门禁
Qdrant过滤与混合检索体验佳payload 过滤、量化、快照备份
Milvus大规模与云原生叙事强集合/分区、索引类型、资源隔离

共同学习任务(强烈建议同一脚本适配三后端之一即可)

  1. 写入 100 条带 user_id 的记忆,查询时强制过滤,证明无法串租户。
  2. 调 HNSW M/ef,记录 Recall@10 与延迟。
  3. 实现删除后查询为空,理解软删与索引清理。
  4. (进阶)BM25 + 向量 RRF,对比仅向量。

不要:无过滤的全局集合;无版本的 embedding 模型名;无 TTL 的无限增长。

7. Neo4j(与记忆图谱)

是什么

属性图数据库 + Cypher。在记忆工程中承担关系与多跳,不是向量替代品。

何时用

用户–兴趣–项目–约束等需要路径推理;时态边;一致性检查。与向量配合:向量召回实体候选 → Cypher 扩展邻居。

学习任务

开发指南 的 LIKES 多跳;再加一条矛盾边,写查询找出冲突对。阅读官方约束与索引文档,给 User.id 建唯一约束。

8. HippoRAG(论文与思想)

是什么

受海马体索引启发的检索增强思路:将段落知识组织成更利于多跳的图索引结构,使检索更接近「情景线索 → 语义整合」。以论文与官方实现为准。

为什么值得读

它提醒工程团队:扁平向量块不是唯一索引形态;对需要组合多条事实的问题,图结构索引可能更稳。

学习任务

  1. 读论文问题设定与基线对比表,记下任务类型。
  2. 在自有小数据集上复现「开放问题需要两跳」案例。
  3. 思考如何把思想降级到生产:不必全量复现,可先「实体共现图 + 向量」混合。

边界:研究原型 ≠ 开箱多租户记忆 SaaS;上线仍要门禁、评测、运维。

9. 相关周边(简表)

方向代表在回路中的角色
重排bge-reranker、Cohere Rerank 等读路径精排
稀疏BM25 实现、ES/OpenSearch专有名词召回
编排Autogen / Crew 类多 Agent 消息;记忆隔离需自查
观测OpenTelemetry、Langfuse 等记录检索命中与延迟

10. 对照实验仓库建议

memory-bench/
scenarios/ # yaml:用户故事与期望记忆
adapters/
letta_runner.py
mem0_runner.py
langgraph_runner.py
metrics/
recall_at_k.py
faithfulness.py
reports/ # 每次跑的假设与结论

固定:模型版本、embedding、场景种子。每次只换一个适配器或一个参数。

11. 选型决策清单

  1. 是否需要模型自主换页?→ Letta 方向。
  2. 是否只要偏好/事实 API?→ Mem0 / Zep 方向。
  3. 是否已有图编排?→ Checkpointer + 自建 LTM。
  4. 是否多跳关系?→ Neo4j + 向量。
  5. 是否千万级向量?→ Milvus/Qdrant 等,Chroma 留作开发。
  6. 是否有评测集?无则禁止生产切换后端。

12. 一周迷你课程(对着仓库做)

仓库重心作业产出
1Letta 快速开始core vs archival 对照笔记
2LangGraph Checkpointer重启续聊录屏 + 说明其非 LTM
3Chroma 或 Qdrant带 user 过滤的 100 条检索脚本
4Neo4jLIKES 多跳 + 一条冲突查询
5Mem0 或 Zep同一对话脚本的写入条数对比表
6重排模型Top50→Top8 前后人工打分
7HippoRAG 论文一页「可降级到生产的三点」

完成后你应能独立回答:「我的产品卡在运行时分页、记忆 API,还是索引层?」——这比收藏 20 个仓库更有用。

13. 阅读 README 的固定问题单

打开任意记忆相关仓库,强制回答:

  1. 写路径是否暴露 importance / 去重 / 删除?
  2. 检索是否强制租户或 user 作用域?
  3. 会话状态与长期记忆是否分层?
  4. 有无评测或基准目录?
  5. 换 embedding 是否文档化重建步骤?
  6. License 与数据回传策略是否可接受?

答不出第 2、3 题,不要用于多租户生产。

14. 下一步