Skip to content

31. 你会如何设计一个 AI 应用的记忆系统? ​

难度 P1 高频 · 岗位 应用 · 频率 ★★★ · 预计阅读 5 min

本题阅读地图 ​

  1. 💡 简要回答
  2. 📝 详细解析
  3. 🎯 面试总结

👔面试官:你会如何设计一个 AI 应用的记忆系统?

🙋‍♂️我:把对话历史存起来,下次再用。

👔面试官:太简单了。记忆要分层:短期上下文(消息历史)、中期摘要(对话总结)、长期知识(用户画像)。你能讲清楚分层的依据和存储选型吗?

🙋‍♂️我:短期用内存,长期用数据库?

👔面试官:对,但还有:短期记忆也有窗口限制,中期摘要是怎么做(窗口压缩 vs 周期性总结),长期记忆是怎么检索(向量检索 vs 结构化查询)。这些都要系统考虑。

💡 简要回答 ​

记忆三层架构:

层级内容存储保留时间
短期记忆原始消息历史(最近 N 轮)内存/Redis会话级
中期记忆对话摘要(结构化总结)Redis/DB跨会话
长期记忆用户画像、偏好、关键事实向量库/关系库持久

设计原则:

  • 短期保原样,中期做摘要,长期落结构化
  • 每层有不同的存储和检索方式

📝 详细解析 ​

短期记忆 ​

内容:最近 N 轮对话的原始消息。

存储:

  • 内存:最快,但进程重启丢失
  • Redis:快,可持久,TTL 控制

窗口策略:

  • 滑动窗口:只保留最近 10 轮
  • Token 限制:保留最近 4000 Token

局限:

  • 窗口有限,早期信息会丢失
  • 原样保留,成本高

中期记忆 ​

内容:对话的结构化摘要。

生成方式:

  • 窗口压缩:每 N 轮后生成摘要,替代原消息
  • 周期性总结:定时把历史压成总结

摘要结构:

json
{
  "confirmed_facts": ["用户是VIP", "订单号是12345"],
  "open_tasks": ["待查询退款进度"],
  "user_preferences": {"语气": "正式"},
  "context_summary": "用户在咨询订单退款"
}

存储:Redis、数据库,跨会话可访问。

长期记忆 ​

内容:

  • 用户画像(年龄、职业、偏好)
  • 历史关键事件(购买记录、投诉记录)
  • 领域知识(专业术语理解)

存储与检索:

  • 向量库:语义检索相关记忆
  • 关系库:结构化查询(用户 ID → 画像)
  • 图数据库:关系型记忆

三层协作 ​

用户提问 → 检索长期记忆(相关背景)
         → 加载中期记忆(当前任务摘要)
         → 拼接短期记忆(最近对话)
         → 生成回答

🎯 面试总结 ​

记忆分三层:短期(原样)、中期(摘要)、长期(结构化)。每层存储、保留策略不同。


章节首页 · ← Q30 · Q32 →

最后更新2026-05-01
难度P1
频率medium
阅读5 min
主题memory
觉得有帮助?把这个链接转给正在求职的朋友 · 用 Ctrl + K 全站搜索其它题