![配图待生成]
一句话总结
记忆 = AI的”大脑”,让它能记住你的偏好、学习历史经验、避免重复犯错。
没有记忆的AI,每次对话都像第一次见面。有了记忆,AI才能成为真正的”助手”。
为什么需要记忆?
想象一下,你的助理每天早上都问你:
- “你是谁?”
- “你喜欢什么风格?”
- “上次我们聊了什么?”
你会疯掉。
但大多数AI就是这样——每次对话都是全新的开始。
记忆解决的问题
| 问题 | 没有记忆 | 有记忆 |
|---|
|——|———-|——–|
| 用户偏好 | 每次都要重新说明 | 自动应用已知偏好 |
|---|---|---|
| 历史上下文 | 不记得上次聊了什么 | 能延续之前的对话 |
| 经验教训 | 同样的错误反复犯 | 从错误中学习 |
| 个性化 | 对所有人都一样 | 根据用户调整 |
记忆的四层架构
人类记忆有不同类型,AI的记忆也应该分层:
`
┌─────────────────────────────────────┐
│ 第4层:Procedural Memory(程序记忆) │ ← 模式、工作流、教训
├─────────────────────────────────────┤
│ 第3层:Semantic Memory(语义记忆) │ ← 抽象知识、概念
├─────────────────────────────────────┤
│ 第2层:Episodic Memory(情景记忆) │ ← 具体事件、操作记录
├─────────────────────────────────────┤
│ 第1层:Working Memory(工作记忆) │ ← 当前对话上下文
└─────────────────────────────────────┘
`
各层详解
第1层:Working Memory(工作记忆)
- 是什么:当前对话的上下文
- 生命周期:会话结束就消失
- 例子:刚才用户说了什么,AI回了什么
- 技术实现:对话历史、滑动窗口
第2层:Episodic Memory(情景记忆)
- 是什么:具体的事件和操作记录
- 生命周期:持久化,长期保存
- 例子:上次帮用户写了Day40的文章,主题是AI搜索
- 技术实现:事件日志、操作记录
第3层:Semantic Memory(语义记忆)
- 是什么:抽象的知识和概念
- 生命周期:持久化,可更新
- 例子:用户喜欢亲切专业的风格,不要emoji
- 技术实现:知识图谱、概念聚类
第4层:Procedural Memory(程序记忆)
- 是什么:模式、工作流、教训
- 生命周期:持久化,可强化/衰减
- 例子:用户对排版要求很高,要用standard模板
- 技术实现:教训库、置信度评分
记忆的生命周期
记忆不是永久不变的,它有自己的生命周期:
`
创建 → 存储 → 检索 → 使用 → 更新/衰减
`
衰减机制
不常用的记忆会逐渐”遗忘”:
`
记忆强度 = 初始强度 × e^(-λ × 时间)
λ = 衰减系数(越大衰减越快)
时间 = 距离上次访问的时间
`
实际效果:
- 每天都用的记忆:强度保持100%
- 一周没用的记忆:强度降到50%
- 一个月没用的记忆:强度降到10%
强化机制
当记忆被成功使用时,强度会增强:
`
新强度 = 旧强度 + (1 – 旧强度) × 强化系数
`
实际效果:
- 用得越多的记忆,越不容易被遗忘
- 像肌肉一样,越用越强
记忆的存储和检索
存储策略
| 类型 | 存储位置 | 格式 |
|---|
|——|———-|——|
| Working Memory | 内存 | 对话历史数组 |
|---|---|---|
| Episodic Memory | 数据库 | 事件记录(时间、内容、类型) |
| Semantic Memory | 知识图谱 | 实体-关系-实体 |
| Procedural Memory | 教训库 | 教训 + 置信度 + 标签 |
检索策略
1. 时间检索
`sql
SELECT * FROM memories
WHERE user_id = ‘climbing’
ORDER BY created_at DESC
LIMIT 10
`
2. 语义检索
`python
# 计算查询与记忆的相似度
query_embedding = embed(“用户的写作风格”)
memory_embeddings = [embed(m.content) for m in memories]
similarities = cosine_similarity(query_embedding, memory_embeddings)
top_memories = get_top_k(memories, similarities, k=5)
`
3. 混合检索
`
结果 = 语义检索结果 ∪ 时间检索结果
按相关度 + 时间排序
`
记忆的写入时机
什么时候应该写入记忆?
- 用户明确表达偏好
- “我不喜欢emoji”
- “我喜欢亲切专业的风格”
→ 写入Semantic Memory
- 完成重要任务
- “Day40早课已发布”
- “用户的问题已解决”
→ 写入Episodic Memory
- 发现重要模式
- “用户总是要求高质量排版”
- “用户对响应速度敏感”
→ 写入Semantic Memory
- 学到经验教训
- “标题不能用emoji,否则发布失败”
- “用户不喜欢被问太多问题”
→ 写入Procedural Memory
什么时候不应该写入记忆?
- 临时信息
- “帮我算一下1+1”
→ 不需要记忆
- 一次性任务
- “帮我查一下天气”
→ 不需要记忆
- 敏感信息
- 密码、token、私钥
→ 绝对不能写入记忆
记忆的反思机制
什么是反思?
定期回顾记忆,提炼更高层次的知识:
`
Episodic Memory: “Day40写了AI搜索,Day41写了AI笔记…”
↓ 反思
Semantic Memory: “用户正在进行AI教程系列,当前进度Day41”
↓ 反思
Procedural Memory: “每篇文章需要包含天气banner、配图、地铁深读板块”
`
反思的触发条件
- 定时触发:每天/每周自动反思
- 事件触发:完成重要任务后反思
- 阈值触发:记忆数量超过阈值时反思
反思的输出
- 合并重复记忆:相同内容的记忆合并
- 提炼模式:从多个事件中提取规律
- 更新置信度:根据使用情况调整教训的置信度
- 清理过期记忆:删除不再相关的记忆
实际案例:Hermes的记忆系统
Hermes Agent使用的是4级记忆系统:
1. Working Memory
- 当前对话历史
- 每次新对话重新开始
2. Episodic Memory
- 通过
memory_recall存储 - 记录具体事件和操作
- 支持语义搜索
3. Semantic Memory
- 通过
memory_save存储 - 保存重要洞察和决策
- 支持概念聚类
4. Procedural Memory
- 通过
memory_lesson_save存储 - 保存经验教训
- 带置信度评分
- 使用时自动强化
记忆固化流程
`python
# 4级记忆固化
working → episodic → semantic → procedural
# 定期执行
memory_consolidate(tier=”episodic”)
memory_consolidate(tier=”semantic”)
memory_consolidate(tier=”procedural”)
`
🚇 地铁深读:记忆与幻觉的关系
记忆如何减少幻觉?
- 提供事实依据
- 没有记忆:AI凭空编造
- 有记忆:AI基于历史事实回答
- 保持一致性
- 没有记忆:每次回答可能矛盾
- 有记忆:回答与历史一致
- 标注来源
- 没有记忆:无法追溯
- 有记忆:可以说明”根据上次的记录…”
记忆也可能导致问题
- 过时信息
- 记忆中的信息可能已经过时
- 需要定期更新和清理
- 错误记忆
- 如果存储了错误信息,会影响后续回答
- 需要验证机制
- 隐私风险
- 记忆可能包含敏感信息
- 需要访问控制和加密
今日小结
| 记忆层级 | 内容 | 生命周期 |
|---|
|———-|——|———-|
| Working Memory | 当前对话 | 会话级 |
|---|---|---|
| Episodic Memory | 具体事件 | 持久化 |
| Semantic Memory | 抽象知识 | 持久化 |
| Procedural Memory | 模式和教训 | 持久化+强化 |
一句话记住: 记忆让AI从”每次都是陌生人”变成”老朋友”。
下期预告
AI PRO·Context Day 5 工具描述与动态组装:让AI正确使用工具
我们将深入解析如何为AI设计工具描述,以及如何根据任务动态组装上下文。
*攀岩者 | 技术总监 | 19年IT全栈实战*
*每天分享AI学习笔记,陪你从零基础到AI达人*
发表回复