前言
一直以来,如何维持大模型的记忆能力都是一个令人工智能从业者头痛的问题,Mem0是一个新的在这方面表现良好的开源项目。
Mem0的目标是提供一个智能的、自我改进的内存系统,能够根据用户互动存储、回忆和完善信息,使AI交互更加个性化和具有上下文感知能力。
Mem0使AI系统能够维护针对特定用户、特定会话和特定代理的内存,这有助于在不同平台和设备上提供一致且定制的用户体验。
Mem0允许开发者通过一个开发者API轻松地将这种内存功能集成到不同的应用中,最终实现跨应用程序的个性化AI体验。
🔑 核心功能
•多层次记忆 :用户、会话和AI代理记忆保留 •自适应个性化 :根据交互持续改进 •开发者友好API :简单集成到各种应用 •跨平台一致性 :设备间行为一致 •托管服务 :无忧的托管解决方案
🚀 快速开始
快速开始使用 Mem0!
欢迎来到 Mem0 快速入门指南。本指南将帮助你迅速上手使用 Mem0。
安装
你可以使用 pip 安装 Mem0。在终端中运行以下命令:
pip install mem0ai
基本用法
初始化 Mem0
•基本 •高级
from mem0 import Memory
m = Memory()
存储记忆
# 针对某个用户
result = m.add("周末喜欢打板球", user_id="alice", metadata={"category": "hobbies"})
print(result)
输出:
[ { 'id': 'm1', 'event': 'add', 'data': '周末喜欢打板球' } ]
检索记忆
# 获取所有记忆
all_memories = m.get_all()
print(all_memories)
输出:
[
{
'id': 'm1',
'text': '周末喜欢打板球',
'metadata': {
'data': '周末喜欢打板球',
'category': 'hobbies'
}
},
# ... 其他记忆 ...
]
# 按ID获取单个记忆
specific_memory = m.get("m1")
print(specific_memory)
输出:
{
'id': 'm1',
'text': '周末喜欢打板球',
'metadata': {
'data': '周末喜欢打板球',
'category': 'hobbies'
}
}
搜索记忆
related_memories = m.search(query="Alice 的爱好是什么?", user_id="alice")
print(related_memories)
输出:
[
{
'id': 'm1',
'text': '周末喜欢打板球',
'metadata': {
'data': '周末喜欢打板球',
'category': 'hobbies'
},
'score': 0.85 # 相似度得分
},
# ... 其他相关记忆 ...
]
更新记忆
result = m.update(memory_id="m1", data="周末喜欢打网球")
print(result)
输出:
{
'id': 'm1',
'event': 'update',
'data': '周末喜欢打网球'
}
记忆历史
history = m.history(memory_id="m1")
print(history)
输出:
[ { 'id': 'h1', 'memory_id': 'm1', 'prev_value': None, 'new_value': '周末喜欢打板球', 'event': 'add', 'timestamp': '2024-07-14 10:00:54.466687', 'is_deleted': 0 }, { 'id': 'h2', 'memory_id': 'm1', 'prev_value': '周末喜欢打板球', 'new_value': '周末喜欢打网球', 'event': 'update', 'timestamp': '2024-07-14 10:15:17.230943', 'is_deleted': 0 } ]
删除记忆
m.delete(memory_id="m1") # 删除某条记忆
m.delete_all(user_id="alice") # 删除所有记忆
重置记忆
m.reset() # 重置所有记忆
📖 文档
有关详细的使用说明和API参考,请访问我们的文档 docs.mem0.ai[2]。
MultiOn
构建记住用户偏好并自动化网页任务的个人浏览器代理。它将 Mem0 用于记忆管理,并与 MultiOn 集成,以执行浏览器操作,实现个性化和高效的网页交互。
概述
在此示例中,我们将创建一个基于浏览器的AI代理,在 arxiv.org[3] 上搜索与用户研究兴趣相关的论文。
设置和配置
安装必要的库:
pip install mem0ai multion
首先,我们将导入必要的库并设置配置。
import os
from mem0 import Memory
from multion.client import MultiOn
# 配置
OPENAI_API_KEY = 'sk-xxx' # 替换为你的实际OpenAI API密钥
MULTION_API_KEY = 'your-multion-key' # 替换为你的实际MultiOn API密钥
USER_ID = "deshraj"
# 设置OpenAI API密钥
os.environ['OPENAI_API_KEY'] = OPENAI_API_KEY
# 初始化 Mem0 和 MultiOn
memory = Memory()
multion = MultiOn(api_key=MULTION_API_KEY)
向 Mem0 添加记忆
接下来,我们将定义用户数据并将其添加到 Mem0。
# 定义用户数据
USER_DATA = """关于我- 我是 Deshraj Yadav,Mem0 的联合创始人兼 CTO,感兴趣的领域是 AI 和 ML 基础设施。- 之前,我是特斯拉的高级自动驾驶工程师,负责自动驾驶 AI 平台。- 我在佐治亚理工学院开发了 EvalAI,一个用于评估 ML 算法的开源平台。- 工作之外,我喜欢在旧金山的两个联盟中打板球。"""
# 向记忆中添加用户数据
memory.add(USER_DATA, user_id=USER_ID)
print("用户数据已添加到记忆中。")
检索相关记忆
现在,我们将定义搜索命令并从 Mem0 中检索相关记忆。
# 定义搜索命令并检索相关记忆
command = "找到我应该阅读的与我的兴趣相关的论文。"
relevant_memories = memory.search(command, user_id=USER_ID, limit=3)
relevant_memories_text = '\n'.join(mem['text'] for mem in relevant_memories)
print(f"相关记忆:")
print(relevant_memories_text)
浏览 arXiv
最后,我们将使用 MultiOn 根据我们的命令和相关记忆浏览 arXiv。
# 创建提示并浏览 arXiv
prompt = f"{command}\n 我的过去记忆:{relevant_memories_text}"
browse_result = multion.browse(cmd=prompt, url="https://arxiv.org/")
print(browse_result)
结论
通过将 Mem0 与 MultiOn 集成,你已经创建了一个个性化的浏览器代理,它记住用户偏好并自动化网页任务。有关更多详情和高级用法,请参阅完整的 cookbook here[4]。
🔧 高级用法
对于生产环境,可以使用 Qdrant 作为向量存储:
from mem0 import Memory
config = {
"vector_store": {
"provider": "qdrant",
"config": {
"host": "localhost",
"port": 6333,
}
}
}
m = Memory.from_config(config)
🗺️ 路线图
•与各种 LLM 提供商集成 •支持 LLM 框架 •与 AI 代理框架集成 •可定制的记忆创建/更新规则 •支持托管平台
🙋♂️ 支持
加入我们的 Slack 或 Discord 社区以获得支持和讨论。如果你有任何问题,请通过以下方式联系我们:
• 加入我们的 Discord[5]
• 加入我们的 Slack[6]
• 关注我们 Twitter[7]
• 给我们发邮件[8]
声明
本文由山行翻译整理自:https://github.com/mem0ai/mem0,如果对您有帮助,请帮忙点赞、关注、收藏,谢谢!
其他热门项目速览:
GraphRAG-Local-UI将GraphRAG与本地大模型界面化的AI原生应用
llm-graph-builder——从非结构化数据创建知识图谱
References
[1]
: https://github.com/mem0ai/mem0#-documentation
[2]
docs.mem0.ai: https://docs.mem0.ai/
[3]
arxiv.org: https://arxiv.org/
[4]
cookbook here: https://github.com/mem0ai/mem0/blob/main/cookbooks/mem0-multion.ipynb
[5]
加入我们的 Discord: https://embedchain.ai/discord
[6]
加入我们的 Slack: https://embedchain.ai/slack
[7]
关注我们 Twitter: https://twitter.com/mem0ai
[8]
给我们发邮件: mailto:founders@mem0.ai