Mem0:为 LLM 提供个性化记忆的开源项目实战指南
Mem0 是一款由 YC 孵化的开源技术,旨在为大语言模型和 AI 代理提供长期记忆能力。相比传统 RAG 方案,Mem0 通过关注实体关系、上下文连续性和自适应学习,实现了跨应用的个性化 AI 体验。 Mem0 的核心架构、与 RAG 的关键区别、Python 环境下的安装配置方法、API 使用示例以及高级应用场景,帮助开发者构建具备持久记忆的智能应用系统。

Mem0 是一款由 YC 孵化的开源技术,旨在为大语言模型和 AI 代理提供长期记忆能力。相比传统 RAG 方案,Mem0 通过关注实体关系、上下文连续性和自适应学习,实现了跨应用的个性化 AI 体验。 Mem0 的核心架构、与 RAG 的关键区别、Python 环境下的安装配置方法、API 使用示例以及高级应用场景,帮助开发者构建具备持久记忆的智能应用系统。

通过 RAG(检索增强生成)来增强大语言模型(LLM)已经是目前很多开发者的首选方案,但是最近有一个新的开源项目让大家看到了更好的选择的可能。今天我们分享一个开源项目,它号称是 RAG 的下一代技术,让大模型可以拥有个性化的记忆,它就是:Mem0。
Mem0,前身为 EmbedChain,是一款由 YC 孵化的开源技术,致力于为 AI 代理提供长期记忆能力。Mem0 旨在为大型语言模型 (LLM) 和 AI 代理提供一个记忆层,从而实现真正个性化的 AI 交互。它允许开发者通过集成长期记忆来增强他们的 AI 代理,从而带来更具适应性和个性化的 AI 体验。Mem0 也是 YC 资助的项目。
简单来说,Mem0 为大语言模型提供了一个智能、自我改进的记忆层,实现了跨应用的个性化 AI 体验。
Mem0 称自己是 RAG 发展的下一个阶段,相比 RAG 的核心区别在于关注实体和实体关系、关注最近和最相关的信息、上下文连续性、适应性学习以及动态更新信息。而普通 RAG 只是单纯地从静态文档中检索信息。
具体来说,Mem0 提供的记忆实现相比 RAG 具有以下优势:
这些先进的记忆功能使 Mem0 成为开发者创建个性化和上下文感知 AI 应用的强大工具。
Mem0 提供了开发者友好的 API,安装和使用也很简单。
首先,确保你的 Python 环境已配置好,并且安装了必要的依赖包。
pip install mem0ai
以下示例展示了如何初始化 Mem0 实例,并进行基本的记忆操作。
import os
from mem0 import Memory
# 设置 OpenAI API Key
os.environ["OPENAI_API_KEY"] = "sk-xxx"
# 初始化 Mem0
m = Memory()
# 存储记忆:从任何非结构化文本中添加记忆
result = m.add(
"I am working on improving my tennis skills. Suggest some online courses.",
user_id="alice",
metadata={"category": "hobbies"}
)
print(result)
# 输出示例:Created memory: Improving her tennis skills. Looking for online suggestions.
# 检索所有记忆
all_memories = m.get_all()
print(all_memories)
# 搜索记忆
related_memories = m.search(query="What are Alice's hobbies?", user_id="alice")
print(related_memories)
# 更新记忆
result = m.update(memory_id="m1", data="Likes to play tennis on weekends")
print(result)
# 获取记忆历史
history = m.history(memory_id="m1")
print(history)
上述示例代码展示了如何添加记忆、检索记忆、搜索、更新和获取记忆历史。注意代码里的 metadata,这里相当于定义了一个 schema,让 LLM 从非结构化数据里提取相关的记忆信息。
在面向生成的环境中,为了处理大规模数据,可以增加向量数据库比如 Qdrant。
{
"vector_store": {
"provider": "qdrant",
"config": {
"host": "localhost",
"port": 6333
}
}
}
Python 代码加载配置:
from mem0 import Memory
config = {
"vector_store": {
"provider": "qdrant",
"config": {
"host": "localhost",
"port": 6333,
}
},
}
m = Memory.from_config(config)
从本质上讲,Mem0 是 AI 应用程序和内存存储之间的智能中介。与 LLM 集成后,Mem0 可管理信息的存储、检索和优先级排序。
Mem0 使用先进的矢量存储技术来有效地管理和查询大量数据,确保快速和相关的信息检索。
在源码中可以看到项目包含 4 个核心模块:embeddings、llms、memory、vector_stores,最重要的就是 memory 部分,提供对记忆的处理能力。结合前面的快速上手,我们可以看到,mem0 的 memory 部分提供的能力简单点说就是记忆的'增删改查',具体如下:
在 Mem0 的文档中还提供了一些例子来方便大家更好地理解其作用,比如个人 AI 助理、AI 旅行助手、客服 AI 助手等,都包含说明和示例的代码。
以下是使用 Mem0 来构建一个智能旅游助手的完整代码示例。
import os
from openai import OpenAI
from mem0 import Memory
# 设置 OpenAI API key
os.environ['OPENAI_API_KEY'] = 'sk-xxx'
class PersonalTravelAssistant:
def __init__(self):
self.client = OpenAI()
self.memory = Memory()
self.messages = [{"role": "system", "content": "You are a personal AI Assistant."}]
def ask_question(self, question, user_id):
# 获取之前的相关记忆
previous_memories = self.search_memories(question, user_id=user_id)
prompt = question
if previous_memories:
prompt = f"User input: {question}\n Previous memories: {previous_memories}"
self.messages.append({"role": "user", "content": prompt})
# 使用 GPT-4o 生成回复
response = self.client.chat.completions.create(
model="gpt-4o",
messages=self.messages
)
answer = response.choices[0].message.content
self.messages.append({"role": "assistant", "content": answer})
# 将问题存入记忆
self.memory.add(question, user_id=user_id)
return answer
():
memories = .memory.get_all(user_id=user_id)
[m[] m memories]
():
memories = .memory.search(query, user_id=user_id)
[m[] m memories]
__name__ == :
user_id =
ai_assistant = PersonalTravelAssistant()
:
question = ()
question.lower() [, ]:
()
answer = ai_assistant.ask_question(question, user_id=user_id)
()
memories = ai_assistant.get_memories(user_id=user_id)
()
memory memories:
()
()
在实际应用中,为了确保 Mem0 发挥最大效能,建议遵循以下最佳实践:
metadata 字段对记忆进行分类标记,有助于提高搜索的精准度。Mem0 作为一种革命性的 AI 记忆技术,为构建个性化的 AI 应用提供了全新的解决方案。Mem0 不仅可以提高 AI 代理的智能水平,还可以为用户带来更加个性化和人性化的 AI 体验。通过将记忆层与 LLM 解耦,开发者可以更灵活地控制 AI 的行为模式。
相信在不久的将来,Mem0 将会应用到更多的 AI 应用场景中,为我们带来更加智能和便捷的生活体验。对于希望构建具备长期记忆能力的 AI Agent 的开发者来说,Mem0 是一个值得深入研究和尝试的工具。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online