AI 文摘

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





作者: 山行AI 来源: 山行AI

前言

一直以来,如何维持大模型的记忆能力都是一个令人工智能从业者头痛的问题,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原生应用

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:[email protected]

更多AI工具,参考Github-AiBard123国内AiBard123

可关注我们的公众号:每天AI新工具