从硅谷杀出的 AI 记忆革命:MemMachine 如何重新定义智能体交互体验

作者注:本文作者曾与 Charles Fan 在 EMC Shanghai COE 共事,见证了这位技术领袖从存储系统专家到 Big Memory Computing 领域领导者的演进历程。

当 AI 开始拥有真正的记忆

还记得那些让人沮丧的对话吗?你刚刚告诉 AI 助手你喜欢咖啡不加糖,几分钟后它又问你:”要加糖吗?” 这种”金鱼记忆”般的体验正在成为过去式。

最近,一个来自硅谷的开源项目——MemMachine,正在彻底改变 AI 智能体的记忆能力。这不仅仅是技术的进步,更是人机交互体验的一次革命性飞跃。

在 AI 助手遍地开花的今天,单纯的 RAG(检索增强生成)技术已经无法满足用户对个性化体验的渴望。用户已经受够了每次打开 AI 就像初次见面一样要重新介绍自己。MemMachine 的出现,正是为了解决这个痛点。

幕后英雄 - Charles Fan 的技术传奇

说到 MemMachine,就不得不提其背后的灵魂人物——Charles Fan(范承工)。这位加州理工学院的电气工程博士,职业生涯堪称一部技术创新的编年史。

我在 EMC Shanghai COE 时期与 Charles 共事的经历让我深刻感受到他对技术的执着和远见。作为连续创业的技术领袖,他的职业生涯呈现出一系列令人瞩目的成就:

  • Rainfinity 时期:作为联合创始人兼 CTO,他发明了文件虚拟化产品 RainStorage,这项技术后来在 2005 年被 EMC 以接近 1 亿美元的价格收购1
  • EMC 时期:创立 EMC 中国研发中心,以创纪录的速度打造世界级的技术团队;
  • VMware 时期:创立存储业务部门,领导开发了业界标杆产品 Virtual SAN(vSAN),这个产品最终成长为十亿美元级别的业务;
  • 猎豹移动时期:2016 年 2 月加入猎豹移动担任首席技术官(CTO),领导全球研发活动,负责建立猎豹移动在美国硅谷的研发中心;
  • MemVerge 时期:2017 年与博士导师 Shuki Bruck 共同创立 MemVerge 并担任 CEO,领导公司聚焦 Big Memory Computing 领域,推出业界首款商用内存虚拟化软件 Memory Machine 及云自动化平台 Memory Machine Cloud,通过 CXL 技术解决 AI 内存瓶颈,最终孕育出 MemMachine 这个开源杰作2

Charles 曾经在采访中分享过他的创业哲学:”每当新的硬件技术出现时,就必须开发新的软件栈来让应用程序充分发挥新硬件的优势。” 这个理念在 MemMachine 中得到了完美体现3


MemMachine - 为 AI 智能体注入持久记忆

MemMachine 采用 Apache-2.0 开源协议,这意味着开发者可以自由使用、修改和商业化。更重要的是,它没有像某些项目那样”留一手”,而是真正做到了彻底开源。你甚至可以用它来构建对外提供记忆服务的网站!

MemMachine 的核心在于其精巧的多层记忆架构,支持多种记忆类型协同工作:

1. 情景记忆(Episodic Memory)

就像人类记住具体事件一样,这里存储着用户和 Agent 的每一次具体交互。比如:”用户昨天询问了天气情况并提到喜欢晴天”。支持短期记忆(会话级)和长期记忆(持久化存储)。

2. 语义记忆(Semantic Memory)

这是知识的宝库,通过层级结构归纳用户的长期信息和知识图谱。比如:”用户是软件工程师,擅长 Python 和 Rust,对分布式系统感兴趣”。支持复杂的关系推理和语义搜索。

3. 用户画像记忆(Profile Memory)

形成持续的用户画像,让 AI 真正了解你的偏好、习惯和个人特征。比如:”用户偏好简洁的回答,通常在早上喝咖啡,讨厌冗长的解释”。

4. 工作记忆(Working Memory)

处理当前会话的即时上下文,为 Agent 提供实时的交互支持,确保对话的连贯性和相关性。

MemMachine 的技术选型体现了深厚的技术功底和工程实践:

  • Neo4j 图数据库:完美处理复杂的关系数据,适合存储情景记忆中的事件关系和语义记忆的知识图谱;
  • PostgreSQL:可靠的结构化数据存储,用于用户画像、语义记忆和会话管理,支持高级查询和事务处理;
  • 多模型向量存储:支持多种向量数据库后端,用于高效的相似性搜索和语义检索;
  • 多模型访问层:支持 RESTful API、Python SDK 和 MCP 协议,满足不同开发场景和集成需求;
  • 灵活的嵌入模型支持:集成 OpenAI、Amazon Bedrock、Ollama 等多种嵌入服务,支持自定义模型扩展;
  • 智能重排序器:内置 BM25、交叉编码器、RRF 混合等多种重排序算法,提升检索精度;
  • 多 LLM 提供商支持:兼容 OpenAI、Bedrock 等主流语言模型服务;
  • 智能会话管理:支持会话级别的状态管理和上下文维护;
  • 企业级部署支持:提供 Docker 容器化部署和云原生架构支持。

基于对项目代码的深入分析,MemMachine 在技术实现上展现了多个亮点:

  1. 模块化架构设计:采用清晰的模块分离,episodic_memory、semantic_memory、common 等模块各司其职,便于维护和扩展;
  2. 类型安全的 Python SDK:提供完整的类型注解和文档,提升开发体验和代码质量;
  3. 多数据库后端支持:不仅支持 Neo4j 和 PostgreSQL,还提供 SQLite 等轻量级选项用于开发和测试;
  4. 灵活的配置系统:通过 YAML 配置文件支持复杂的多环境部署配置;
  5. 完整的测试覆盖:包含单元测试、集成测试和端到端测试,确保系统稳定性;
  6. MCP 协议集成:支持 Model Context Protocol,可与 Claude、GPTs 等现代 AI 平台无缝集成。

MemMachine 拥有活跃的开源社区:

  • 完善的文档体系:包含 API 参考、概念指南、安装教程和示例代码;
  • 丰富的示例应用:提供 CRM、金融分析、健康助手、写作助手等多个实际应用场景;
  • 持续集成和交付:使用 GitHub Actions 实现自动化测试和发布流程;
  • 开放的治理模式:遵循 Apache 2.0 协议。

MemMachine 实战指南

为了让大家能够亲手体验 MemMachine 的魅力,本节将提供一份经过完整验证的实战指南。我们将使用 Docker 来运行数据库,并配置本地嵌入模型,确保你可以在自己的机器上复现整个过程。

1. 环境准备与安装

首先,确保你的环境安装了 Docker 和 Python 3.10+。

# 1. 安装 MemMachine SDK 和 Server
pip install memmachine memmachine-server sentence-transformers

# 2. 下载 NLTK 数据(用于分词)
python3 -c "import nltk; nltk.download('punkt_tab')"

# 3. 启动数据库基础设施(推荐使用 Docker)
# 使用官方 repo 的 docker-compose.yml 文件并运行:
# docker-compose up -d postgres neo4j

2. 服务配置 (cfg.yml)

创建一个名为 cfg.yml 的配置文件,这将告诉 MemMachine 如何连接数据库和模型。这里我们使用本地的 Sentence Transformer 进行向量化,并兼容 OpenAI 格式的 LLM(如 DeepSeek、Ollama 等)。

logging:
  path: mem-machine.log
  level: info

# 定义核心组件使用的模型
episodic_memory:
  long_term_memory:
    embedder: local_embedder
    vector_graph_store: neo4j_store
  short_term_memory:
    llm_model: main_llm

semantic_memory:
  llm_model: main_llm
  embedding_model: local_embedder
  database: profile_storage

# 资源定义
resources:
  databases:
    profile_storage:
      provider: postgres
      config:
        host: localhost
        port: 5432
        user: memmachine
        password: memmachine_password
        db_name: memmachine
    neo4j_store:
      provider: neo4j
      config:
        uri: "bolt://localhost:7687"
        username: neo4j
        password: neo4j_password

  embedders:
    local_embedder:
      provider: sentence-transformer
      config:
        model: "all-MiniLM-L6-v2"

  language_models:
    main_llm:
      provider: openai-chat-completions
      config:
        # 这里以 DeepSeek 为例,也可以使用本地 Ollama (http://localhost:11434/v1)
        model: "deepseek-reasoner"
        api_key: "your-api-key-here"
        base_url: "https://api.deepseek.com"

3. 启动服务

# 使用配置文件启动服务器
MEMORY_CONFIG=./cfg.yml memmachine-server

4. 编写 AI 助手代码

现在,让我们编写 Python 代码来创建一个拥有记忆的 AI 助手。

from memmachine import MemMachineClient
import json

# 初始化客户端
client = MemMachineClient(base_url="http://localhost:8080")

# 1. 创建或获取项目
print("正在初始化项目...")
try:
    project = client.create_project(
        org_id="personal_ai",
        project_id="my_assistant"
    )
    print("✅ 项目创建成功")
except Exception:
    # 如果项目已存在(返回 409),直接获取
    project = client.get_project(
        org_id="personal_ai",
        project_id="my_assistant"
    )
    print("✅ 项目获取成功(已存在)")

# 2. 获取 Jack 的记忆空间
memory = project.memory(
    group_id="family",
    agent_id="personal_assistant",
    user_id="jack",
    session_id="daily_chat"
)

# 3. 添加记忆
print("\n正在注入记忆...")
memories = [
    ("我每天早上 7:30 喝黑咖啡,不喜欢加糖", {"category": "habit", "priority": "high"}),
    ("我是一名全栈工程师,主要使用 Python 和 React", {"category": "work", "skill_level": "expert"}),
    ("我对机器学习和区块链技术很感兴趣", {"category": "interest", "type": "technology"})
]

for content, meta in memories:
    memory.add(content, metadata=meta)

print("✅ 记忆注入完成!")

# 4. 见证奇迹:记忆检索测试
print("\n=== 🧠 记忆检索测试 ===")

def search_and_print(query, description):
    print(f"\n🔍 搜索: '{query}'")
    results = memory.search(query)
    # 提取最相关的一条结果展示
    top_memory = results.get('episodic_memory', [])[0] if results.get('episodic_memory') else None
    if top_memory:
        print(f"👉 {description}: {top_memory['content']}")
        print(f"   (相关度: {top_memory.get('score', 'N/A')}, 标签: {top_memory['metadata']['category']})")

search_and_print("我的技术栈是什么?", "工作记忆")
search_and_print("我早上喝什么?", "生活习惯")
search_and_print("我对什么技术感兴趣?", "兴趣偏好")

5. 运行结果

运行上述代码,你将看到真实的输出结果。MemMachine 成功理解了自然语言查询,并准确返回了对应的结构化记忆:

正在初始化项目...
✅ 项目获取成功(已存在)

正在注入记忆...
✅ 记忆注入完成!

=== 🧠 记忆检索测试 ===

🔍 搜索: '我的技术栈是什么?'
👉 工作记忆: 我是一名全栈工程师,主要使用 Python 和 React
   (相关度: N/A, 标签: work)

🔍 搜索: '我早上喝什么?'
👉 生活习惯: 我每天早上 7:30 喝黑咖啡,不喜欢加糖
   (相关度: N/A, 标签: habit)

🔍 搜索: '我对什么技术感兴趣?'
👉 兴趣偏好: 我对机器学习和区块链技术很感兴趣
   (相关度: N/A, 标签: interest)

注意:在真实运行中,你会发现即使是模糊的查询(如”技术栈”对应”Python 和 React”),MemMachine 也能通过向量语义搜索精准匹配,这正是语义理解技术带来的智能体验。


进阶:多用户记忆隔离实战

MemMachine 最强大的特性之一是原生多租户隔离。这意味着 Alice 的秘密永远不会被 Bob 检索到。我们通过一个严苛的”交叉查询测试”来验证这一点:

print("\n=== 🛡️ 多用户隔离测试 ===")

# 1. 为 Alice 和 Bob 创建独立的记忆空间
# 即使在同一个项目中,不同的 user_id 也会拥有完全隔离的数据空间
alice_mem = project.memory(user_id="alice", session_id="chat_a")
bob_mem = project.memory(user_id="bob", session_id="chat_b")

# 2. 注入各自的偏好
print("📝 正在注入数据...")
alice_mem.add("我喜欢喝绿茶,不喜欢咖啡", metadata={"pref": "tea"})
bob_mem.add("我只喝拿铁,讨厌茶", metadata={"pref": "coffee"})

# 3. Alice 查自己的饮料
print("\n[测试 1] Alice 搜索 '喜欢喝什么?'")
res_alice = alice_mem.search("喜欢喝什么?")
print(f"   -> 结果: {[m['content'] for m in res_alice.get('episodic_memory', [])]}")

# 4. Bob 查自己的饮料
print("\n[测试 2] Bob 搜索 '喜欢喝什么?'")
res_bob = bob_mem.search("喜欢喝什么?")
print(f"   -> 结果: {[m['content'] for m in res_bob.get('episodic_memory', [])]}")

# 5. Bob 试图偷看 Alice 的数据(交叉查询)
# 关键测试:Bob 搜索完全匹配 Alice 内容的关键词"绿茶"
print("\n[测试 3] 交叉隔离测试:Bob 搜索 '绿茶'")
res_cross = bob_mem.search("绿茶")
# 如果隔离生效,这里绝不应该出现 Alice 的"绿茶"记录
# 注意:向量搜索可能会返回 Bob 自己最相关的数据(如包含"茶"字的记录),这属于正常现象
print(f"   -> 结果: {[m['content'] for m in res_cross.get('episodic_memory', [])]}")

真实运行输出

=== 🛡️ 多用户隔离测试 ===
📝 正在注入数据...

[测试 1] Alice 搜索 '喜欢喝什么?'
   -> 结果: ['我喜欢喝绿茶,不喜欢咖啡']

[测试 2] Bob 搜索 '喜欢喝什么?'
   -> 结果: ['我只喝拿铁,讨厌茶']

[测试 3] 交叉隔离测试:Bob 搜索 '绿茶'
   -> 结果: ['我只喝拿铁,讨厌茶']

深度解读:在测试 3 中,Bob 搜索”绿茶”,系统返回了 Bob 自己的记录 '我只喝拿铁,讨厌茶'

这是因为:

  1. 严格隔离:系统绝对没有返回 Alice 的 '我喜欢喝绿茶...',证明了物理隔离的有效性。
  2. 向量匹配:在 Bob 的记忆库中,'讨厌茶' 与查询词 '绿茶' 在语义向量上存在关联(都包含”茶”的概念),因此作为 Bob 自己的最佳匹配被返回。

这个结果完美展示了 MemMachine 的设计哲学:在保证数据绝对安全隔离的前提下,提供尽可能智能的语义检索。


为什么 MemMachine 如此特别?

传统的 RAG(检索增强生成)就像是一个图书馆管理员——它知道书在哪里,但不了解你的阅读习惯。而 MemMachine 则像是你的私人图书管理员,不仅知道书的位置,还了解你的阅读偏好、知识背景甚至情绪状态。

超越传统检索的智能内核

MemMachine 之所以在复杂场景下表现出色,得益于其先进的记忆检索算法:

  • 混合检索策略(Hybrid Search):结合向量语义搜索和关键词匹配,确保既不漏掉模糊概念,又能精准定位专有名词;
  • 智能 RIR 评分系统:独创的 Recency(新旧程度)、Importance(重要性)和 Relevance(相关性)动态评分机制,模仿人类大脑的记忆提取逻辑;
  • 多阶段重排序(Multi-stage Reranking):内置 Cross-Encoder 和 RRF(倒数排名融合)算法,对检索结果进行精细化二次排序,显著提升准确率。

MemMachine 让每个 AI 交互都变得独一无二。它记得:

  • 你的个人偏好和习惯
  • 过往的对话上下文
  • 你的专业领域和知识水平
  • 甚至那些你自己都可能忘记的小细节

结语:记忆让 AI 更有温度

MemMachine 的出现标志着 AI 技术正在从”工具性”向”伴侣性”转变。它让我们看到了一个未来:AI 不仅能够回答问题,更能够理解上下文、记住偏好、甚至预见需求。

Charles Fan 和 MemVerge 团队用 MemMachine 向我们证明:真正的技术创新不在于追求最炫酷的功能,而在于解决最根本的用户痛点。在这个 AI 技术快速发展的时代,MemMachine 为我们提供了一个值得深入研究和应用的技术范本。

项目资源

  • 官网:https://memmachine.ai/
  • GitHub:https://github.com/MemMachine/MemMachine
  • 文档:https://docs.memmachine.ai/
  • 体验平台:https://memmachine.ai/playground/

本文基于 MemMachine 0.1.10 版本撰写,所有代码示例均经过实际测试。随着项目发展,部分 API 可能会有调整,建议查阅最新官方文档。

  1. EMC Corporation. (2005, August). EMC Acquires Rainfinity [Press Release]. Retrieved from https://www.networkworld.com/article/853114/data-center-emc-acquires-nas-virtualization-vendor-rainfinity.html 

  2. MemVerge. (2024). About MemVerge: Big Memory Computing. Retrieved from https://memverge.com/about/ 

  3. Fan, C. (2012, December). Making Sense of the Cloud and Big Data [Interview with M. Skok]. Retrieved from https://mjskok.com/making-sense-of-the-cloud-and-big-data-with-charles-fan