当前位置: 首页 > article >正文

LangGraph记忆系统深度对比:InMemoryStore和MemorySaver该如何选择?

LangGraph记忆系统深度对比InMemoryStore和MemorySaver该如何选择在构建现代对话系统时记忆管理是决定用户体验的关键因素之一。想象一下当你与一个客服系统交流时每次都需要重复自己的基本信息这种体验无疑会让人感到沮丧。LangGraph作为新一代Agent AI框架提供了两种核心记忆存储方案——InMemoryStore和MemorySaver它们分别针对不同的业务场景和性能需求。1. 理解LangGraph的记忆系统架构LangGraph的记忆系统建立在状态图(StateGraph)基础上通过检查点(checkpointer)机制实现状态的持久化。这个架构设计允许系统在每次超级步骤(super-step)执行后自动保存状态为后续的交互提供连续性。核心组件对比组件InMemoryStoreMemorySaver存储介质内存持久化存储(如数据库)数据生命周期应用运行期间跨应用重启访问速度纳秒级毫秒级典型用例会话内临时数据跨会话用户数据短期记忆(Short-term memory)管理在单个对话线程内而长期记忆(Long-term memory)则跨越多个对话线程。这种分层设计使得系统能够灵活应对不同粒度的记忆需求。提示选择记忆系统时首先要明确你的业务需要哪种记忆类型——是仅需维持单次对话的上下文还是需要记住用户跨会话的偏好和历史。2. InMemoryStore高性能临时记忆解决方案InMemoryStore作为基于内存的存储系统专为需要极低延迟访问的场景设计。它使用类似字典的结构存储数据通过哈希表实现快速查找。典型应用场景实时对话系统中的当前会话状态管理需要快速响应的临时数据缓存开发环境下的原型验证from langgraph.store.memory import InMemoryStore from langchain_openai import OpenAIEmbeddings # 初始化InMemoryStore并配置嵌入模型 in_memory_store InMemoryStore( index{ embed: OpenAIEmbeddings(modeltext-embedding-3-small), dims: 1536, } )性能特点优点访问速度极快(通常1ms)实现简单无需额外基础设施适合高并发读取场景局限数据易失性(应用重启后丢失)内存容量限制不适合分布式部署在实际项目中我们曾用InMemoryStore处理客服系统的实时对话流。当QPS达到5000时平均响应时间仍保持在15ms以内充分展现了其性能优势。3. MemorySaver可靠的持久化记忆方案MemorySaver通过将状态保存到持久化存储中解决了数据长期保存的需求。它使用检查点机制确保即使在系统崩溃后也能恢复对话状态。核心功能实现from langgraph.checkpoint.memory import MemorySaver # 创建检查点器并编译图 checkpointer MemorySaver() graph.compile(checkpointercheckpointer) # 使用thread_id区分不同对话线程 config {configurable: {thread_id: user123_session1}}适用场景分析需要记住用户偏好的个性化服务跨设备同步的对话历史需要人工审核或干预的对话流程性能数据对比指标InMemoryStoreMemorySaver(Redis后端)读取延迟0.2ms2ms写入延迟0.5ms5ms最大吞吐量50K ops/s10K ops/s数据持久性无有注意当选择MemorySaver时务必考虑后端存储的选型。基于Redis的实现通常比直接使用数据库性能更好但成本也更高。4. 混合架构结合两者的最佳实践在实际生产环境中我们往往需要同时满足高性能和持久化的需求。这时可以采用分层记忆架构前端层使用InMemoryStore处理实时交互后端层定期将重要数据同步到MemorySaver缓存层对频繁访问的持久化数据建立内存缓存实现示例from typing import Annotated, TypedDict from langgraph.graph import StateGraph, MessagesState class EnhancedState(TypedDict): messages: list cached_memories: dict def process_message(state: EnhancedState, config: RunnableConfig): # 首先检查内存缓存 if state[cached_memories].get(config[user_id]): return {messages: [cached_response]} # 无缓存则查询持久化存储 persisted_data checkpointer.get(config) if persisted_data: # 更新缓存 state[cached_memories][config[user_id]] persisted_data return {messages: [process_persisted_data(persisted_data)]} # 处理新请求 return {messages: [handle_new_request(state)]}这种架构在电商推荐系统中表现优异既保证了实时推荐的响应速度(平均80ms)又保持了用户偏好的长期一致性。5. 决策指南如何根据业务需求选择选择记忆系统时建议从以下几个维度进行评估决策矩阵数据重要性临时数据 → InMemoryStore关键业务数据 → MemorySaver性能需求超低延迟(≤10ms) → InMemoryStore可接受稍高延迟 → MemorySaver扩展性需求单机部署 → InMemoryStore分布式部署 → MemorySaver预算限制有限预算 → InMemoryStore可投入基础设施 → MemorySaver典型场景选择客服聊天机器人初期可使用InMemoryStore快速上线随着业务增长逐步引入MemorySaver保存重要对话记录个性化推荐引擎必须使用MemorySaver保持用户画像的连续性内部工具助手InMemoryStore完全足够简化部署多步审批流程MemorySaver确保流程状态不丢失在最近的一个金融咨询项目中我们采用了动态记忆策略普通咨询会话使用InMemoryStore而当检测到投资意向时自动切换到MemorySaver保存关键信息。这种混合方案节省了40%的存储成本同时保证了重要数据的可靠性。

相关文章:

LangGraph记忆系统深度对比:InMemoryStore和MemorySaver该如何选择?

LangGraph记忆系统深度对比:InMemoryStore和MemorySaver该如何选择? 在构建现代对话系统时,记忆管理是决定用户体验的关键因素之一。想象一下,当你与一个客服系统交流时,每次都需要重复自己的基本信息,这种…...

单细胞转录组分析流程:从细胞矩阵生成到聚类、注释与轨迹推断

点击 “AladdinEdu,你的AI学习实践工作坊”,注册即送-H卡级别算力,沉浸式云原生集成开发环境,80G大显存多卡并行,按量弹性计费,教育用户更享超低价。 摘要:单细胞RNA测序(scRNA-seq&…...

人工智能应用- 预测新冠病毒传染性:08. 定位显著变异点

更令人关注的是,M-H 模型还能定位病毒基因中对传播能力最敏感的突变位点。这是因为在模型设计时,科学家们为每个变异点都设置了一个“显著值”参数。模型训练结束后,那些显著值较大的变异点就被识别为对传染性影响较大的基因位置。图中的红色…...

人工智能应用- 预测新冠病毒传染性:07. 预测不同类型病毒的传播能力

研究者利用 M-H 模型对各个病毒变种的传播能力进行了研究,结果如图所示:图: AI 模型预测的病毒传播力。横轴为变种出现时间,纵轴为预测传播能力,表示为相对基本再生数(R/RA,其中 RA 是武汉变种的基本再生数…...

探索IEEE 39节点暂态模型:Simulink与PSCAD仿真之旅

IEEE39节点暂态模型,包括simulink与PSCAD两类仿真模型。 (运行时先运行m文件)IEEE39节点标准系统,标准算例数据,电源采用发电机模型,更能考虑完备暂态响应。 适合新手学习所用,减少搭建模型时间…...

永磁同步电机参数辨识仿真,基于递推最小二乘法RLS的永磁同步电机参数辨识,仿真程序加解析文档,包含

永磁同步电机参数辨识仿真,基于递推最小二乘法RLS的永磁同步电机参数辨识,仿真程序加解析文档,包含: 一份仿真程序 一份自己总结的算法解析文档 一份参考文献。 目前,常见的电机电气参数辨识算法有频率响应法、模型参考…...

Spine动画实战:手把手教你用‘摄影表’和关键帧,5分钟做个会动的表情包

Spine动画实战:5分钟用关键帧制作魔性表情包 记得第一次在群里看到朋友发的那个"疯狂点头"的柴犬表情包时,我被它魔性的节奏感彻底征服了。作为一个UI设计师,我立刻想知道这种流畅的循环小动画是怎么做出来的。试过AE后发现太重量级…...

最近在折腾TSP路径优化的时候,发现禁忌搜索和蚁群算法这对组合挺有意思。咱们直接上代码,边跑边聊这两种算法怎么把城市坐标玩出花来。(别慌,文末有完整代码打包)

基于matlab的禁忌搜索算法和蚁群优化算法优化TSP路径,动态输出路径规划过程及输出最小距离。 数据可更换自己的,程序已调通,可直接运行。先看禁忌搜索的暴力美学。这货核心就三招:禁忌表锁死局部最优、特赦规则放行优质解、邻域搜…...

毕业设计救星:手把手教你用KF-GINS搞定GNSS/INS松组合导航(附代码详解)

毕业设计实战:从零实现GNSS/INS松组合导航系统 第一次接触组合导航系统时,我被各种坐标系转换和状态方程搞得晕头转向。直到在GitHub上发现了KF-GINS这个开源项目,才真正理解了如何将理论转化为代码。本文将带你从环境搭建到完整实现&#xf…...

竞争性谈判实战指南:从文件准备到最终报价的5个关键决胜点

竞争性谈判实战指南:从文件准备到最终报价的5个关键决胜点 在服务类采购领域,竞争性谈判正成为越来越多采购方的首选方式。与传统的公开招标不同,这种采购方式更注重供需双方的深度互动,为供应商提供了更多展示综合实力的机会。对…...

GDPR与CCPA实战指南:企业数据隐私合规架构设计

1. 数据隐私合规的底层逻辑 第一次接触GDPR和CCPA时,我完全被那些晦涩的法律条文绕晕了。直到某次在超市结账,收银员问我是否要办理会员卡,突然意识到这就是最朴素的"数据交易"场景——用个人信息换取折扣。企业构建合规架构的本质…...

深入解析ASCAD数据集:从元数据到侧信道攻击实践

1. ASCAD数据集基础解析 第一次接触ASCAD数据集时,我和大多数研究者一样感到困惑——这个被广泛引用的侧信道分析基准数据集,实际操作起来却像在迷宫里找出口。经过半年的实战摸索,我终于理清了它的脉络。ASCAD全称"ANSSI Side-Channel …...

【开题答辩全过程】以 基于.NET MVC的婚庆服务系统设计为例,包含答辩的问题和答案

个人简介 一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等 开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。 感谢大家…...

【开题答辩全过程】以 基于 Python 的甘肃旅游微信咨询系统的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…...

Linux网络加速神器BBR实战:用CentOS7搭建高速下载节点的完整教程

CentOS 7 BBR加速深度优化:打造企业级高速传输节点 在数字化协作日益频繁的今天,跨国文件传输速度常常成为工作效率的瓶颈。我曾管理过一个跨国开发团队,每次同步Docker镜像时,2GB的文件需要耗费近40分钟,直到发现了BB…...

基于Docker与DDNSTO的Nas内网穿透Web服务实战指南

1. 为什么需要内网穿透? 很多朋友买了Nas后,发现只能在局域网内访问存储的文件和部署的服务,这就像买了一栋别墅却只能在后院活动一样浪费。想象一下这样的场景:你在公司想查看家里Nas上的文档,出差时想用手机访问家里…...

COMSOL仿真技术在静脉血管曲张与血管流分析中的应用

COMSOL静脉血管曲张仿真,COMSOL血管流仿真,静脉曲张这种病看着不严重,但发作起来真要命——小腿像爬满了蚯蚓,站着疼躺着酸。以前医生只能靠经验判断治疗方案,现在有了COMSOL这种神器,咱们可以先把血管模型…...

银河麒麟系统下telnet服务配置全攻略(附安全加固建议)

银河麒麟系统下telnet服务配置与安全加固实战指南 在企业级国产化替代浪潮中,银河麒麟操作系统凭借其高安全性和稳定性成为众多关键基础设施的首选。作为传统远程管理工具,telnet服务在内部运维场景中仍有一席之地,但其明文传输特性也带来显著…...

永磁同步电机新型滑模扰动观测器控制(NSMDO)+无差拍电流预测控制(DBCC) [1]速度环...

永磁同步电机新型滑模扰动观测器控制(NSMDO)+无差拍电流预测控制(DBCC) [1]速度环采用NSMDO [2]电流环采用DBCC 本系列仿真所使用的电机参数一致。永磁同步电机控制总绕不开抗干扰和动态响应这两个老问题,最…...

面试11-Agent如何自动接任务

一、整体场景与核心目标解释 首先,我们先明确这段代码要解决的核心问题: 在第9-10季的代码中,"队友代理(teammate agent)"只能在负责人(lead)明确分配任务时才工作,10个未…...

最长公共子序列(LCS)——从零开始的动态规划

LCS最长公共子序列:从理解到实现,一次讲透在字符串和动态规划的学习中,LCS(Longest Common Subsequence,最长公共子序列)是一个绕不开的经典问题。很多人一开始觉得它和“最长公共子串”差不多,…...

Matlab基于连续小波变换(CWT)批量生成时频图

Matlab基于连续小波变换(CWT),将一维信号批量生成时频图的源 此示例中,原始信号data是30*1280的格式,一共30条信号,信号长度为1280。 最终生成30张时频图。 生成的图像可用于后续的深度学习分类或其他处理。…...

手机摄像头背后的高速通道:深入浅出图解MIPI CSI-2数据流

手机摄像头背后的高速通道:深入浅出图解MIPI CSI-2数据流 当你用手机拍下一张照片时,图像数据从传感器到处理器的旅程堪比一场精密编排的接力赛。这场赛道的核心就是MIPI CSI-2协议——它如同一条隐形的高速公路,以每秒数GB的速度传输着海量图…...

PFC2D 中隧道开挖应力释放模拟:精准掌控比例的艺术

pfc2d隧道开挖考虑应力释放,可以指定应力释放的比例。在岩土工程数值模拟领域,PFC2D(Particle Flow Code in 2 Dimensions)是一款极为强大的工具,尤其是在隧道开挖模拟方面表现卓越。其中,考虑应力释放并能…...

华为云Kafka配置避坑指南:从实例规格选择到流量控制实战

华为云Kafka实战配置全解析:从规格选型到流量管控的深度指南 消息队列作为现代分布式系统的核心组件,其性能表现直接影响着整个业务系统的稳定性与扩展性。华为云分布式消息服务Kafka凭借其高吞吐、低延迟的特性,已成为金融交易、实时日志处理…...

从经纬度到平面坐标:ArcGIS中高斯投影的完整工作流(含自定义中央子午线技巧)

从经纬度到平面坐标:ArcGIS中高斯投影的完整工作流与中央子午线优化技巧 1. 高斯-克吕格投影的核心原理与应用场景 当我们需要将地球表面的经纬度坐标转换为平面直角坐标系时,高斯-克吕格投影(Gauss-Krger Projection)是最常用的解…...

第8章:让无人机学会“自己躲开障碍”——自主避障算法实战指南

从“只会飞”到“会躲”,只需一套DWA算法 想象一下这样的场景:你精心规划了一条航线,无人机起飞、爬升、巡航,一切顺利。突然,一个未知障碍物出现在飞行路径上——也许是一架乱入的无人机,也许是突然飞过的…...

AI从“动嘴”到“动手”:2026年,一只“小龙虾”如何重塑硅基生命的数字生存方式

引言:一场静默的革命 如果你回到2025年,问一个职场人:“你如何使用AI?”他大概率会告诉你:“我会把问题发给ChatBot,它给我一段文字建议,然后我复制粘贴,自己去操作软件、写代码、整…...

生成实战2

略...

生成实战1

略...