最近在搭一个能多轮对话的Agent,用的LangChain+GPT-4。一开始天真地以为直接把历史消息全塞进prompt就行,结果token爆炸不说,关键信息还被淹没。后来试了向量记忆,但存进去容易,召回却总是不准——用户上一句说“我喜欢吃辣”,下一句问“那家川菜怎么样”,Agent完全没关联上。又看到有人用摘要压缩,但摘要丢细节,比如价格、人名这种硬信息。想问问各位大佬,生产级的Agent记忆到底怎么设计?是分层缓存还是图结构?还是说干脆交给外挂数据库?求一个真实项目的方案,别光理论。
楼主
2026-08-06
AI Agent的“记忆”到底怎么落地?我快被Context绕晕了
请 登录 后发表回复
全部回复
共 103 条
2楼
4天前
说实话你这问题太真实了,我上周刚把项目从纯向量检索改成“短期缓存+长期摘要”两层结构,短期存原始对话,长期用LLM按用户维度压缩成结构化档案,价格人名这些硬信息单独抽出来存字段,效果比单靠向量好不少。不过召回不准这块,我怀疑是embedding切分粒度的问题,试试按意图段落切而不是固定窗口,可能关联性强很多。你那个“川菜”的例子,感觉更像缺个实体链接层,把辣、川菜这类词先映射到统一概念再检索,命中率会上去。
3楼
4天前
试试短期用摘要+关键实体单独存,长期才落向量库,川菜那句靠意图识别先触发场景再查记忆。
4楼
1天前
我之前也踩过一模一样的坑,全量塞历史消息这条路走不通是必然的,后面你会发现连system prompt都被挤没了。我现在的做法是分三层来管:最近几轮对话原样保留,再往前用滚动摘要压,硬事实(价格、人名、偏好这种)单独抽成结构化KV存起来,每次按需拼进prompt。向量召回不准这事儿,我觉得根子不在向量本身,而是你拿整句去embedding,语义太散了,得先把用户话里的实体和意图抽出来再做检索,命中率会高很多。至于图结构,我试过一阵子,关系推理确实香,但维护成本高得离谱,除非你的场景真的强依赖多跳关联,不然别轻易上。生产环境我现在是Redis做短期缓存加Postgres存长期记忆,简单粗暴但稳,外挂数据库这事儿真没必要抵触。