AI 应用系统中如何设计用户会话、上下文管理和历史记录?

AI 应用系统中如何设计用户会话、上下文管理和历史记录?
这道题考的是上下文工程,是 AI 应用落地的核心能力。说白了就是:怎么让 AI "记住"之前聊过什么、知道用户的偏好、还能从历史里找有用信息。面试官想看你对记忆系统的整体认知,不是让你背某个产品的 API。
上下文工程的三层楼架构
先建个整体框架。上下文工程分三层:输入层→记忆层→输出层。
输入层负责"喂"给 AI 各种信息:系统指令(比如"你是个助医")、外部知识(从知识库查来的资料)、工具定义(AI 能调哪些 API)。记忆层是核心,分成短期记忆和长期记忆——短期是当前对话的上下文,长期是跨会话积累的用户偏好。输出层则把 AI 的回复和工具执行结果返回给用户。

类比一下,就像一个优秀的私人助理:输入层是他的眼睛耳朵(看任务、查资料),记忆层是他大脑里的信息存储(短期是今天要办的事,长期是老板的脾气性格),输出层是他汇报工作、调用资源的能力。三层配合好了,AI 才能真正"懂"你。
记忆也有生老病死——生命周期四步走
记忆不是存进去就完事了,它有自己的生命周期:编码→存储→提取→巩固。
编码阶段,用 LLM 把对话内容转成结构化信息,常见做法是提取事实三元组(谁、做了什么、结果怎样)或者生成摘要。这步做不好,后面的检索就是垃圾进垃圾出。
存储阶段,把编码后的信息写入向量数据库,同时建立索引。向量检索适合语义相似性查找,但光靠向量不够,还得配合关键词索引。
提取阶段,用户发起新请求时,从记忆库里召回相关内容。常用方案是向量检索+BM25 关键词混合,再用重排序(Reranker)精选 Top 结果。复杂场景还会用知识图谱做关系推理。
巩固阶段,把短期记忆转成长期记忆的异步任务。用户说了三次"我喜欢简洁风格",系统应该自动识别这是个偏好,写入长期记忆,下次直接用。
还有遗忘机制——不是所有记忆都要永久保留。用权重衰减或冲突标记淘汰低价值记忆,保持记忆库的质量。

把这个想象成图书馆管理:新书进来要编目(编码),按分类书架上架(存储),读者找书要能快速定位(提取),热门书放显眼位置(巩固),过时的书要下架(遗忘)。一个运转良好的图书馆,靠的是这套流程,不是堆书。
长期记忆 vs RAG,别再傻傻分不清
这两个概念经常被混用,但职责完全不同。
长期记忆解决的是跨会话信息持久化。用户的偏好、习惯、历史交互结论——这些需要异步巩固、慢慢沉淀的东西,放长期记忆。比如用户说过"我家里有小孩,选产品时要注意安全",这句话要记住,下次推荐时直接用上。
RAG(检索增强生成)解决的是动态信息检索。在知识库或文档里实时查资料,组装到上下文中让 AI 回答。文档更新了、知识变化了,RAG 那边同步更新,不影响长期记忆。

简单说:长期记忆记住用户的"脾气性格",RAG 是在书库里"查资料"。一个是慢功夫沉淀,一个是临时抱佛脚。边界确实有些模糊,但记住一点:长期记忆更新频率低、注重用户个性化;RAG 更新频率高、注重知识实时性。
主流产品套路深——选型看场景
生产环境不是从零造轮子,要了解现有方案的思路。
Mem0:单次抽取+多信号检索。每次交互后抽一次记忆,检索时综合多路信号召回。适合通用对话场景,在 LoCoMo 基准上拿了 91.6 分,每次检索仅消耗 7K Token。
LETTA:虚拟内存分页思路。借鉴操作系统内存管理,把记忆当虚拟内存,支持分页加载和淘汰。适合长对话场景,不会因为上下文太长爆掉。
ZEP:时间感知知识图谱。每个记忆节点带时间戳,能做时序推理。适合企业多租户场景,隐私合规做得好。
A-MEM:卡片笔记法( Luhmann Zettelkasten)。把记忆组织成互联的卡片,适合知识密集型任务,需要深度推理的场景。

选型没有标准答案,看你的业务场景。多租户企业应用选 ZEP,知识密集型选 A-MEM,通用对话选 Mem0,长上下文选 LETTA。生产级架构还要关注:多维索引(Vector+Graph+Keyword 混合)、隐私合规(GDPR 擦除)、冷热分离(热记忆常驻内存,冷记忆放对象存储)。
面试加分——这些坑你知道吗
聊到这儿,面试官可能会挖深一点,问你实际踩过的坑。
Lost in the Middle。大模型对输入文本的中段理解弱,首尾记得清。这是注意力机制的特性,不是 bug。解决方案是用虚拟内存分层,把关键信息放首尾,中间压缩或放不太重要的内容。
向量库时间衰减的坑。有人设计"越老的记忆权重越低",想全量计算衰减——这是错的。生产环境里每天百万级记忆,全量重算根本不现实。正确做法是静态召回后,在 Reranker 阶段做动态权重调整。
向量存储选型。看两个指标:召回率目标(P99 ≥ 0.95)和延迟要求(低并发场景数十毫秒级)。HNSW 适合追求召回率,IVF 适合追求延迟,要权衡。

面试怎么答
基础版:
上下文工程分输入层、记忆层、输出层。记忆层又分短期和长期,短期记忆处理当前对话上下文,长期记忆跨会话存储用户偏好。记忆有生命周期:编码(用 LLM 提取结构化信息)、存储(写向量库建索引)、提取(向量检索+关键词混合召回)、巩固(异步转长期记忆)。长期记忆和 RAG 职责不同,前者沉淀用户个性化,后者实时检索动态知识。向量检索是主流方案,常用 HNSW/IVF 索引。
加分版:
补充几个细节——记忆要分层,用虚拟内存思路处理长上下文;向量库时间衰减别全量算,在 Reranker 阶段动态调整;多维索引(Vector+Graph+Keyword)和冷热分离是生产级实践。选型建议:通用对话选 Mem0、长上下文选 LETTA、多租户企业选 ZEP、知识密集型选 A-MEM。
一句话总结
上下文工程的核心是记忆生命周期管理:用编码→存储→提取→巩固的闭环,让 AI 记住该记住的、忘掉该忘掉的。
