Mem0 一款超强的可个性化AI记忆层的开源项目

技术

前言

一直以来,如何维持大模型的记忆能力都是一个令人工智能从业者头痛的问题,Mem0是一个新的在这方面表现良好的开源项目。

Mem0的目标是提供一个智能的、自我改进的内存系统,能够根据用户互动存储、回忆和完善信息,使AI交互更加个性化和具有上下文感知能力。

picture.image

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原生应用

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

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论