包阅导读总结
1.
关键词:Mem0、AI 记忆层、开源项目、个性化、集成
2.
总结:Mem0 是一个解决大模型记忆能力的开源项目,能提供智能内存系统,支持多层次记忆、自适应个性化等核心功能,有快速开始指南、文档及与其他工具集成的示例,还有高级用法和未来路线图。
3.
主要内容:
– Mem0 项目
– 背景:解决大模型记忆能力问题
– 目标:提供智能、自我改进的内存系统,使 AI 交互个性化和具有上下文感知能力
– 核心功能
– 多层次记忆
– 自适应个性化
– 开发者友好 API
– 跨平台一致性
– 托管服务
– 快速开始
– 安装
– 基本用法:初始化、存储、检索、搜索、更新、记忆历史、删除、重置
– 文档
– 与 MultiOn 集成示例
– 安装库和设置配置
– 向 Mem0 添加记忆
– 检索相关记忆
– 浏览 arXiv
– 高级用法:使用 Qdrant 作为向量存储
– 路线图
– 与各种 LLM 提供商等集成
– 支持 LLM 框架等
– 支持
– 加入社区
– 联系方式
思维导图:
文章地址:https://mp.weixin.qq.com/s/reIJLL09Ma72abfeVP7pwg
文章来源:mp.weixin.qq.com
作者:山行AI
发布时间:2024/7/25 14:24
语言:中文
总字数:2118字
预计阅读时间:9分钟
评分:88分
标签:AI 记忆层,开源项目,个性化 AI,开发者 API,跨平台一致性
以下为原文内容
本内容来源于用户推荐转载,旨在分享知识与观点,如有侵权请联系删除 联系邮箱 media@ilingban.com
前言
一直以来,如何维持大模型的记忆能力都是一个令人工智能从业者头痛的问题,Mem0是一个新的在这方面表现良好的开源项目。
Mem0的目标是提供一个智能的、自我改进的内存系统,能够根据用户互动存储、回忆和完善信息,使AI交互更加个性化和具有上下文感知能力。
Mem0使AI系统能够维护针对特定用户、特定会话和特定代理的内存,这有助于在不同平台和设备上提供一致且定制的用户体验。
Mem0允许开发者通过一个开发者API轻松地将这种内存功能集成到不同的应用中,最终实现跨应用程序的个性化AI体验。
🔑 核心功能
•多层次记忆:用户、会话和AI代理记忆保留•自适应个性化:根据交互持续改进•开发者友好API:简单集成到各种应用•跨平台一致性:设备间行为一致•托管服务:无忧的托管解决方案
🚀 快速开始
快速开始使用 Mem0!
欢迎来到 Mem0 快速入门指南。本指南将帮助你迅速上手使用 Mem0。
安装
你可以使用 pip 安装 Mem0。在终端中运行以下命令:
基本用法
初始化 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") # 删除所有记忆
重置记忆
📖 文档
有关详细的使用说明和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原生应用
GraphRAG会成为AI原生应用中RAG的终局吗?
Agentic Workflow会是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