9. Agent 的长短期记忆系统怎么做的?记忆是怎么存的?粒度是多少?怎么用的?

9. Agent 的长短期记忆系统怎么做的?记忆是怎么存的?粒度是多少?怎么用的?

👔面试官:你们项目里 Agent 的记忆系统是怎么做的,短期记忆和长期记忆分别存在哪?

🙋‍♂️我:短期记忆就是把对话历史存在内存里,长期记忆存数据库,需要的时候查出来用。

👔面试官:长期记忆「存数据库」?那你用的什么数据库,怎么查的,按关键词全文搜索吗?

🙋‍♂️我:也可以用关键词搜索,就是普通的字符串匹配,比如用 SQL 的 LIKE 查询......

👔面试官:你这样搜根本搜不到语义相关的内容。比如用户问的是「代码习惯」,历史里存的是「Python 风格偏好」,关键词不重叠,你怎么匹配?

🙋‍♂️我:那......我把粒度搞细一点,把每句话都拆开存,这样关键词覆盖更全。

👔面试官:拆得越细,检索噪音越大,一个完整的用户偏好被拆成四五条,检索时只命中其中两条,拿到的是碎片化信息,这才是问题所在。你知道长期记忆的正确存法是什么吗?

好,被追问到这里说明这道题的坑不少,咱来系统说一下 Agent 记忆系统的正确做法。

💡-简要回答

我理解记忆系统分两层。

短期记忆就是 context window 里的对话历史,存当前任务的中间状态,任务结束就清掉;长期记忆用向量数据库存,把信息 embedding 后写入,用的时候做语义检索拿回来注入 prompt。

粒度上我通常按「一次完整交互」或「一个关键事件」为单位存,太细碎检索噪音大,太粗糙又丢失细节,这个需要根据业务实际调整。

📝-详细解析

先假设一个没有记忆系统的 Agent,感受一下它会有多不堪用。

复制代码
class ShortTermMemory:
    def __init__(self):
        # messages 列表就是 LLM 的工作台
        # 每条消息有 role(谁说的)和 content(说了什么)
        self.messages = []

    def add(self, role: str, content: str):
        # role 有三种:user(用户输入)、assistant(LLM 输出)、tool(工具返回结果)
        # 每一步的内容都要追加进来,保持完整的任务状态
        self.messages.append({"role": role, "content": content})

    def get_context(self):
        # 调 LLM 时把完整的 messages 传进去
        # LLM 会读取这份完整历史来理解当前状态
        return self.messages

    def clear(self):
        # 任务结束后清空,准备迎接下一个任务
        # 清空意味着这次任务的所有中间状态都消失了
        self.messages = []

 一次任务执行的示例
memory = ShortTermMemory()
memory.add("user", "帮我分析这几家竞品的核心功能差异")
memory.add("assistant", "好的,我先搜索一下竞品 A 的信息")
memory.add("tool", "搜索结果:竞品 A 的核心功能是实时协作编辑,支持最多 50 人同时在线......")
memory.add("assistant", "已拿到竞品 A 的信息,再搜竞品 B")

 每次调 LLM 都传完整历史,它才能知道自己做到哪一步了
response = llm.chat(messages=memory.get_context())
相关推荐
无语的小歪歪1 小时前
ATF 智测 1.0
python·测试工具·集成测试
金仓社区的KK1 小时前
数据库主备切换后,业务恢复了吗?五层验收清单
数据库·云计算·软件构建
zoyation1 小时前
HBase 2.5.16 单机部署
大数据·数据库·hbase
czq_26867194871 小时前
Python打卡第45天
开发语言·python
l1t1 小时前
DeepSeek总结的 PostgreSQL 中的二进制只读副本,第一部分
数据库·postgresql
FOAF-lambda1 小时前
Python实战:基于OpenCV与单调栈,精准定位PDF中最大的空白区域
python·opencv·pdf
terry6001 小时前
企业数据查询接口防爬实战:图形验证码服务端校验接入与限流设计(附Python)
python·信息与通信·图形验证码·反爬虫·人机验证·行为验证码·滑动拼图验证
讯捷蓝达1 小时前
机房突发断电,5 盘 RAID硬盘全部掉线: 急速上门救援,现场4小时华为2288H V5服务器数据完整恢复
运维·服务器·数据库
量化炼金 (CodeAlchemy)1 小时前
【Python】pandas vs polars 简单性能对比测试
开发语言·python·pandas