AI Memory 的真正难点:为什么 Vector Store + Embedding 远远不够
0 前言
许多项目尝试为 AI 构建长期记忆,使模型能够记住用户信息、历史行为和长期偏好。大多 AI memory 项目仍停留在相对简单架构:
Vector Store + Embedding 检索
常见实现方式:
- 用户对话或行为生成embedding
- embedding 存入向量数据库
- 新请求到来时生成query embedding
- 通过 similarity search 找到 top-k 相关 memory
这个架构确实能解决“历史信息检索”,但它更像一个 可检索日志系统(searchable log),而不是一个真正的 记忆系统(memory system)。
困难集中在:
- Memory Compaction(记忆压缩)
- Memory Evolution(记忆演化)
- Memory Conflict Resolution(记忆冲突解决)
这决定 AI memory 能否从简单的“日志检索”进化为真正的“长期知识系统”。
1 Memory Compaction(记忆压缩)
1.1 记忆会无限增长
如果系统只是把每一次对话都存入 vector store,memory规模会快速膨胀。
如用户多次表达类似观点:
I like sushi,I love sushi,Sushi is my favorite food,I enjoy eating sushi。
一个 naive 系统会保存 4 条甚至更多 memory。但真正有价值的记忆其实只有一条:User likes sushi。
因此 memory 系统须:将大量原始交互压缩为更高层的知识表示。
1.2 类比数据库系统
像数据库的LSM-tree compaction。
数据库中的数据通常是:event log → compaction → snapshot。
原始日志被压缩成更高层的状态。
AI memory 也类似:raw interactions → memory compaction → structured knowledge。
如:
Raw interactions:
User: I moved to Seattle User: The weather in Seattle is rainy User: I like living here
Compacted memory:
User lives in Seattle
1.3 技术难点
Memory compaction 远不只是简单的 summarization。
1.3.1 抽象层级问题
假设系统观察到:User likes sushi,User likes ramen,User likes pizza。
系统应该生成:User likes food or User likes Japanese food?
抽象层级如何自动决定,很难。
1.3.2 何时compaction
常见策略:
① 定期 compaction
如每积累 N 条 memory 后进行一次压缩。
② 基于相似度触发
当系统发现一组 memory 在 embedding space 中形成 cluster 时,触发 compaction。
1.3.3 避免信息丢失
压缩过程可能导致错误抽象。
如:User likes sushi,User is allergic to shellfish。
如果被压缩成:
User likes seafood
用户喜欢海鲜
这显然是错误的。
因此 memory compaction 必须非常谨慎。
2 Memory Evolution:记忆演化
人类的记忆不是静态的,而是会随着时间不断更新。
如:
2023:User lives in New York 2024:User moved to Seattle
系统须理解:
New York → 过期信息,Seattle → 当前信息
但 vector store 不具备这种能力,它只是 append-only。
2.1 Memory 的本质
Vector store 更像append-only log。但真正的 memory 系统需要state machine。即memory 必须支持 更新和演化。
2.2 关键问题
2.2.1 事实更新
如:User favorite language: Python
后来用户说:I switched to Rust.
系统应该update memory,而非简单地 add new memory。
2.2.2 时间维度
memory 通常需包含:
- timestamp
- confidence置信度
- validity window
如:User lives in NYC (2019–2024),User lives in Seattle (2024–)。这样系统才能正确推断当前状态。
2.2.3 长期记忆 v.s 短期记忆
并非所有 memory 都是长期有效的。如:
长期稳定:User likes sushi
短期信息:User is traveling in Tokyo
在认知科学中通常被分为:
- Episodic Memory(情景记忆)
- Semantic Memory(语义记忆)
AI memory 系统往往也需要类似的分层结构。
3 Memory Conflict Resolution:记忆冲突解决
这是 AI memory 中最困难的问题之一。因为 memory 很可能 互相矛盾。
如:Memory A User is vegetarian,Memory B User likes steak。
系统须决定:哪个是正确的?
3.1 冲突来源
3.1.1 用户行为变化
User was vegetarian,User is no longer vegetarian
3.1.2 用户表达不一致
User: I hate Python
User: Python is actually great
3.1.3 模型错误推断
LLM 有可能根据上下文 推断出错误 memory。
3.2 常见解决策略
1 时间优先(Latest Wins)
最新信息优先:
2023: vegetarian 2024: eats meat
系统采用 2024 的状态。但该策略并不总是正确。
2 置信度机制
memory 可附带confidence score,如:
User explicitly said → 高置信度,LLM inference → 低置信度
冲突时优先选择高置信度 memory。
3 来源追踪
记录 memory 的来源:
source = user_statement,source = inference,source = system
冲突时优先用户直接陈述。
4 多版本记忆
另一种策略是保留多个时间版本:
User was vegetarian (2018–2023) User eats meat (2023–)
这样系统就可以在不同时间上下文中使用不同 memory。
4 为啥这三个问题如此困难
因为 AI memory 实际上并不是一个简单的检索系统,而是一个 知识管理系统。
Vector database 解决的是相似性检索,而 memory 系统需解决:
- knowledge representation知识表示
- knowledge evolution知识进化
- knowledge conflict resolution知识冲突解决
这更像是在构建一个:
- Knowledge Graph知识图谱
- Database System数据库系统
- Reasoning Engine推理引擎
而不仅仅是一个 embedding index。
5 一个更完整的 AI Memory 架构
成熟的 AI memory 系统通常需要如下结构:
Raw interactions
│
▼
Memory extraction (LLM)
│
▼
Structured memory store
│
├── compaction
├── evolution
└── conflict resolution
│
▼
Retrieval layer
原始交互
│
▼
记忆提取(LLM)
│
▼
结构化内存存储
│
├── 压缩
├── 进化
└── 冲突解决
│
▼
检索层
其中 memory store 可能是:Graph Database、Document Store或Relational Database。而不仅是 vector database。
6 结语
目前许多 AI memory 项目(如 mem0)已意识到:Memory ≠ Retrieval。
它们开始探索:
- memory extraction记忆提取
- memory scoring记忆评分
- memory updating记忆更新
但这仍是 第一代 AI memory 系统。
真正成熟的 AI memory,很可能会更接近一个 持续演化的知识系统—— 能够压缩经验、更新事实、并解决矛盾。核心问题其实就是:到底如何表示“记忆”本身。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)