拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

让大模型拥有长期记忆:cgft-llm AI记忆与上下文管理系统设计全解析

让大模型拥有长期记忆:cgft-llm AI记忆与上下文管理系统设计全解析

让大模型拥有长期记忆:cgft-llm AI记忆与上下文管理系统设计全解析

【免费下载链接】cgft-llmcgft-llm 是一个学习大语言模型(LLM)开发的开源资源。它提供代码、文档和视频教程,帮助用户通过实践掌握前沿核心 LLM 技术项目地址: https://gitcode.com/echonoshy/cgft-llm

cgft-llm 开源仓库中的「AI记忆与上下文管理」专题,完整拆解了一套让大模型(LLM)拥有长期记忆的 Agent 系统:从记忆分类、混合检索、语义压缩到三层上下文组装,帮助新手快速看懂 AI 记忆系统如何落地。

一、为什么大模型需要"长期记忆"?

打开任意一个聊天机器人,关掉窗口再打开,它就不认识你了。这是因为LLM 本身是无状态的——每次请求只处理当前上下文窗口内的内容,一旦对话超过窗口上限,早期信息就会被丢弃。

要做出"越用越懂你"的 AI 助手,必须解决三个核心问题:

痛点说明
🧠 上下文窗口有限长对话超出 Token 上限后,早期信息丢失
🔗 跨会话连续性没有记忆,每次对话都从零开始
🎯 个性化不足无法积累用户偏好,回复永远"千人一面"

cgft-llm 的方案是:给 AI 配一个持久、可检索、会进化的记忆系统,而不是把它当成一个无状态对话窗口。

📄 完整设计蓝图见:01-agent-sys/memory-context/memory.html

二、三层上下文架构:一次对话如何"组装记忆"

系统每次响应用户时,会从三个层次组装上下文,注入 LLM:

┌─────────────────────────────────────────┐ │ 第1层 Evergreen 常青记忆(始终注入) │ │ 用户的长期事实:偏好、关系、目标 → 系统提示词 │ ├─────────────────────────────────────────┤ │ 第2层 Knowledge 知识检索(按相关性检索) │ │ 混合搜索召回最相关的历史知识 → 系统提示词 │ ├─────────────────────────────────────────┤ │ 第3层 Session 会话上下文(近期未压缩消息) │ │ 保持当前对话连贯 → 作为 Messages 历史 │ └─────────────────────────────────────────┘

三层分工一目了然:

  1. Evergreen 常青记忆:如"用户是一名后端工程师"、"用户偏好简洁回复"。全量注入,无需搜索。
  2. Knowledge 知识检索:从统一知识库中按当前问题做混合搜索,取最相关的 Top-K 片段。
  3. Session 会话上下文:当前会话尚未压缩的消息,保证即时连贯性,超阈值自动触发压缩。

💡 这样设计的妙处:长期信息"永远在场",历史信息"按需召回",近期对话"原样保留"——三层互补,既不浪费 Token,又不会"失忆"。

三、四种记忆类型:把对话变成结构化知识

对话产生的原始消息,经提取器加工后会变成四类可检索的知识条目:

记忆类型英文作用示例
📖 情节记忆Episode对一段对话的叙事性总结,类似人类"回忆""用户讨论了周末去杭州旅行的计划"
📌 事件日志Event提取出的原子事实,独立可检索"用户的生日是 3 月 15 日"
🔮 前瞻预测Foresight推断出的未来事件,附时间窗口与证据链"用户下周可能请假(有医院预约)"
🌿 常青记忆Evergreen长期稳定事实,始终注入上下文"用户养了一只叫小橘的猫"

所有条目统一存储在knowledge_entries知识表中,写入前会向量化(1024 维 embedding),支持后续语义检索。

四、混合检索:向量 + 全文 + 时间衰减 + MMR

"记住了"只是第一步,关键是如何精准找回。系统采用四步混合检索流水线:

1️⃣ 双路召回

  • 向量搜索:查询向量化后做余弦相似度匹配,擅长"意思相近但用词不同"
  • 全文搜索:基于 PostgreSQL 的 tsvector/ts_rank,擅长精确关键词命中

2️⃣ 分数融合

score = 0.7 × 向量相似度 + 0.3 × 全文排名

3️⃣ 时间衰减

score ×= exp(-ln(2)/30 × 记忆年龄天数) # 半衰期 30 天

记忆不会被删除,但一个月前的权重降至 50%,两个月前降至 25%——新鲜记忆自然获得更高优先级。

4️⃣ MMR 重排序:在相关性基础上惩罚与已选结果过于相似的条目,兼顾相关性 + 多样性,最终输出 Top-K(默认 10 条)。

这套"向量+全文"的混合策略正是 RAG 知识库的核心思路,可与仓库中的 llama-index RAG 实战 和 rag-knowledge-base 高效 RAG 知识库 对照学习。

五、记忆生命周期与语义压缩:Token 不够用了怎么办?

一条记忆从诞生到被检索,经历完整生命周期:

产生 → 提取 → 存储 → 检索 对话边界检测 三提取器并发 向量化写入 混合搜索召回 生成 MemCell (情节/事件/前瞻) PostgreSQL 注入对话上下文

而当会话消息 Token 数超过阈值(64000)时,语义压缩(Semantic Compaction)自动触发:

  • 对会话加行级锁,防止并发重复压缩
  • 消息按 20 条分段,并行调用 LLM 生成摘要
  • 创建compaction_summary摘要消息,原消息标记is_compacted=true

压缩后,早期对话浓缩为摘要保留在上下文里——既省下 Token,又不丢失关键信息。后台压缩采用 fire-and-forget 异步任务,完全不阻塞用户响应。

📄 数据流细节见:01-agent-sys/memory-context/architecture.html

六、工程实践:这套系统是怎么搭起来的

从 工程设计文档 可以看到几个值得学习的工程决策:

设计点实现方式
技术栈Python 3.13 + FastAPI + PostgreSQL 17 + pgvector,向量与关系数据统一存储,免去独立向量数据库
可插拔 ProviderLLM / Embedding 通过工厂模式热插拔,本地 vLLM 与云端 API 同一套 OpenAI 兼容协议
并发安全SELECT ... FOR UPDATE+skip_locked行级锁,杜绝重复压缩
异步任务压缩、记忆提取均为后台任务,API 立即返回 task_id,前端轮询进度
双语提示词prompts/en 与 prompts/zh 镜像组织,配置一键切换提取语言

整体架构为:React 前端 ⇄ FastAPI 后端 ⇄ PostgreSQL+pgvector ⇄ LLM/Embedding 服务,前后端通过 SSE 流式渲染聊天。

七、配套学习资料导航 🧭

想深入这套 AI 记忆与上下文管理系统,建议按以下顺序阅读仓库资料:

  • 📑 记忆与上下文核心设计:01-agent-sys/memory-context/memory.html
  • 🏗️ 项目架构与数据流:01-agent-sys/memory-context/architecture.html
  • ⚙️ 工程设计(技术选型/并发控制):01-agent-sys/memory-context/engineering.html
  • 🤖 Agent 服务架构总览:01-agent-sys/agent-service-architecture.html
  • 📚 关联实战:llama-index 实现 RAG、构建高效 RAG 知识库

八、写在最后

大模型的"记忆"不是玄学,而是一套清晰的工程体系:分类存储(四种记忆类型)+精准召回(混合检索)+空间管理(语义压缩)+分层注入(三层上下文)。

cgft-llm 把这个体系从设计到落地完整开源了出来,对想入门Agent 记忆系统设计、LLM 上下文管理、RAG 检索的同学来说,是一份难得的"可阅读、可复现"的完整教材。动手 clone 下来,边读边改,你也能让自己的大模型应用"过目不忘"。🚀

【免费下载链接】cgft-llmcgft-llm 是一个学习大语言模型(LLM)开发的开源资源。它提供代码、文档和视频教程,帮助用户通过实践掌握前沿核心 LLM 技术项目地址: https://gitcode.com/echonoshy/cgft-llm

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表