首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >告别碎片化记忆:用 MemOS 为 LangChain Agent 构建结构化“记忆图谱”

告别碎片化记忆:用 MemOS 为 LangChain Agent 构建结构化“记忆图谱”

原创
作者头像
用户5778262
发布2026-01-26 17:24:13
发布2026-01-26 17:24:13
1780
举报

在构建 AI Agent 的过程中,开发者常陷入一个困境:LangChain 内置的 Memory 模块(如 ConversationBufferMemoryVectorStoreRetrieverMemory)虽然开箱即用,却难以支撑复杂、长期、多轮的智能交互

  • 对话历史只是线性堆砌,无法提取关键事实;
  • 向量检索依赖关键词匹配,容易丢失上下文关联;
  • Agent 无法主动“回忆”过去用户提到的偏好、任务状态或实体关系;
  • 多会话之间完全隔离,无法形成持续演进的“用户画像”。

简言之:LangChain 的 Memory 是“日志”,不是“记忆”

而真正的智能体,需要的是可推理、可关联、可更新的知识网络——这正是 MemOS(Memory Operating System) 要解决的问题。

本文将带你从 LangChain Memory 的局限出发,探索如何基于 MemOS 思想,为 Agent 构建一个专属的“记忆图谱”,让 AI 真正“记得住、理得清、用得上”。


一、LangChain Memory 的三大短板

1. 线性存储,缺乏结构

ConversationSummaryMemory 虽能压缩历史,但仍是扁平文本;Agent 无法快速定位“用户上次说的项目截止日期是哪天”。

2. 被动检索,无主动推理

VectorStoreRetrieverMemory 只在用户提问时触发相似检索,无法主动关联“用户昨天提到要去上海出差”和“今天问航班信息”。

3. 会话孤岛,无长期记忆

每次新会话都是“失忆”重启,除非手动持久化,否则无法积累用户行为模式。

💡 本质问题:LangChain Memory 设计初衷是“对话上下文管理”,而非“认知记忆系统”。


二、什么是 MemOS?Agent 的“第二大脑”

MemOS 并非某个具体库,而是一种记忆架构范式——它借鉴人类记忆机制,将记忆分为:

  • 短期记忆(Working Memory):当前任务上下文;
  • 长期记忆(Long-term Memory):结构化事实、用户画像、经验规则;
  • 元记忆(Meta-Memory):关于“什么该记、何时回忆”的策略。

其核心载体,是动态演进的知识图谱(Knowledge Graph),而非原始对话日志。

例如,当用户说:

“我下周三要和张总在上海开会,记得提醒我提前订高铁。”

MemOS 会自动提取并存储为图谱节点与关系:

代码语言:javascript
复制
[User] --(has_meeting_on)--> [2025-04-09]
[2025-04-09] --(location)--> [Shanghai]
[2025-04-09] --(with)--> [Zhang (role: 总经理)]
[User] --(needs_reminder_for)--> [Book high-speed train to Shanghai]

后续任何相关查询(如“明天行程?”“怎么去上海?”),Agent 都能通过图谱推理精准响应。


三、实战:在 LangChain 中集成 MemOS 式记忆图谱

步骤 1:选择图数据库作为记忆后端

推荐使用轻量级图库:

  • Neo4j(功能强,适合生产)
  • NetworkX + SQLite(轻量,适合原型)
  • LlamaIndex + PropertyGraph(新兴方案)
步骤 2:构建记忆提取管道(Memory Ingestion Pipeline)

利用 LLM 从对话中抽取结构化三元组:

代码语言:javascript
复制
from langchain.prompts import PromptTemplate
from langchain_core.output_parsers import JsonOutputParser

extraction_prompt = PromptTemplate.from_template("""
你是一个记忆提取器。请从以下对话中提取关键事实,输出为 JSON 列表,每项包含 subject, predicate, object。

对话:
{history}

输出格式:
[{"subject": "...", "predicate": "...", "object": "..."}]
""")

parser = JsonOutputParser()
extractor_chain = extraction_prompt | llm | parser
步骤 3:写入图谱(以 Neo4j 为例)
代码语言:javascript
复制
from neo4j import GraphDatabase

def store_memory_triplets(triplets):
    with driver.session() as session:
        for t in triplets:
            session.run("""
                MERGE (s:Entity {name: $sub})
                MERGE (o:Entity {name: $obj})
                MERGE (s)-[r:`{pred}`]->(o)
                ON CREATE SET r.created_at = timestamp()
                ON MATCH SET r.updated_at = timestamp()
            """, sub=t['subject'], pred=t['predicate'].replace(' ', '_'), obj=t['object'])
步骤 4:Agent 查询时融合图谱记忆

在 LangChain Agent 的 toolsretriever 中加入图谱查询:

代码语言:javascript
复制
def query_user_facts(user_id, question):
    # 将自然语言问题转为 Cypher 查询(可用 LLM 辅助)
    cypher = llm.invoke(f"根据问题生成 Neo4j Cypher: {question}")
    result = graph.query(cypher)
    return format_result(result)

然后在 prompt 中注入:

代码语言:javascript
复制
已知用户相关信息:
{graph_retrieved_facts}

请基于以上信息回答:{input}

四、进阶能力:让记忆“活”起来

  • 记忆衰减机制:为图谱边设置 TTL,过期事实自动弱化;
  • 冲突检测:当新事实与旧记忆矛盾(如“张总离职了”),触发确认流程;
  • 主动回忆:Agent 在任务规划阶段主动查询图谱(如“用户有无过敏史?”用于订餐);
  • 跨会话记忆:通过 user_id 关联所有会话,构建终身用户知识图谱。

五、与 LangChain 原生 Memory 协同

MemOS 并非要取代 LangChain Memory,而是分层协作

  • 短期上下文:仍用 ConversationBufferWindowMemory(最近 5 轮);
  • 长期知识:由 MemOS 图谱提供;
  • 检索增强:向量库用于模糊语义搜索,图谱用于精确关系推理。

两者结合,形成“快+准”的记忆体系。


结语:记忆,是 Agent 从“工具”走向“伙伴”的分水岭

LangChain 让我们快速搭建 Agent,但若只依赖其原生 Memory,Agent 始终是个“健忘的助手”。 而 MemOS 式的记忆图谱,则赋予它持续学习、深度理解、个性化服务的能力。

未来,真正有价值的 AI Agent,不在于能调多少工具,而在于能否记住你是谁、你需要什么、以及你们共同经历的故事

🌟 开源参考:

  • Microsoft AutoGen 的 GroupChat + 自定义记忆模块
  • Stanford Mobile Agent 的 MemoryBank
  • LlamaIndex 的 PropertyGraphIndex(实验性)

现在,是时候给你的 Agent 装上一颗会思考的“记忆大脑”了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、LangChain Memory 的三大短板
    • 1. 线性存储,缺乏结构
    • 2. 被动检索,无主动推理
    • 3. 会话孤岛,无长期记忆
  • 二、什么是 MemOS?Agent 的“第二大脑”
  • 三、实战:在 LangChain 中集成 MemOS 式记忆图谱
    • 步骤 1:选择图数据库作为记忆后端
    • 步骤 2:构建记忆提取管道(Memory Ingestion Pipeline)
    • 步骤 3:写入图谱(以 Neo4j 为例)
    • 步骤 4:Agent 查询时融合图谱记忆
  • 四、进阶能力:让记忆“活”起来
  • 五、与 LangChain 原生 Memory 协同
  • 结语:记忆,是 Agent 从“工具”走向“伙伴”的分水岭
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档