Mem0 - 个人 AI 的内存层

在这里插入图片描述

文章目录

    • 一、关于 Mem0
      • 核心功能🔑
      • 路线图 🗺️
      • 常见用例
      • Mem0与RAG有何不同?
    • 二、快速入门 🚀
      • 1、安装
      • 2、基本用法(开源)
      • 3、高级用法🔧
      • 4、大模型支持
    • 三、MultiOn
      • 1、概览
      • 2、设置和配置
      • 4、将记忆添加到Mem0
      • 5、检索相关记忆
      • 6、浏览arxiv
      • 7、结论


一、关于 Mem0

Personalized AI 的内存层

Mem0为大型语言模型提供智能、自我改进的内存层,实现跨应用程序的个性化AI体验。

  • Mem0 Slack : https://mem0.ai/slack
  • 官方文档:https://docs.mem0.ai/overview
  • Mem0 Discord : https://mem0.ai/discord
  • Mem0 Twitter : https://x.com/mem0ai
  • Y Combinator S24 : https://www.ycombinator.com/companies/mem0
  • mem0ai npm package : https://www.npmjs.com/package/mem0ai
  • mem0ai Python package on PyPi : https://pypi.python.org/pypi/mem0ai

注意:Mem0存储库现在还包括Embedchain项目,我们继续维护和支持Embedchain❤️,您可以在嵌入链目录中找到Embedchain代码库。


核心功能🔑

  • 多级内存:用户、会话和AI代理内存保留
  • 自适应个性化:基于交互的持续改进
  • 开发人员友好的API:简单集成到各种应用程序中
  • 跨平台一致性:跨设备的统一行为
  • 托管服务:无忧的托管解决方案

路线图 🗺️

  • 与各种LLM提供商集成
  • 支持LLM框架
  • 与AI代理框架集成
  • 可定制的内存创建/更新规则
  • 托管平台支持

常见用例

  • 个性化学习助手:长期记忆允许学习助手记住用户偏好、过去的交互和进度,提供更量身定制和有效的学习体验。
  • 客户支持AI代理:通过保留以前交互中的信息,客户支持机器人可以提供更准确和上下文感知的帮助,提高客户满意度并缩短解决时间。
  • 医疗助理:长期记忆使医疗助理能够跟踪患者病史、用药时间表和治疗计划,确保个性化和一致的护理。
  • 虚拟同伴:虚拟同伴可以通过记住个人细节、偏好和过去的对话,利用长期记忆与用户建立更深层次的关系,使互动更有意义。
  • 生产力工具:长期记忆有助于生产力工具记住用户习惯、常用文档和任务历史记录,简化工作流程并提高效率。
  • 游戏AI:在游戏中,具有长期记忆的AI可以通过记住玩家的选择、策略和进度来创造更身临其境的体验,从而相应地调整游戏环境。

Mem0与RAG有何不同?

与检索增强生成(RAG)相比,Mem0的大型语言模型(LLM)内存实现提供了几个优势:

  • 实体关系:Mem0可以跨不同的交互理解和关联实体,不像RAG从静态文档中检索信息。这导致对上下文和关系的更深入理解。
  • 最近性、相关性和衰减:Mem0优先考虑最近的交互并逐渐忘记过时的信息,确保记忆保持相关和最新,以获得更准确的响应。
  • 上下文连续性:Mem0跨会话保留信息,保持对话和交互的连续性,这对于虚拟同伴或个性化学习助手等长期参与应用程序至关重要。
  • 自适应学习:Mem0根据用户交互和反馈改进其个性化,随着时间的推移使记忆更加准确并为个人用户量身定制。
  • 动态更新:Mem0可以使用新的信息和交互动态更新其内存,这与依赖静态数据的RAG不同。这允许实时调整和改进,增强用户体验。

这些先进的内存功能使Mem0成为旨在创建个性化和上下文感知AI应用程序的开发人员的强大工具。


二、快速入门 🚀


1、安装

pip install mem0ai

2、基本用法(开源)

如果您正在寻找托管版本并且不想自己设置基础设施,请查看Mem0平台文档以在几分钟内开始使用。

import os
from mem0 import Memoryos.environ["OPENAI_API_KEY"] = "xxx"# Initialize Mem0
m = Memory()# Store a memory from any unstructured text
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.# Retrieve memories
all_memories = m.get_all()
print(all_memories)# Search memories
related_memories = m.search(query="What are Alice's hobbies?", user_id="alice")
print(related_memories)# Update a memory
result = m.update(memory_id="m1", data="Likes to play tennis on weekends")
print(result)# Get memory history
history = m.history(memory_id="m1")
print(history)


3、高级用法🔧

对于生产环境,您可以使用Qdrant作为矢量存储:

from mem0 import Memoryconfig = {"vector_store": {"provider": "qdrant","config": {"host": "localhost","port": 6333,}},
}m = Memory.from_config(config)

4、大模型支持

更多可见:https://docs.mem0.ai/llms

这里以 openai 为例

要使用OpenAI LLM模型,必须设置OPENAI_API_KEY环境变量,可以从OpenAI平台获取OpenAI API密钥。

获得密钥后,您可以这样使用它:

import os
from mem0 import Memoryos.environ["OPENAI_API_KEY"] = "your-api-key"config = {"llm": {"provider": "openai","config": {"model": "gpt-4o","temperature": 0.2,"max_tokens": 1500,}}
}m = Memory.from_config(config)
m.add("Likes to play cricket on weekends", user_id="alice", metadata={"category": "hobbies"})

三、MultiOn

构建个人浏览器代理 会记住用户偏好 并自动执行Web任务。

它将用于内存管理的Mem0 与用于执行浏览器操作的MultiOn 集成在一起,从而实现个性化和高效的Web交互。

1、概览

在这个例子中,我们将创建一个基于浏览器的人工智能代理,在 arxiv.org 上搜索与用户研究兴趣相关的研究论文。

2、设置和配置

安装必要的库:

pip install mem0ai multion

首先,我们将导入必要的库并设置我们的配置。

import os
from mem0 import Memory
from multion.client import MultiOn# Configuration
OPENAI_API_KEY = 'sk-xxx'  # Replace with your actual OpenAI API key
MULTION_API_KEY = 'your-multion-key'  # Replace with your actual MultiOn API key
USER_ID = "deshraj"# Set up OpenAI API key
os.environ['OPENAI_API_KEY'] = OPENAI_API_KEY# Initialize Mem0 and MultiOn
memory = Memory()
multion = MultiOn(api_key=MULTION_API_KEY)

4、将记忆添加到Mem0

接下来,我们将定义我们的用户数据并将其添加到Mem0。

# Define user data
USER_DATA = """
About me
- I'm Deshraj Yadav, Co-founder and CTO at Mem0, interested in AI and ML Infrastructure.
- Previously, I was a Senior Autopilot Engineer at Tesla, leading the AI Platform for Autopilot.
- I built EvalAI at Georgia Tech, an open-source platform for evaluating ML algorithms.
- Outside of work, I enjoy playing cricket in two leagues in the San Francisco.
"""# Add user data to memory
memory.add(USER_DATA, user_id=USER_ID)
print("User data added to memory.")

5、检索相关记忆

现在,我们将定义搜索命令并从Mem0中检索相关内存。

# Define search command and retrieve relevant memories
command = "Find papers on arxiv that I should read based on my interests."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"Relevant memories:")
print(relevant_memories_text)

6、浏览arxiv

最后,我们将使用MultiOn根据我们的命令和相关记忆浏览arxiv。

# Create prompt and browse arXiv
prompt = f"{command}\n My past memories: {relevant_memories_text}"
browse_result = multion.browse(cmd=prompt, url="https://arxiv.org/")
print(browse_result)

7、结论

通过将Mem0与MultiOn集成,您创建了一个个性化的浏览器代理,可以记住用户偏好并自动执行web任务。

有关更多详细信息和高级用法,请参阅完整recipe:https://github.com/mem0ai/mem0/blob/main/cookbooks/mem0-multion.ipynb 。


2024-07-23(二)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/49337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙仓颉语言【模块module】

module 模块 模块配置文件,这里指项目的modules.json 文件,用于描述代码项目的基础元属性。 {"name": "file name", //当前项目的名称"description": "项目描述", //项目描述"version": "1.0…

视频汇聚平台EasyCVR启动出现报错“cannot open shared object file”的原因排查与解决

安防视频监控EasyCVR安防监控视频系统采用先进的网络传输技术,支持高清视频的接入和传输,能够满足大规模、高并发的远程监控需求。EasyCVR平台支持多种视频流的外部分发,如RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、WebRTC、fmp4等&#xf…

kafka基础介绍

一、为什么使用消息队列 1.使用同步的通信方式来解决多个服务之间的通信 同步的通信方式会存在性能和稳定性的问题。 2.使用异步的通信方式 针对于同步的通信方式来说,异步的方式,可以让上游快速成功,极大提高了系统的吞吐量。而且在分布式系统中,通过下游多个服务的 分布式事…

怎么拼接几张图片为一张?拼接几张图片为一张的四种方法推荐

怎么拼接几张图片为一张?要将几张图片拼接成一张完整的图像,你可以利用现代软件和工具来实现这一操作。这种技术可以帮助你创建更大、更复杂的图像,无论是为了美学上的需要还是为了展示更完整的视觉信息。通过合并多张图片,你可以…

Windows上让Qt支持https请求

一.前言 Qt默认其实支持https的,但需要openssl的支持。所以有时候你代码中写了支持https的请求连接,发现程序可以运行,但到了https请求时会报错,如下: 这就是没有openssl的支持,导致QSslSocket无法进行ht…

关于c#的简单应用三题

#region 输入一个正整数&#xff0c;求1~这个数的阶乘 public static void Factorial(int a) { int result 1; for (int i 1; i < a; i) { result result * i; } Console.WriteLine(result); } #endregion #region 一个游戏&#…

【Vue3】从零开始编写项目

【Vue3】从零开始编写项目 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的…

阶梯-度小满春招算法方向第1批

问题的题面是典型的最长上升子序列问题。求方案数属动态规划问题&#xff0c;可推出以a[i]为最大节点的上升子序列方案数公式 dp[i]{dp[j] , 1<j<i-1&&f[j]1f[i]} &#xff08;f为最大上升子序列&#xff09;。 并且这个方案总数不会超过n&#xff0c;因此也…

C2W1.Assignment.Autocorrect.Part2

理论课&#xff1a;C2W1.Auto-correct 文章目录 3. Combining the edits3.1 Exercise 8.Edit one letter3.2 Exercise 9.Edit two letters3.3 Exercise 10.suggest spelling suggestions 4. Minimum Edit Distance4.1 Dynamic ProgrammingExercise 11Test All-in-one 5. Backt…

javaScrip的学习(一)

目录 引言 一、java和JavaScript的联系 二、js中的弹出框 1.alert弹出框 2.confirm带确认取消的按钮弹框 3.prompt带有提示信息且带有输入框的弹框 4.输出到网页中 ​三、js引入方式 1. 放在script标签中 2.放在外部js文件中 四、执行顺序 五、书写规范 1. 语句结…

python爬虫基础——Webbot库介绍

本文档面向对自动化网页交互、数据抓取和网络自动化任务感兴趣的Python开发者。无论你是初学者还是有经验的开发者&#xff0c;Webbot库都能为你的自动化项目提供强大的支持。 Webbot库概述 Webbot是一个专为Python设计的库&#xff0c;用于简化网页自动化任务。它基于Seleniu…

Hi3751V560_SELinux

Hi3751V560_SELinux setenforce Enforcing setenforce Permissive(或“setenforce 0”) getenforce V560:demo本身的: [ 13.765161] type=1400 audit(1628821512.905:4): avc: denied { read } for pid=1926 comm="system_server" name="ifindex" d…

CCRC-DCO数据合规入表正式落地!全流程操作指南来啦!(业内专家总结)

数据合规已绝非大企业专属&#xff01; 随着《网络安全法》《数据安全法》《个人信息保护法》相继落地&#xff0c;只要企业涉及用户的各种信息&#xff0c;哪怕是中小企业也会面临数据合规的监管&#xff0c;从而产生相关的法律需求。 小到APP对个人信息数据的采集&#xff0c…

【深入C++】map和set的使用

文章目录 C 中的容器分类1. 顺序容器2. 关联容器3. 无序容器4. 容器适配器5. 字符串容器6. 特殊容器 set1.构造函数2.迭代器3.容量相关的成员函数4.修改器类的成员函数5.容器相关操作的成员函数 multiset1.equal_range map1.初始化相关的函数2.迭代器3.容量相关的成员函数4.访问…

AVL树的理解和实现[C++]

文章目录 AVL树AVL树的规则或原理 AVL树的实现1.节点的定义2.功能和接口等的实现默认构造函数&#xff0c;析构函数拷贝构造函数插入搜索打印函数检查是否为平衡树&#xff0c;检查平衡因子旋转 AVL树 AVL树&#xff0c;全称Adelson-Velsky和Landis树&#xff0c;是一种自平衡…

Java IO模型深入解析:BIO、NIO与AIO

Java IO模型深入解析&#xff1a;BIO、NIO与AIO 一. 前言 在Java编程中&#xff0c;IO&#xff08;Input/Output&#xff09;操作是不可或缺的一部分&#xff0c;它涉及到文件读写、网络通信等方面。Java提供了多种类和API来支持这些操作。本文将从IO的基础知识讲起&#xff…

智慧职校就业管理:开启校园招聘会新模式

在智慧职校的就业管理系统中&#xff0c;校园招聘会的出现&#xff0c;为学生们提供了一个展示自我、探寻职业道路的舞台&#xff0c;同时也为企业搭建了一座直面未来之星的桥梁。这一功能&#xff0c;凭借其独特的优势与前沿的技术&#xff0c;正在重新定义校园与职场之间的过…

【JVM基础06】——组成-直接内存详解

目录 1- 引言&#xff1a;直接内存概述1-1 直接内存是什么&#xff1f;直接内存的定义(What)1-2 为什么用直接内存&#xff1f;Java程序对直接内存的使用 (Why) 2- ⭐核心&#xff1a;详解直接内存(How)2-1 文件拷贝案例介绍对比常规 IO(BIO) 和 NIO常规 IO 的操作流程NIO 的操…

LeetCode 热题 HOT 100 (009/100)【宇宙最简单版】

【图论】No. 0207 课程表【中等】&#x1f449;力扣对应题目指路 希望对你有帮助呀&#xff01;&#xff01;&#x1f49c;&#x1f49c; 如有更好理解的思路&#xff0c;欢迎大家留言补充 ~ 一起加油叭 &#x1f4a6; 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&#xff01…

小公司怎么申请企业邮箱?

小公司申请企业邮箱需要考虑哪些因素&#xff1f;小公司选择企业邮箱需考虑成本、功能、安全、支持等因素。小公司怎么申请企业邮箱呢&#xff1f;注册企业邮箱需填写企业信息、选择套餐并添加用户。 一、小公司申请企业邮箱考虑的因素 1、成本效益分析 预算规划&#xff1a…