零基础 | AI应用记忆管理:从短期到长期的完整实践指南

发布时间:2026/8/12 21:20:14

零基础 | AI应用记忆管理:从短期到长期的完整实践指南
文章目录📄 文档概述🔧 技术栈详解版本兼容性说明PythonLangChainmem0ChromaDB技术栈协作关系技术选型理由🎯 核心内容📚 一、记忆的本质:大模型如何拥有长期记忆短期记忆(Short-term Memory)长期记忆(Long-term Memory)二、核心问题与解决方案🤔 核心问题💡 解决方案📁 二、项目架构:从短期到长期的记忆系统设计🔧 二、短期记忆实现 - ChatHistoryManager🎯 功能概述二、核心技术点三、代码实现1. ChatHistoryManager类📝 使用示例📊 运行结果🚀 三、长期记忆实现 - MemoryManager🧠 mem0核心介绍⚙️ mem0配置实现1. memory_config.py - 配置管理2. 环境变量配置(.env)🏗️ MemoryManager类实现📝 使用示例🧪 完整示例(example.py)六、运行结果示例🔗 第五部分:短期与长期记忆的融合实践一、融合架构设计二、完整实现示例三、融合策略建议🧪 第六部分:测试实现一、ChatHistoryManager测试二、MemoryManager测试(模拟测试)三、运行测试📊 第七部分:技术对比与选型一、短期记忆 vs 长期记忆二、mem0的优缺点优点缺点三、项目特色💡 第八部分:学习建议与最佳实践一、存储扩展建议二、性能优化建议三、安全与隐私建议四、功能增强建议五、工程实践建议📚 第九部分:相关资源LangChain相关mem0相关向量数据库其他资源🎯 总结🤔 思考题📝 附录:快速开始安装依赖配置环境变量运行示例快速使用📄 文档概述创建时间:2026-01-25作者:zuozewei功能:AI应用记忆管理完整指南技术栈:Python、LangChain、mem0、ChromaDB、OpenAI API、DeepSeek项目路径:https://github.com/zuozewei/blog-example/tree/master/AI-LLM/🔧 技术栈详解版本兼容性说明本文采用以下经过验证的版本组合:Python 3.10+LangChain v0.2.10mem0 v1.1.2ChromaDB v0.5.11Python定义:AI/ML领域的主流开发语言,生态系统成熟完善。在本项目中的作用:作为主要开发语言,实现记忆管理逻辑丰富的AI/ML生态系统支持简洁易读的语法,便于快速开发关键特性:动态类型系统强大的标准库跨平台支持活跃的社区支持LangChain定义:一个用于构建大模型应用的框架,提供模块化组件和工具链。在本项目中的作用:提供聊天历史管理接口(BaseChatMessageHistory)实现文件持久化存储(FileChatMessageHistory)集成大模型调用(ChatOpenAI)提供提示词模板(ChatPromptTemplate)核心组件:ChatMessageHistories:管理对话历史记录Chat Models:与大模型交互的接口Prompts:提示词模板管理Chains:将多个组件串联成工作流优势:模块化设计,易于组合丰富的预构建组件支持多种大模型提供商活跃的社区和文档mem0定义:为大模型应用提供的可自我改进的记忆层框架,基于RAG架构改造而来。在本项目中的作用:实现长期记忆的存储和检索自动从对话中提取关键信息支持语义搜索和向量检索提供多用户隔离机制核心功能:记忆存储:将信息持久化到向量数据库记忆检索:基于语义相似度检索相关记忆记忆提取:自动从对话中提取事实信息记忆管理:支持增删改查操作工作原理:接收用户输入和对话历史调用LLM提取关键事实(自动去重、合并相似记忆)将事实转换为向量嵌入存储到向量数据库(ChromaDB)查询时进行语义检索(支持多模态检索)返回相关记忆作为上下文与传统RAG的差异:维度传统RAGmem0数据来源手动上传文档自动从对话中提取记忆更新静态文档动态学习用户偏好检索方式关键词匹配语义相似度检索用户隔离无原生支持内置多用户隔离机制优势:API简洁,易于集成支持多种向量数据库自动记忆提取,减少人工干预支持多用户隔离可扩展性强内置记忆去重与融合机制ChromaDB定义:一个开源的向量数据库,专为AI应用设计,支持语义搜索和相似度检索。在本项目中的作用:作为mem0的向量存储后端存储记忆的向量嵌入支持高效的语义检索提供本地持久化存储核心特性:向量存储:存储高维向量数据语义检索:基于向量相似度搜索元数据过滤:支持按元数据筛选本地优先:支持本地部署,无需云服务轻量级:易于集成和部署工作原理:将文本转换为向量嵌入(Embedding)存储向量和元数据查询时将查询文本转换为向量计算向量相似度(如余弦相似度)返回最相似的记录优势:开源免费,无成本压力本地部署,数据隐私可控简单易用,快速上手支持多种嵌入模型良好的Python集成技术栈协作关系┌─────────────────────────────────────────────────────────┐ │ 应用层(Python) │ │ ┌──────────────┐ ┌──────────────┐ ┌─────────────┐ │ │ │ChatHistory │ │MemoryManager │ │ Example │ │ │ │ Manager │ │ │ │ │ │ │ └──────┬───────┘ └──────┬───────┘ └──────┬──────┘ │ └─────────┼──────────────────┼──────────────────┼────────┘ │ │ │ │ │ │ ┌─────────┴──────────────────┴──────────────────┴────────┐ │ 框架层(LangChain + mem0) │ │ ┌──────────────────┐ ┌──────────────────┐ │ │ │ FileChatMessage │ │ mem0 Memory │ │ │ │ History │ │ │ │ │ └────────┬─────────┘ └────────┬─────────┘ │ └───────────┼────────────────────┼───────────────────────┘ │ │ │ │ ┌───────────┴────────────────────┴───────────────────────┐ │ 存储层(ChromaDB + SQLite) │ │ ┌──────────────┐ ┌──────────────┐ ┌─────────────┐ │ │ │ ChromaDB │ │ SQLite │ │ JSON Files │ │ │ │ 向量数据库 │ │ 历史数据库 │ │ 聊天历史 │ │ │ └──────────────┘ └──────────────┘ └─────────────┘ │ └──────────────────────────────────────────────────────────┘数据流说明:用户输入 → Python应用层短期记忆 → LangChain的FileChatMessageHistory → JSON文件长期记忆 → mem0 → ChromaDB向量数据库对话历史 → mem0 → SQLite数据库检索时 → mem0从ChromaDB检索 → 返回相关记忆技术选型理由技术选型理由适用场景PythonAI/ML领域主流语言,生态丰富快速开发、原型验证LangChain提供标准化组件,降低开发复杂度大模型应用开发mem0专注记忆管理,API简洁长期记忆实现ChromaDB开源免费,本地部署,隐私可控向量存储和检索🎯 核心内容本指南全面介绍AI应用中的记忆管理技术,涵盖:短期记忆:基于LangChain的聊天历史管理(ChatHistoryManager)长期记忆:基于mem0的持久化记忆存储(MemoryManager)记忆融合:短期与长期记忆的协同使用工程实践:完整的项目结构、配置、测试和示例📚 一、记忆的本质:大模型如何拥有长期记忆大模型天生是"鱼的记忆"——每次对话都是全新的开始。要让AI记住用户的偏好和历史交互,我们需要通过两种方式实现记忆:短期记忆(Short-term Memory)将聊天历史放入提示词仅能记住"近期"内容受上下文窗口限制适合单次会话的连续对话实现方式:基于LangChain的FileChatMessageHistory长期记忆(Long-term Memory)突破上下文窗口限制持久存储用户信息、偏好等通过检索相关内容复用适合跨会话的个性化服务实现方式:基于mem0 + ChromaDB向量数据库二、核心问题与解决方案🤔 核心问题大模型上下文窗口大小有限,无法承载无限历史过大上下文会导致Token成本飙升传输与计算效率低💡 解决方案借鉴RAG(检索增强生成)思路:将需记忆内容存入向量数据库(ChromaDB)生成时先检索相关内容拼接上下文给大模型解决信息存储、检索、深度挖掘问题📁 二、项目架构:从短期到长期的记忆系统设计src/mem0长期记忆/ ├── chat_history_manager.py # 短期记忆管理器 ├── memory_manager.py # 长期记忆管理器 ├── memory_config.py # mem0配置 ├── example.py # 使用示例 ├── .env # 环境变量配置 ├── history.db # SQLite历史数据库 ├── mem0db/ # ChromaDB向量数据库目录 │ ├── chroma.sqlite3 │ └── [uuid]/ # 向量数据文件 ├── tests/ # 测试目录 │ ├── __init__.py │ ├── test_chat_history_manager.py │ └── test_memory_manager.py └── README.md # 项目说明文档🔧 二、短期记忆实现 - ChatHistoryManager🎯 功能概述ChatHistoryManager为对话系统提供短期记忆能力,主要特点包括:支持按会话ID管理不同用户的聊天历史内存缓存与文件持久化相结合基于LangChain的FileChatMessageHistory会话隔离机制类封装,易于扩展二、核心技术点会话历史管理:使用session_id隔离不同会话内存缓存机制:mem_store字典缓存会话历史文件持久化存储:JSON格式存储到本地文件LangChain集成:基于BaseChatMessageHistory接口会话隔离:每个session_id独立存储三、代码实现1. ChatHistoryManager类# -*- coding: utf-8 -*-""" @Time : 2025/12/14 04:33 @Author : zuozewei @File : chat_history_manager.py @Desc : 聊天历史管理 - 基于文件持久化+内存缓存,支持多会话隔离,实现对话历史的保存、读取和管理 """fromlangchain_community.chat_message_historiesimportFileChatMessageHistoryfromlangchain_core.chat_historyimportBaseChatMessageHistoryclassChatHistoryManager:"""聊天历史管理器类"""def__init__(self):"""初始化聊天历史管理器"""self.mem_store={}defget_session_history(self,session_id:str)-BaseChatMessageHistory:""" 获取会话历史 :param session_id: 会话ID :return: 会话历史 """ifsession_idnotinself.mem_store:self.mem_store[session_id]=FileChatMessageHistory(file_path=f"./history_{session_id}.json")returnself.mem_store[session_id]核心设计:使用类封装,避免全局变量mem_store字典缓存会话历史对象首次访问时创建FileChatMessageHistory对象后续访问直接返回缓存对象文件路径格式:history_{session_id}.json📝 使用示例fromchat_history_managerimportChatHistoryManagerfromlangchain_core.messagesimportHumanMessage,AIMessage# 创建管理器实例manager=ChatHistoryManager()# 获取或创建会话历史history=manager.get_session_history("user123")# 添加消息history.add_message(HumanMessage(content="你好,请问今天天气怎么样?"))history.add_message(AIMessage(content="今天天气晴朗,温度适宜。"))# 获取所有消息messages=history.messagesprint(f"会话历史包含{len(messages)}条消息")formsginmessages:print(f"{msg.type}:{msg.content}")# 清除历史记录history.clear()📊 运行结果会话历史包含 2 条消息 human: 你好,请问今天天气怎么样? ai: 今天天气晴朗,温度适宜。🚀 三、长期记忆实现 - MemoryManager🧠 mem0核心介绍定义:为大模型应用提供的可自我改进的记忆层,由RAG框架改造而来,替代传统RAG,统一短期+长期记忆。优势:API简洁易懂、功能强大能满足长期记忆核心需求工程化友好支持语义检索,记忆提取精准支持多用户隔离⚙️ mem0配置实现1. memory_config.py - 配置管理# -*- coding: utf-8 -*-""" @Time : 2025/12/14 04:33 @Author : zuozewei @File : memory_config.py @Desc : mem0长期记忆配置 - 基于向量存储的持久化记忆系统 """importosimportwarningsfromdotenvimportload_dotenv load_dotenv()api_base=os.getenv("OPENAI_BASE_URL")oros.getenv("OPENAI_API_BASE")os.environ["OPENAI_API_KEY"]=os.getenv("OPENAI_API_KEY")os.environ["OPENAI_BASE_URL"]=api_basefrommem0importMemorydefcreate_memory():""" 创建Memory实例 :return: Memory实例 """returnMemory.from_config({"version":"v1.1","llm":{"provider":"openai","config":{"model":os.getenv("AI_MODEL","deepseek-v3.2"),"temperature":0,"max_tokens":1500,}},"embedder":{"provider":"openai","config":{"model":"text-embedding-v4"}},"vector_store":{"provider":"chroma","config":{"collection_name":"mem0db","path":"mem0db",}},"history_db_path":"history.db",})配置说明:使用环境变量管理API密钥和模型配置支持自定义OpenAI兼容API(如DeepSeek)使用ChromaDB作为向量存储SQLite存储历史记录版本:v1.1(支持图记忆)2. 环境变量配置(.env)# OpenAI API配置OPENAI_API_KEY=your_api_key_hereOPENAI_BASE_URL=https://api.openai.com/v1AI_MODEL=gpt-4o-mini# 或者使用DeepSeek# OPENAI_BASE_URL=https://api.deepseek.com/v1# AI_MODEL=deepseek-v3.2🏗️ MemoryManager类实现# -*- coding: utf-8 -*-""" @Time : 2025/12/14 04:33 @Author : zuozewei @File : memory_manager.py @Desc : mem0长期记忆管理 - 基于向量存储的持久化记忆系统,支持多用户隔离和个性化回复 """importosfromlangchain_openaiimportChatOpenAIfromlangchain_core.promptsimportChatPromptTemplatefrommemory_configimportcreate_memoryclassMemoryManager:"""记忆管理器类"""def__init__(self):"""初始化记忆管理器"""self.mem0=create_memory()api_base=os.getenv("OPENAI_BASE_URL")oros.getenv("OPENAI_API_BASE")self.llm=ChatOpenAI(model=os.getenv("AI_MODEL","deepseek-v3.2"),api_key=os.getenv("OPENAI_API_KEY"),base_url=api_base,temperature=0.7

相关新闻

5分钟搭建幻兽帕鲁专属服务器:Docker容器一键部署完整指南

5分钟搭建幻兽帕鲁专属服务器:Docker容器一键部署完整指南

2026/8/12 21:10:14

5分钟搭建幻兽帕鲁专属服务器:Docker容器一键部署完整指南 【免费下载链接】palworld-server-docker A Docker Container to easily run a Palworld dedicated server. 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-server-docker 你是否曾梦想拥有…

轻量级中文语义搜索神器:bge-small-zh-v1.5实战指南

轻量级中文语义搜索神器:bge-small-zh-v1.5实战指南

2026/8/12 21:10:14

轻量级中文语义搜索神器:bge-small-zh-v1.5实战指南 【免费下载链接】bge-small-zh-v1.5 项目地址: https://ai.gitcode.com/hf_mirrors/zhouhui/bge-small-zh-v1.5 在人工智能应用蓬勃发展的今天,语义搜索技术正在悄然改变我们获取信息的方式。…

下载工具汇总:Motrix、LinkSwift、VidBee、Motrix-Next、SeedParser、Download Master、NDM、IDM

下载工具汇总:Motrix、LinkSwift、VidBee、Motrix-Next、SeedParser、Download Master、NDM、IDM

2026/8/12 21:10:14

继下载工具汇总:Pandownload、Gopeed、MediaGo、IMFile Desktop之后,本文继续汇总一下下载工具,旨在多一种选择,多了解一些生态。 Motrix 官网,开源(GitHub,51.1K Star,4.8K Fork&…

slash-command-dispatch实战案例:如何用/部署命令加速开发流程

slash-command-dispatch实战案例:如何用/部署命令加速开发流程

2026/8/12 22:30:17

slash-command-dispatch实战案例:如何用/部署命令加速开发流程 【免费下载链接】slash-command-dispatch A GitHub action that facilitates "ChatOps" by creating repository dispatch events for slash commands 项目地址: https://gitcode.com/gh_m…

Ubuntu系统下NVM安装与Node.js多版本管理实战指南

Ubuntu系统下NVM安装与Node.js多版本管理实战指南

2026/8/12 22:30:17

1. 项目概述:为什么我们需要NVM? 如果你在Linux环境下,特别是Ubuntu系统上折腾过Node.js,大概率遇到过版本管理的麻烦。今天想用Node 18跑一个老项目,明天新项目又要求Node 20,来回卸载安装,不…

GitHub Models退役后,如何选择模型托管方案与迁移实践

GitHub Models退役后,如何选择模型托管方案与迁移实践

2026/8/12 22:30:17

这次我们来看一个对开发者社区影响不小的变动:GitHub Models 正式退役。这不是某个具体的 AI 模型,而是 GitHub 平台上一个曾经用于托管和分享机器学习模型的功能模块。它的下线,意味着开发者需要重新审视模型托管、版本管理和协作分发的现有…

Node.js版本管理终极指南:使用Gradle Node Plugin控制项目运行时环境

Node.js版本管理终极指南:使用Gradle Node Plugin控制项目运行时环境

2026/8/12 22:30:17

Node.js版本管理终极指南:使用Gradle Node Plugin控制项目运行时环境 【免费下载链接】gradle-node-plugin Gradle plugin for integrating NodeJS in your build. :rocket: 项目地址: https://gitcode.com/gh_mirrors/gra/gradle-node-plugin Gradle Node P…

华为MetaERP Oracle EBS R12 AR 新建收款方式(Receipt Method)完整落地配置核心概念厘清Receipt Class(收款分类):定义收款整体业务流程(手工录入

华为MetaERP Oracle EBS R12 AR 新建收款方式(Receipt Method)完整落地配置核心概念厘清Receipt Class(收款分类):定义收款整体业务流程(手工录入

2026/8/12 22:30:17

Oracle EBS R12 AR 新建收款方式(Receipt Method)完整落地配置 核心概念厘清 Receipt Class(收款分类):定义收款整体业务流程(手工录入 / 自动收款、核销方式、是否需要托收、清账模式)&#…

中文语义搜索如何突破传统限制?BGE轻量级向量嵌入模型实战指南

中文语义搜索如何突破传统限制?BGE轻量级向量嵌入模型实战指南

2026/8/12 22:20:17

中文语义搜索如何突破传统限制?BGE轻量级向量嵌入模型实战指南 【免费下载链接】bge-small-zh-v1.5 项目地址: https://ai.gitcode.com/hf_mirrors/zhouhui/bge-small-zh-v1.5 在当今信息爆炸的时代,你是否曾为寻找特定中文内容而烦恼&#xff1…

比较好的亚太EMBA,问了6位校友师资差别真的挺大

比较好的亚太EMBA,问了6位校友师资差别真的挺大

2026/8/12 7:11:29

比较好的亚太EMBA核心差异先看什么?对于希望兼顾工作与系统管理能力提升的亚太区高管而言,筛选匹配度高的EMBA项目时,师资配置是决定学习体验与实际收获的核心要素之一。我们结合3-4个公开信息透明、办学历史较长的亚太区主流EMBA项目特点&am…

备考3个月对比6份资料 海外游学的亚洲EMBA面试注意点

备考3个月对比6份资料 海外游学的亚洲EMBA面试注意点

2026/8/11 8:44:43

备考海外游学的亚洲EMBA面试,核心要围绕项目国际化设计逻辑、个人跨文化管理经验匹配度两个维度准备,避免把游学模块等同于普通旅游参访的认知偏差。不少备考者花3个月对比6份资料,却容易忽略面试官对“国际视野落地能力”的考察——比如香港…

比较好的国内EMBA,问了二十位校友聊透人脉价值

比较好的国内EMBA,问了二十位校友聊透人脉价值

2026/8/11 15:57:54

比较好的国内EMBA核心差异体现在哪些方面?比较好的国内EMBA的核心长期价值,很大程度上依托于校友网络的连接质量与资源生态的活跃度,这也是不少高管在择校时优先考量的因素。我们结合3-4个市场关注度较高的项目公开信息,从课程、师…

告别模组冲突!5步掌握《神界:原罪2》模组管理的终极秘诀

告别模组冲突!5步掌握《神界:原罪2》模组管理的终极秘诀

2026/8/12 9:39:37

告别模组冲突!5步掌握《神界:原罪2》模组管理的终极秘诀 【免费下载链接】DivinityModManager A mod manager for Divinity: Original Sin - Definitive Edition. 项目地址: https://gitcode.com/gh_mirrors/di/DivinityModManager 你是否曾经为《…

如何用Charge Limiter延长MacBook电池寿命:终极保护指南

如何用Charge Limiter延长MacBook电池寿命:终极保护指南

2026/8/12 9:39:37

如何用Charge Limiter延长MacBook电池寿命:终极保护指南 【免费下载链接】charge-limiter macOS app to set battery charge limit for Intel MacBooks 项目地址: https://gitcode.com/gh_mirrors/ch/charge-limiter 还在为MacBook电池健康度下降而烦恼吗&am…

推三返一模式5.0版本系统开发

推三返一模式5.0版本系统开发

2026/8/12 9:39:37

推三返一模式5.0版本系统开发要点编辑:araolin(私域邦网络土土哥)模式核心逻辑 推三返一是一种促销或分销机制,用户推荐三人完成特定行为(如购买、注册),推荐人可获得返利或奖励。5.0版本通常在…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/8 5:07:31

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/9 13:42:46

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/8 2:30:15

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…