返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

多层记忆架构:让你的AI“像人一样记忆”

[复制链接]
链载Ai 显示全部楼层 发表于 3 小时前 |阅读模式 打印 上一主题 下一主题


ingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif;font-size: medium;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5px;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;width: 357.273px;border-collapse: collapse;margin-top: 30px;margin-bottom: 15px;">

一、困境:记忆越多越聪明,但Token有上限

ingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5px;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">在AI对话系统开发中,我们面临一个经典的矛盾:记忆越多,AI表现越"聪明",但记忆多了又会触发Token上限

ingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif;font-size: medium;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5px;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;width: 357.273px;border-collapse: collapse;margin-top: 20px;margin-bottom: 25px;">

很多开发者会说:“我已经用Redis/数据库存储所有对话历史了。” 但这只解决了服务端存储性能问题,并没有解决核心矛盾——当对话记录积累到一定程度,依然会超过模型的上下文窗口限制。

ingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5px;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">我们恰恰希望存储更多的聊天记录,因为只有这样,AI才能真正做到"像人一样"对话。问题的本质是:不是存不存得下,而是“传给模型”时受限于Token上限

ingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif;font-size: medium;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5px;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;width: 357.273px;border-collapse: collapse;margin-top: 30px;margin-bottom: 15px;">

二、破局之道:多层次记忆架构

ingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5px;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">人类大脑处理记忆的方式给了我们启发:不是所有信息都需要时刻在"工作台"上,记忆应该分层管理,按需调取。由此,我们设计了一个三层记忆架构。

ingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif;font-size: medium;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5px;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;width: 357.273px;border-collapse: collapse;margin: 25px 0px;">
第一层:近期记忆 (Short-term)策略:保留最近的10 条对话,维持即时连贯性。
第二层:中期记忆 (Mid-term)策略:通过 RAG 检索与当前最相关的5 条历史对话。
第三层:长期记忆 (Long-term)策略:固化总结关键信息,形成用户画像/知识摘要。
ingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif;font-size: medium;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5px;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;width: 357.273px;border-collapse: collapse;margin-top: 25px;margin-bottom: 15px;">

2.1 第一层:近期记忆 (Short-term Memory)

ingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5px;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">这是AI的"工作记忆",通过一个固定大小的滑动窗口(如最近10轮对话)来维持对话的流畅性。超出部分自动"降级"到中期记忆。

ingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif;font-size: medium;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5px;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;width: 357.273px;border-collapse: collapse;margin-top: 15px;margin-bottom: 15px;">
// 使用Spring AI的ChatMemory
MessageChatMemory chatMemory =newInMemoryChatMemory();
chatMemory.add(newUserMessage(userInput));
chatMemory.add(newAssistantMessage(aiResponse));
if(chatMemory.get().size() > 10) {
archiveToMidTerm(chatMemory.get(0));// 异步转存
}

2.2 第二层:中期记忆 (Mid-term Memory)

核心是RAG(检索增强生成)。它不按时间顺序,而是按"语义相似度"从海量历史中检索出最相关的5条记录,从而破解时间限制,节省Token。

2.3 第三层:长期记忆 (Long-term Memory)

这一层不是存储对话原文,而是存储**精华的结构化总结**,类似于人类的"长期记忆"。我们提供两种实现方式:

方式一:定时批处理

通过定时任务(如每天凌晨)批量处理对话,提炼用户偏好和关键事实。这种方式成本低,适合大规模处理。

@Scheduled(cron ="0 0 2 * * ?")// 每天凌晨2点
publicvoidbatchProcessMemory() {
List<Conversation> conversations = getRecentConversations();
String summary = llm.call("分析对话,提取偏好...");
longTermMemoryRepo.save(summary);
}
方式二:关键点实时处理

在对话中实时识别关键信息点(如用户明确表达偏好、提供个人信息),并立即提取存储。这种方式响应快,用户体验好。

触发器示例:
用户说:“以后回答我时都用代码示例。”
系统立即触发,更新长期记忆中的规则:`response_format: code_examples`。

三、三层协同工作流程

用户输入问题
① 加载近期记忆
(最近10条)
② RAG检索中期记忆
(相关的5条)
③ 读取长期记忆
(用户画像/偏好)
构建完整Prompt (三层记忆组合)
发送给LLM → 生成回复

Token估算:近期(~1500) + 中期(~800) + 长期(~200) ≈2500 Tokens。远低于上限,且信息高度相关!

四、实战建议

层级
推荐存储
原因
近期记忆
Redis / 内存
极速读写,会话结束可清理
中期记忆
向量数据库
支持高效的语义相似度搜索
长期记忆
关系型数据库
结构化存储,易于查询和更新

五、总结

多层次记忆架构的核心思想是:模拟人类记忆的分层特性,让AI在有限的Token预算内,拥有近乎无限的记忆能力。

  • 近期记忆
    保证对话的流畅性。
  • 中期记忆
    通过RAG实现智能关联。
  • 长期记忆
    沉淀用户画像和关键知识。

这不仅是技术问题的解决方案,更是AI从"对话工具"向"智能伙伴"进化的关键一步。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ