ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

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

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

文章目录

    • 📄 文档概述
    • 🔧 技术栈详解
      • 版本兼容性说明
      • Python
      • LangChain
      • mem0
      • ChromaDB
      • 技术栈协作关系
      • 技术选型理由
    • 🎯 核心内容
    • 📚 一、记忆的本质:大模型如何拥有长期记忆
      • 短期记忆(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.10
  • mem0 v1.1.2
  • ChromaDB v0.5.11

Python

定义:AI/ML领域的主流开发语言,生态系统成熟完善。

在本项目中的作用

  • 作为主要开发语言,实现记忆管理逻辑
  • 丰富的AI/ML生态系统支持
  • 简洁易读的语法,便于快速开发

关键特性

  • 动态类型系统
  • 强大的标准库
  • 跨平台支持
  • 活跃的社区支持

LangChain

定义:一个用于构建大模型应用的框架,提供模块化组件和工具链。

在本项目中的作用

  • 提供聊天历史管理接口(BaseChatMessageHistory)
  • 实现文件持久化存储(FileChatMessageHistory)
  • 集成大模型调用(ChatOpenAI)
  • 提供提示词模板(ChatPromptTemplate)

核心组件

  • ChatMessageHistories:管理对话历史记录
  • Chat Models:与大模型交互的接口
  • Prompts:提示词模板管理
  • Chains:将多个组件串联成工作流

优势

  • 模块化设计,易于组合
  • 丰富的预构建组件
  • 支持多种大模型提供商
  • 活跃的社区和文档

mem0

定义:为大模型应用提供的可自我改进的记忆层框架,基于RAG架构改造而来。

在本项目中的作用

  • 实现长期记忆的存储和检索
  • 自动从对话中提取关键信息
  • 支持语义搜索和向量检索
  • 提供多用户隔离机制

核心功能

  • 记忆存储:将信息持久化到向量数据库
  • 记忆检索:基于语义相似度检索相关记忆
  • 记忆提取:自动从对话中提取事实信息
  • 记忆管理:支持增删改查操作

工作原理

  1. 接收用户输入和对话历史
  2. 调用LLM提取关键事实(自动去重、合并相似记忆)
  3. 将事实转换为向量嵌入
  4. 存储到向量数据库(ChromaDB)
  5. 查询时进行语义检索(支持多模态检索)
  6. 返回相关记忆作为上下文

与传统RAG的差异

维度传统RAGmem0
数据来源手动上传文档自动从对话中提取
记忆更新静态文档动态学习用户偏好
检索方式关键词匹配语义相似度检索
用户隔离无原生支持内置多用户隔离机制

优势

  • API简洁,易于集成
  • 支持多种向量数据库
  • 自动记忆提取,减少人工干预
  • 支持多用户隔离
  • 可扩展性强
  • 内置记忆去重与融合机制

ChromaDB

定义:一个开源的向量数据库,专为AI应用设计,支持语义搜索和相似度检索。

在本项目中的作用

  • 作为mem0的向量存储后端
  • 存储记忆的向量嵌入
  • 支持高效的语义检索
  • 提供本地持久化存储

核心特性

  • 向量存储:存储高维向量数据
  • 语义检索:基于向量相似度搜索
  • 元数据过滤:支持按元数据筛选
  • 本地优先:支持本地部署,无需云服务
  • 轻量级:易于集成和部署

工作原理

  1. 将文本转换为向量嵌入(Embedding)
  2. 存储向量和元数据
  3. 查询时将查询文本转换为向量
  4. 计算向量相似度(如余弦相似度)
  5. 返回最相似的记录

优势

  • 开源免费,无成本压力
  • 本地部署,数据隐私可控
  • 简单易用,快速上手
  • 支持多种嵌入模型
  • 良好的Python集成

技术栈协作关系

┌─────────────────────────────────────────────────────────┐ │ 应用层(Python) │ │ ┌──────────────┐ ┌──────────────┐ ┌─────────────┐ │ │ │ChatHistory │ │MemoryManager │ │ Example │ │ │ │ Manager │ │ │ │ │ │ │ └──────┬───────┘ └──────┬───────┘ └──────┬──────┘ │ └─────────┼──────────────────┼──────────────────┼────────┘ │ │ │ │ │ │ ┌─────────┴──────────────────┴──────────────────┴────────┐ │ 框架层(LangChain + mem0) │ │ ┌──────────────────┐ ┌──────────────────┐ │ │ │ FileChatMessage │ │ mem0 Memory │ │ │ │ History │ │ │ │ │ └────────┬─────────┘ └────────┬─────────┘ │ └───────────┼────────────────────┼───────────────────────┘ │ │ │ │ ┌───────────┴────────────────────┴───────────────────────┐ │ 存储层(ChromaDB + SQLite) │ │ ┌──────────────┐ ┌──────────────┐ ┌─────────────┐ │ │ │ ChromaDB │ │ SQLite │ │ JSON Files │ │ │ │ 向量数据库 │ │ 历史数据库 │ │ 聊天历史 │ │ │ └──────────────┘ └──────────────┘ └─────────────┘ │ └──────────────────────────────────────────────────────────┘

数据流说明

  1. 用户输入 → Python应用层
  2. 短期记忆 → LangChain的FileChatMessageHistory → JSON文件
  3. 长期记忆 → mem0 → ChromaDB向量数据库
  4. 对话历史 → mem0 → SQLite数据库
  5. 检索时 → 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
  • 会话隔离机制
  • 类封装,易于扩展

二、核心技术点

  1. 会话历史管理:使用session_id隔离不同会话
  2. 内存缓存机制:mem_store字典缓存会话历史
  3. 文件持久化存储:JSON格式存储到本地文件
  4. LangChain集成:基于BaseChatMessageHistory接口
  5. 会话隔离:每个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
返回列表