从硅谷杀出的 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 在技术实现上展现了多个亮点:
- 模块化架构设计:采用清晰的模块分离,episodic_memory、semantic_memory、common 等模块各司其职,便于维护和扩展;
- 类型安全的 Python SDK:提供完整的类型注解和文档,提升开发体验和代码质量;
- 多数据库后端支持:不仅支持 Neo4j 和 PostgreSQL,还提供 SQLite 等轻量级选项用于开发和测试;
- 灵活的配置系统:通过 YAML 配置文件支持复杂的多环境部署配置;
- 完整的测试覆盖:包含单元测试、集成测试和端到端测试,确保系统稳定性;
- 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 自己的记录
'我只喝拿铁,讨厌茶'。这是因为:
- 严格隔离:系统绝对没有返回 Alice 的
'我喜欢喝绿茶...',证明了物理隔离的有效性。- 向量匹配:在 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 可能会有调整,建议查阅最新官方文档。
-
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 ↩
-
MemVerge. (2024). About MemVerge: Big Memory Computing. Retrieved from https://memverge.com/about/ ↩
-
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 ↩