Hindsight — 会"学习"的 AI Agent 记忆系统
> 一句话版本:一个让 AI 助手拥有长期记忆的系统,不只是记住对话历史,而是像人一样从经验中学习、形成认知模型,目前在记忆系统评测中得分最高。
| 项目 | 信息 | |
|---|---|---|
| 来源 | https://github.com/vectorize-io/hindsight | |
| 作者 | Vectorize.io | |
| 许可证 | MIT | |
| 创建时间 | 2025-10-30 | |
| 语言 | Python | |
| Stars | 8,235 | Forks 498 |
| 文档 | https://hindsight.vectorize.io |
核心内容
Hindsight 不是传统的"记住对话"系统,而是模拟人类记忆方式的三层结构:
三层记忆模型
| 层级 | 类比 | 说明 |
|---|---|---|
| **World(世界知识)** | "炉子会烫" | 关于世界的事实 |
| **Experiences(经验)** | "我摸了炉子,很疼" | Agent 自身的经历 |
| **Mental Models(心智模型)** | "热的东西别碰" | 从记忆中反思形成的理解 |
三个核心操作
- Retain:存入记忆。用 LLM 提取实体、关系、时间序列,归一化后存储
- Recall:检索记忆。4 种策略并行执行,融合排序
- Reflect:深度反思。从已有记忆中形成新洞察和连接
Recall 的 4 路并行检索
查询: "Alice 的工作情况?"
├── 语义搜索(向量相似度)
├── 关键词搜索(BM25 精确匹配)
├── 图遍历(实体/时间/因果链)
└── 时间过滤(时间范围)
↓
Reciprocal Rank Fusion + Cross-encoder 重排序
↓
最终结果(按 token 限制裁剪)
性能表现
| 系统 | LongMemEval 得分 |
|---|---|
| **Hindsight** | **91.4%** |
| Mem0 | 49.0% |
| Letta (MemGPT) | 未公布(较低) |
该成绩由 Virginia Tech Sanghani Center 和 Washington Post 独立复现。
技术特点
- 支持 OpenAI、Anthropic、Gemini、Groq、Ollama、LM Studio、Minimax
- SDK:Python、Node.js、REST API、CLI
- Docker 一键部署
- 2 行代码集成(LLM Wrapper)
- 按用户隔离记忆(metadata 过滤)
- MCP 兼容
安装
# Docker(最简单)
docker run --rm -it -p 8888:8888 -p 9999:9999 \
-e HINDSIGHT_API_LLM_API_KEY=$OPENAI_API_KEY \
ghcr.io/vectorize-io/hindsight:latest
# Python SDK
pip install hindsight-client -U
具体示例
场景:AI 助手帮你管快递
第 1 天 — Retain 存入
用户:"我有个快递到了,韵达的,单号 YT123456,是给 Ivy 买的生日礼物。"
Hindsight 用 LLM 提取实体(韵达、YT123456、Ivy、生日礼物)、关系和时序,归一化后存为 5 种格式:向量索引(语义搜索)、BM25 索引(关键词)、图节点(实体关系)、时间序列、元数据。
第 5 天 — Recall 检索
用户:"那个快递怎么样了?"
4 路并行检索 → RRF 融合排序 → Cross-encoder 精排 → AI 直接回答"你的韵达快递 YT123456(给 Ivy 的生日礼物)目前状态是……"
第 30 天 — Reflect 学习
用户:"Ivy 快过生日了,帮我推荐礼物。"
Recall 找到相关记忆 → LLM 归纳:用户每年给 Ivy 准备生日礼物,偏好数学/Pop Mart → 存为 Mental Model → AI 主动回答"Ivy 生日快到了,去年你通过韵达寄了礼物,今年需要帮你挑吗?"
对比传统 RAG
| 传统 RAG | Hindsight | |
|---|---|---|
| 精确检索 | ✅ 能找到快递信息 | ✅ |
| 跨场景联想 | ❌ keyword match 不会联想到生日 | ✅ Reflect 形成心智模型 |
| 跨会话 | ❌ 需手动管理上下文 | ✅ 自动跨会话记忆 |
| 学习能力 | ❌ 纯检索 | ✅ 从经验中提炼规律 |
内部实现原理
Retain:存入记忆
原始输入 → LLM 提取实体/关系/时序 → 归一化("韵达"→ canonical entity)→ 存储为 5 种格式(向量索引、BM25、图节点、时间序列、元数据)。一次存入,服务多种检索策略。
Recall:4 路并行检索
1. 语义搜索(pgvector):向量相似度匹配
2. 关键词搜索(BM25):精确文本匹配
3. 图遍历:沿实体/关系/因果链遍历
4. 时间过滤:按时间范围筛选
4 路结果 → 合并去重 → Reciprocal Rank Fusion(RRF)综合排名 → Cross-encoder 精确重排序 → 按 token 限制裁剪返回。
Reflect:反思学习
Recall 检索相关记忆 → LLM 对一组记忆做归纳总结 → 结论存为新的 Mental Model(附带来源记忆引用)→ 下次类似场景直接用 Mental Model,无需重新推理。
存储层
PostgreSQL + pgvector,单库承载向量表、全文索引、图结构、时间序列。
一句话总结
Retain = LLM 提取 + 多格式存储
Recall = 4 路并行查 + RRF 融合 + Cross-encoder 排序
Reflect = LLM 归纳记忆 → 存为心智模型 → 下次直接用
分析
优势:
- LongMemEval 91.4%,目前最强的 agent 记忆系统
- 仿生记忆结构(世界→经验→心智模型)比传统 RAG/知识图谱更接近人类认知
- 4 路并行检索 + RRF 融合,召回率和准确率都高
- 有 Fortune 500 生产案例,不是纯学术项目
- 多 LLM 提供商支持,不绑定单一厂商
- MIT 开源
风险:
- 需要 LLM API 做记忆提取和反思,本身有 API 成本
- Docker 部署依赖 PostgreSQL(docker-compose 模式)
- 自家 benchmark 对比自家产品,虽有第三方复现但独立评测数据有限
- Vectorize.io 是商业公司,开源版和付费版的边界需关注
与 Jay 的关联:
- Jay 的 OpenClaw agent 目前用文件系统做记忆(MEMORY.md 等)
- Hindsight 可以作为更强大的记忆后端,特别是需要跨会话、长期学习能力的场景
- 和 MemPalace 的 AAAK 压缩是不同思路:Hindsight 重结构化存储和智能检索,MemPalace 重压缩
评分
| 维度 | 评分 (1-10) | 说明 |
|---|---|---|
| 创新性 | 9 | 仿生三层记忆 + 4 路并行检索,设计精良 |
| 实用性 | 8 | Docker 一键部署,2 行代码集成 |
| 代码质量 | 8 | 架构清晰,SDK 完善 |
| 文档 | 9 | 官网文档齐全,有独立教程 |
| 生态 | 7 | 多 SDK + MCP,但社区相对小 |
| 可维护性 | 7 | 商业公司支持,但开源长期策略不确定 |
| **总分** | **8.0** | 目前最强的开源 agent 记忆系统 |