Memory 短期长期记忆区别存储检索 整理

1582 words
8 minutes
Memory 短期长期记忆区别存储检索 整理

Memory_短期长期记忆区别存储检索#

问题#

Memory_短期长期记忆区别存储检索

标准回答#

解释「短期记忆」和「长期记忆」在 Agent 系统中的区别,分别适合怎么存储和检索?#

短期记忆:在当前会话或最近几轮对话中临时存储的信息,容量有限,生命周期短(通常一个会话)。长期记忆:跨会话持久化存储的用户偏好、事实知识或历史决策,需要主动写入和检索。

维度短期记忆长期记忆
生命周期单次会话或最近N轮跨会话持久
容量受模型 Context Window 限制理论无限
存储方式内存或会话缓存向量数据库、关系库或文件
检索方式顺序读取或滑动窗口语义搜索或关键词匹配
典型应用多轮对话上下文用户画像、知识库

存储与检索建议

  • 短期记忆:存储在 Redis 或内存缓存中,按会话 ID 隔离,使用 LRU 淘汰策略。检索时按时间顺序拼接进 Prompt。
  • 长期记忆:写入向量数据库(如 Milvus、Qdrant)或关系库。检索时对用户查询做 Embedding,召回 Top-K 相关条目,再注入上下文。

扩展知识#

1. 记忆的生命周期管理#

  • 短期→长期沉淀:通过定时任务或会话结束时,让 Agent 自动总结本次对话的关键信息,调用 memory_upsert_longterm 工具写入长期库。
  • 记忆衰减:对长期记忆可按时间衰减权重,避免过时信息干扰(如半年前的用户偏好可能已改变)。

2. 记忆检索的时机#

  • 主动检索:每轮对话前,用当前用户输入作为查询,去长期记忆库捞取相关条目,与短期记忆一起注入。
  • 按需检索:只有当用户明确问“还记得我之前说过…吗”或任务明显依赖历史信息时才触发检索。

3. 常见框架的实现#

  • LangChainConversationBufferMemory(短期)+ VectorStoreRetrieverMemory(长期)。
  • Spring AI:可自定义 Advisor 在每次调用前加载记忆,或用 @PostConstruct 初始化记忆组件。

面试官追问#

Q1:短期记忆超出 Context Window 怎么办?#

A:采用滑动窗口,只保留最近 N 轮对话。更激进的策略是调用 LLM 对早期对话做摘要压缩(Compaction),用摘要替代原始消息。

Q2:长期记忆写入时如何避免重复或冲突?#

A:写入前先做相似度去重,若已有相似条目则合并或更新。业务上可要求用户显式确认覆盖。

Q3:如何确保 Agent 不把敏感信息写入长期记忆?#

A:在写入前加一层过滤:用规则或小模型检测密码、身份证等敏感字段,或让 Agent 在写入前询问用户“是否记住这条信息”。


总结#

短期记忆服务于当前会话的连贯性,长期记忆沉淀跨会话的价值信息。两者结合可让 Agent 既有“鱼”的短期缓存,又有“渔”的长期知识库。实现时需关注生命周期管理、检索时机与隐私安全。

关键点#

  • 解释「短期记忆」和「长期记忆」在 Agent 系统中的区别,分别适合怎么存储和检索?#

  • 核心回答#

短期记忆:在当前会话或最近几轮对话中临时存储的信息,容量有限,生命周期短(通常一个会话)。

  • 长期记忆:跨会话持久化存储的用户偏好、事实知识或历史决策,需要主动写入和检索。
  • | 维度 | 短期记忆 | 长期记忆 | |------|----------|----------| | 生命周期 | 单次会话或最近N轮 | 跨会话持久 | | 容量 | 受模型 Context Window 限制 | 理论无限 | | 存储方式 | 内存或会话缓存 | 向量数据库、关系库或文件 | | 检索方式 | 顺序读取或滑动窗口 | 语义搜索或关键词匹配 | | 典型应用 | 多轮对话上下文 | 用户画像、知识库 |

存储与检索建议

  • 短期记忆:存储在 Redis 或内存缓存中,按会话 ID 隔离,使用 LRU 淘汰策略。
  • 检索时按时间顺序拼接进 Prompt。

备注#

  • 本文已做格式统一与噪声清理,保留原始语义。
  • 问题#

Memory_短期长期记忆区别存储检索

  • 核心回答#

短期记忆:在当前会话或最近几轮对话中临时存储的信息,容量有限,生命周期短(通常一个会话)。长期记忆:跨会话持久化存储的用户偏好、事实知识或历史决策,需要主动写入和检索。

  • | 维度 | 短期记忆 | 长期记忆 | |------|----------|----------| | 生命周期 | 单次会话或最近N轮 | 跨会话持久 | | 容量 | 受模型 Context Window 限制 | 理论无限 | | 存储方式 | 内存或会话缓存 | 向量数据库、关系库或文件 | | 检索方式 | 顺序读取或滑动窗口 | 语义搜索或关键词匹配 | | 典型应用 | 多轮对话上下文 | 用户画像、知识库 |

存储与检索建议

  • 短期记忆:存储在 Redis 或内存缓存中,按会话 ID 隔离,使用 LRU 淘汰策略。检索时按时间顺序拼接进 Prompt。
    • 长期记忆:写入向量数据库(如 Milvus、Qdrant)或关系库。检索时对用户查询做 Embedding,召回 Top-K 相关条目,再注入上下文。

  • 短期→长期沉淀:通过定时任务或会话结束时,让 Agent 自动总结本次对话的关键信息,调用 memory_upsert_longterm 工具写入长期库。

  • 本文已做格式统一与噪声清理,保留原始语义。

  • 短期记忆:在当前会话或最近几轮对话中临时存储的信息,容量有限,生命周期短(通常一个会话)。长期记忆:跨会话持久化存储的用户偏好、事实知识或历史决策,需要主动写入和检索。

  • | 维度 | 短期记忆 | 长期记忆 |

  • |------|----------|----------|

  • | 生命周期 | 单次会话或最近N轮 | 跨会话持久 |

  • | 容量 | 受模型 Context Window 限制 | 理论无限 |

  • 本文已做格式统一与噪声清理,保留原始语义。

Share Article

If this article helped you, please share it with others!

Memory 短期长期记忆区别存储检索 整理
https://estars-blog.pages.dev/posts/求职作战室-面经-agent面经-memory_短期长期记忆区别存储检索_整理/
Author
Estars
Published at
2026-06-10
License
CC BY-NC-SA 4.0
Profile Image of the Author
Estars
这条路要走完,才能看到世界的终点,是海纳百川,还是星火燎原。
公告
欢迎来到我的博客!这是一则示例公告。
Music
Cover

Music

No playing

0:00 0:00
No lyrics available
Categories
Tags
Site Statistics
Posts
91
Categories
5
Tags
44
Total Words
374,063
Running Days
0 days
Last Activity
0 days ago

Table of Contents