php通用企业网站源码公司外贸网站
2026/5/21 10:31:24 网站建设 项目流程
php通用企业网站源码,公司外贸网站,一个网站做十个二级域名,东台网站建设服务商MemOS是基于Graph的记忆图谱开源项目#xff0c;文章详解了如何构建带记忆的ChatBot、体验记忆图谱自动重组#xff0c;以及通过Middleware机制将其集成到LangChain智能体中。这种架构让AI Agent具备真正的长期记忆能力#xff0c;支持知识积累和复杂任务处理#xff0c;适…MemOS是基于Graph的记忆图谱开源项目文章详解了如何构建带记忆的ChatBot、体验记忆图谱自动重组以及通过Middleware机制将其集成到LangChain智能体中。这种架构让AI Agent具备真正的长期记忆能力支持知识积累和复杂任务处理适合企业级应用场景。MemOS 是一款具有独特设计理念的智能体记忆Memory开源项目。我们在前一篇上篇回顾中深入解读了 MemOS 的核心架构与相关设计本篇我们聚焦 MemOS 的开源框架深入体验其基于 Graph 的记忆“图谱”能力以及如何把它集成到基于 LangChain1.x 框架构建的智能体。现在让我们一起走进 MemOS 的开源框架。快速开始基于记忆“图谱”的ChatBot更进一步体验记忆“图谱”的自动重组将 MemOS 记忆图谱集成到 LangChain 智能体本文探讨的在LangChain1.x Agent中集成外部Memory产品的方法是通用的。PART 01快速开始基于记忆“图谱”的 ChatBot明文记忆是 MemOS 的“记忆立方体”MemCube中最核心的记忆形态。在物理组织上它支持两种方式基于向量的“扁平化”记忆以及基于 Graph 的“树形”记忆TreeTextMemory。TreeTextMemory 本质上是一种带分层结构的记忆“图谱”它以结构化的方式抽取、关联与检索记忆同时又兼容传统向量记忆每个 Graph 节点仍然支持语义检索。更重要的是它还能用图结构捕捉记忆之间的层级与关联关系我们首先构建一个基于TreeTextMemory的带记忆能力的经典 ChatBot 记忆框架MemOS 开源框架大模型/嵌入模型使用公有云模型 API可自行选择开发框架由于是简单的ChatBot可以不使用任何框架图数据库使用 Neo4j Desktop核心流程如下其中关键的步骤是添加记忆、检索记忆与构建 Prompt 并生成结果。初始化MemCube与使用 Cloud API 不一样直接使用框架有更大的自由度。在框架里记忆体Cube是记忆的容器所以第一步需要初始化一个 Cube 实例大致如下...EXAMPLE_CUBE_ID example_cube_idcomponents init_server() # 初始化组件cube SingleCubeView( cube_idEXAMPLE_CUBE_ID, naive_mem_cubecomponents[naive_mem_cube], mem_readercomponents[mem_reader], mem_schedulercomponents[mem_scheduler], loggerlogger, searchercomponents[searcher],)注意这里所有的初始化配置在.env文件中包括LLM、嵌入模型、图数据库等具体可以参考开源项目的docker/.env.example文件。添加记忆为了在业务层实现记忆隔离后续所有记忆操作都会针对传入的cube_id从而避免记忆“污染”。另外MemOS通过操作时的user_id、readable_cube_ids、writable_cube_ids实现更复杂的记忆权限管理与交互逻辑。可以直接通过记忆体实例进行添加操作EXAMPLE_USER_ID example_user_idwritable_cube_ids [EXAMPLE_CUBE_ID]conversation [ {role: user, content: 我叫张明在北京做程序员}, {role: assistant, content: 你好张明程序员是个不错的职业},]add_req APIADDRequest( user_idEXAMPLE_USER_ID, # 待添加的用户id messagesconversation, # 待添加为记忆的对话 writable_cube_ids # 可写入的cube_id列表)cube.add_memories(add_req)上面我们模拟了一个对话历史(conversation然后通过cube添加到记忆库。【问题如何增量添加记忆】在一个多轮对话的应用里添加记忆有个现实的问题不能每次都把完整历史对话交给 MemOS 提取 — 既浪费性能也可能产生重复记忆。一种做法是每次只添加本轮对话但更灵活的方式是追踪“已记忆的消息位置”简单说就是每次写入记忆时用一个“指针”记录已经“记住”的对话位置下一次写入时只截取从指针之后的新增对话用来生成增量记忆。这样你甚至不必每轮都触发“记忆”动作比如每 2 轮一次、甚至更多轮一次都可以避免频繁调用记忆 API 提升性能能让记忆时上下文更丰富更容易抽取到有价值的记忆检索记忆借助 cube 的search_memories方法可以很方便检索出与输入相关的记忆# 检索与查询相关的记忆query用户是做什么工作的results cube.search_memories( APISearchRequest( user_idEXAMPLE_USER_ID, readable_cube_ids[EXAMPLE_CUBE_ID], # 可检索的cube id列表 queryquery, ))for mem_item in results[text_mem][0][memories]: print(f- {mem_item.get(memory, )})# 输出: - 用户职业相关的记忆将记忆“注入”Prompt有了记忆后你需要把记忆注入到上下文中“喂”给 LLM。MemOS 官方文档提供了推荐的 Prompt 模板可以直接复用。集成后大致如下...# 检索记忆memories [f- {m.memory}for m in results[text_mem][0][memories]]# 构建 System Promptsystem_prompt f你是一个拥有长期记忆的助手。....以下是关于用户的记忆信息memories{chr(10).join(memories)}/memories.....其他记忆使用说明......请结合记忆信息为用户提供个性化回答。# 使用上面的system_prompt 调用 LangChain.....完成以上步骤后我们就实现了一个简单的“带记忆”的ChatBot。它与无状态 LLM 对话的区别在于可以跨用户、跨会话保留用户相关记忆从而提供更个性化的体验。效果测试为方便观察我们构建一个可交互的命令行程序支持连续对话也支持以 “/” 开头的管理命令如清空记忆等。不设置初始记忆直接开始对话 [You] 我喜欢足球和网球,你觉得如何? [Assistant] 足球和网球都是很精彩的运动... [You] 你觉得梅西和C罗谁更强一些? [Assistant] 梅西和C罗都是足球历史上最伟大的球员... [You] 我还是偏向技术型球员,C罗很厉害,但我更喜欢梅西.今年世界杯哪天开始 [Assistant] 2026年世界杯将于6月8日开始并将在美国... [You] 必须继续支持阿根廷啊 [Assistant] 支持阿根廷是个不错的选择... [You] 可惜工作太忙了,不能看所有比赛.我是一名AI应用架构师 [Assistant] 作为一名AI应用架构师...现在打印出已经生成的记忆可以清晰的看到提取的记忆内容 [You] /memory user [UserMemory] 共 5 条记忆:[1][UserMemory] 用户是一名AI应用架构师工作繁忙无法观看所有比赛。...[2][UserMemory] 用户在2026年1月16日下午5:22确认他将继续支持阿根廷国家队参加2026年世界杯。...[3][UserMemory] 用户在2026年1月16日下午5:22表示他偏向技术型球员虽然认为C罗很厉害但更喜欢梅西。...[4][UserMemory] 用户对梅西和C罗的强弱进行了讨论询问助手对这两位球员的看法。...[5][UserMemory] 用户喜欢足球和网球并对这两项运动的特点表示了兴趣。... [You] /memory long [LongTermMemory] 共 2 条记忆:[1][LongTermMemory] 助手建议用户关注阿根廷的关键比赛或高峰时段的精彩时刻并提到可以利用时间观看重播或精彩集锦以保持对比赛的了解。...[2][LongTermMemory]2026年世界杯将于2026年6月8日开始并将在美国、加拿大和墨西哥举行。...然后退出本次会话开启一个新的会话 [You] 帮我推荐一款工作使用的笔记本电脑,我喜欢苹果公司的产品 [Assistant] 推荐你考虑苹果的MacBook Pro。它拥有强大的性能适合需要运行AI应用的任务且其Retina显示屏非常适合长时间工作。此外macOS系统在开发和设计方面也非常友好。如果预算允许选择M1或M2芯片的型号会更具性价比和效率。很显然这里 AI 的回答充分参考了上下文中的记忆信息用户是一名 AI 应用架构师因此推荐了更偏高性能的产品。同时新会话又生成了新的“增量”记忆 [You] /memory user [UserMemory] 共 6 条记忆: [1][UserMemory] 用户在2026年1月16日下午5:49表示喜欢苹果公司的产品。.......PART 02更进一步体验记忆“图谱”的自动重组现在MemOS 会对输入的对话记录进行结构化抽取生成嵌入向量并将记忆存入 Neo4j 图数据库。记忆条目在图数据库中以节点Nodes形式存储并用于检索但在默认情况下它还不太像“图”记忆条目仍是一个个“孤岛”检索仍以向量相似度匹配为主也无法进行图遍历或关联推理。如果你打开Neo4j观察可以看到这样的Graph那为什么不在每次添加记忆时自动建立关联原因很现实延迟与体验 — 若每次写入都同步触发 LLM 做必要的关联分析并等待完成对话响应时间会明显变长尤其当记忆条目越来越多时性能可能急剧下降。因此 MemOS 采用异步后台记忆重组把“添加”与“重组”解耦其大致逻辑如图记忆重组器Reorganizer是MemOS的后台模块负责在后台完成新增记忆的冲突检测与冗余处理、以及将孤立的记忆节点“编织”成更有意义的知识图谱。比如聚类相关记忆、生成摘要节点形成层级结构、并通过边把节点连接成图等。这种方式的好处是用户无感知前端对话响应不被拖慢批量处理攒一批再分析减少 LLM 调用可以智能调度比如系统空闲时再做重组降低资源竞争。现在让我们来启用异步的记忆“重组”。启用记忆重组启用树形记忆的重组只需要设置一个参数在.env文件中将MOS_ENABLE_REORGANIZE设置为true即可。启用后系统会启动后台线程进行上述的重组过程。注意整体结构的优化与层次关系生成需要图节点数量达到一定阈值才会触发默认 20 个。效果测试为了测试记忆重组的效果我们批量添加一批记忆(以满足数量条件然后观察 Graph 的变化可以明显的看到变化 — 开始出现层次与关联关系重组器在分析记忆节点后会自动创建多种“边”关系。最常见的是 PARENT父子关系它会将一组语义靠近的记忆节点聚类再生成一个摘要节点作为“父节点”用 PARENT 关系链接到子记忆条目。比如“用户偏好”的父节点下面可能有“运动偏好”“饮食偏好”等多个子节点。此外在记忆冲突处理时可能产生 MERGE_TO合并关系具有时间顺序的节点之间还可能产生 FOLLOWS 等。这些关系使得检索可以超越普通向量相似度通过图遍历与多跳关联得到更丰富、更成体系的上下文。PART 03将 MemOS 集成到 LangChain 智能体真实项目中的应用通常不会止步于简单 ChatBot。尤其进入 Agent 时代我们往往会借助低代码 Agent 开发平台或者更底层的开源框架做工程化开发。接下来我们介绍如何把 MemOS 的记忆图谱能力带入 LangChain1.x版本) 构建的智能体中替代其默认的 MemoryStore 的长期记忆机制。LangChain 记忆机制的不足LangChain 内置了基础的记忆机制最常用的是InMemorySaver用于会话状态和InMemoryStore用于持久化存储。.....store InMemoryStore()agent create_agent( modelgpt-4o, checkpointercheckpointer, # 会话状态 storestore, # 长期存储)但是在企业级应用中内置的 MemoryStore 很多时候并不够用以 key-value 的形式做持久存储无法表达记忆关联关系推理依赖精确匹配或者简单的向量相似无法做复杂推理不支持 Graph 中的各种层级、因果、时序关联等记忆结构无法自动在对话过程中根据上下文提取结构化记忆因此我们更需要一个真正“可组织、可推理、可演进”的企业级记忆系统。借助 LangChain 的 Middleware 集成MemOSLangChain 1.x的 Middleware 机制允许开发者在 Agent 执行的各个阶段注入自定义逻辑而无需修改 Agent 本身的代码我们可以利用Middleware 来“注入”基于MemOS的长期记忆能力before_agent在Agent开始时检索本次任务相关记忆wrap_model_call在模型调用前将已经检索的记忆并注入 Promptafter_agent在任务结束后把本次对话记忆存入记忆系统这种方式下整体是非侵入式的 — 无需修改 Agent 核心逻辑只需构建一个Middleware并通过 create_agent 方法的 middleware 参数添加即可。整体流程如下下面简单介绍实现步骤详情请参考源代码【STEP1: 创建一个 MemOS 记忆助手】这个助手类简单封装 MemOS 的初始化操作负责与 Neo4j 图数据库交互提供记忆增删改查能力# memos_memory_helper.py classMemosMemoryHelper: def__init__(self, user_id: str, top_k: int 5): ...... self._init_memos() # 初始化 Memory 和 MemCube defsearch_memories(self, query: str) - List[str]: 检索与查询相关的记忆 ..... defadd_conversation(self, user_message: str, assistant_message: str): 将对话添加到记忆库增量式 .....【STEP2: 实现 MemOSMiddleware】实现一个 LangChain Agent 使用的 Milddleware。这是核心的组件...class MemosMiddleware(AgentMiddleware): def __init__(self, user_id: str, top_k: int 5, auto_memorize: bool True): self.memory_helper MemosMemoryHelper(user_id, top_k) ..... def before_agent(self, state: AgentState, runtime: Runtime): Agent 开始前检索记忆只执行一次 ...... def wrap_model_call(self, request: ModelRequest, handler) - ModelResponse: 包裹模型调用注入已检索的记忆到 Prompt ..... def after_agent(self, state: AgentState, runtime: Runtime): Agent 完成后存储对话到记忆库 ......这里核心的 hook 方法就是before_agent, wrap_model_call 和 after_agent分别在其中完成检索记忆、注入System Prompt、保存记忆。这其中有一些细节处理比如把LangChain的消息格式转化为MemOS需要的消息格式、如何提取Tools消息记忆等可以参考源代码。* 是否可以在wrap_model_call中检索记忆可以。但由于一次Agent任务中会多次调用模型这样会导致每次模型调用都会检索记忆除非你需要每次基于新的上下文重新检索记忆。* 是否可以在before_agent中注入System Prompt不可以。在before_agent这个钩子中暂无法访问到System Prompt。【STEP3将 MemOS 集成到 create_agent】完成中间件后构建一个实例并通过middleware参数传给Agent即可# 创建 Agent —— 只需添加 middleware 参数agent create_agent( modelgpt-4o-mini, tools[tavily_search], system_prompt你是一个拥有长期记忆的智能助手..., middleware[memos_middleware] # 注入记忆中间件)【STEP4效果测试】用一个简单的搜索任务开始可以看到未检索到历史记忆但是在对话结束了添加了新的记忆如果退出会话再次询问相关问题可以发现此时Agent会检索到相关的记忆且会智能判断是否可以利用这些记忆这里没有再次调用搜索工具 — 这是对之前工具结果产生记忆的效果。Agent还可以利用记忆更智能的完成任务。比如在这次对话中Agent由于“回忆”到你“喜欢动画片还关注疯狂动物城”所以自动搜索类似的动画片来进行推荐 — 这体验了记忆对客户体验的价值。探讨另一种集成方法Middleware 的集成方式更偏“系统级” — 每次对话自动检索记忆、注入 System Prompt对话结束后也自动存储。实际上还可以有另一种方式借助 Agent 的工具能力让它自己决定何时“记忆”与“回忆”。做法是把 Memos 记忆操作添加与检索封装成工具交给 Agent由 Agent 自主决定调用。它的控制权在 Agent — 由其 “按需调用”也更容易在日志中看到“为什么它去查了记忆”不足是更依赖模型的工具推理能力小模型可能会遗漏调用或传错参数而且也更需要更精心的 Prompt 设计。比如重要行为准则1. **主动记忆**如果用户提供了新的个人信息如名字、喜好、居住地等请务必调用 add_memory 工具记录。2. **主动回忆**如果用户的问题依赖于上下文如“我上次说想去哪里”请务必先调用 search_memory 工具。3. **透明度**在利用记忆回答时可以委婉地表示你记得这些信息。与 Middleware 对比Middleware 模式更适合“总是需要记忆”的场景比如个人随身 AI 助理Tool 模式更适合“按需记忆”的场景比如复杂多步骤任务。这是一个设想的流程具体的实现留给大家去尝试。PART 04总结上文我们体验了MemOS基于Graph的记忆“图谱”生成与检索能力并探讨了如何借助 LangChain 1.x 的 Middleware 机制将其无缝集成到LangChain框架中从而赋予create_agent构建的智能体更强大的记忆能力。其特点是无侵入集成只需添加一个 middleware 参数不修改 Agent 核心逻辑透明的记忆增强自动检索、注入、存储对用户完全透明基于Graph的记忆能力超越简单键值对记忆支持更强的记忆上下文这种架构让你的 AI Agent 真正具备长期记忆与知识积累能力而不仅仅停留在会话级上下文管理。相信随着多 Agent 协作、长链路任务、以及企业知识与个人偏好深度融合的需求增长记忆系统也会走向更强的工程化能力更精细的写入策略、更可控的遗忘与更新机制、以及更可观测、可审计、可治理的记忆生命周期管理。AI时代未来的就业机会在哪里答案就藏在大模型的浪潮里。从ChatGPT、DeepSeek等日常工具到自然语言处理、计算机视觉、多模态等核心领域技术普惠化、应用垂直化与生态开源化正催生Prompt工程师、自然语言处理、计算机视觉工程师、大模型算法工程师、AI应用产品经理等AI岗位。掌握大模型技能就是把握高薪未来。那么普通人如何抓住大模型风口AI技术的普及对个人能力提出了新的要求在AI时代持续学习和适应新技术变得尤为重要。无论是企业还是个人都需要不断更新知识体系提升与AI协作的能力以适应不断变化的工作环境。因此这里给大家整理了一份《2026最新大模型全套学习资源》包括2026最新大模型学习路线、大模型书籍、视频教程、项目实战、最新行业报告、面试题、AI产品经理入门到精通等带你从零基础入门到精通快速掌握大模型技术由于篇幅有限有需要的小伙伴可以扫码获取1. 成长路线图学习规划要学习一门新的技术作为新手一定要先学习成长路线图方向不对努力白费。这里我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。2. 大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF3. 大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。4. 大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。5. 大模型行业报告行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。6. 大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。为什么大家都在学AI大模型随着AI技术的发展企业对人才的需求从“单一技术”转向 “AI行业”双背景。企业对人才的需求从“单一技术”转向 “AI行业”双背景。金融AI、制造AI、医疗AI等跨界岗位薪资涨幅达30%-50%。同时很多人面临优化裁员近期科技巨头英特尔裁员2万人传统岗位不断缩减因此转行AI势在必行这些资料有用吗这份资料由我们和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。大模型全套学习资料已整理打包有需要的小伙伴可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询