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.rhkb.cn/news/382634.html

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

相关文章

电脑基础知识 | 电脑的基本组成

电脑作为我们日常工作和娱乐的重要工具,扮演着举足轻重的角色。当我们谈论电脑的基本组成时,其实是在探讨电脑硬件和软件两个核心部分。硬件是电脑看得见、摸得着的物理设备,而软件则是运行在这些硬件之上的程序和指令。两者相辅相成&#xf…

数据结构(二叉树-1)

文章目录 一、树 1.1 树的概念与结构 1.2 树的相关术语 1.3 树的表示 二、二叉树 2.1 二叉树的概念与结构 2.2特殊的二叉树 满二叉树 完全二叉树 2.3 二叉树的存储结构 三、实现顺序结构二叉树 3.1 堆的概念与结构 3.2 堆的实现 Heap.h Heap.c 默认初始化堆 堆的销毁 堆的插入 …

【web】-flask-简单的计算题(不简单)

打开页面是这样的 初步思路,打开F12,查看头,都发现了这个表达式的base64加密字符串。编写脚本提交答案,发现不对; 无奈点开source发现源代码,是flask,初始化表达式,获取提交的表达式&#xff0…

解锁创新:AI如何推动低代码应用的智能化

在当今快速变化的商业环境中,企业面临着前所未有的挑战和机遇。数字化转型已成为各行各业的必然趋势,企业需要迅速适应市场变化,提升客户体验,并降低开发成本。 这一背景下,低代码开发平台的崛起为企业提供了一种高效…

【RaspberryPi】树莓派系统UI优化

接上文,如何去定制一个树莓派的桌面系统,还是以CM4为例。 解除CM4上电USB无法使用问题 将烧录好的tf卡通过读卡器插入到电脑上,进入boot磁盘,里面有一个Config文件,双击用记事本打开,在【pi4】一栏里加入一…

C/C++标准IO的缓冲区

文章目录 缓冲区的分类缓冲区的刷新时机 缓冲区的分类 行缓存:和终端文件相关的缓冲区叫做行缓存,行缓冲区的大小为1024字节,对应的文件指 针:stdin、stdout全缓存:和外界文件相关的缓冲区叫做全缓存,全缓…

大屏数据看板一般是用什么技术实现的?

我们看到过很多企业都会使用数据看板,那么大屏看板的真正意义是什么呢?难道只是为了好看?答案当然不仅仅是。 大屏看板不仅可以提升公司形象,还可以提升企业的管理层次。对于客户,体现公司实力和品牌形象,…

HarmonyOS 本地真机运行

目录 官网地址 1.开发工具设置签名 2.手机开启开发者模式 3.使用USB连接方式 4.使用无线调试连接方式 5.常见的问题 官网地址 使用真机运行应用 使用本地真机运行应用/服务 1.开发工具设置签名 官网应用/服务签名 1.左上角文件--项目结构-勾选自动生成签名-Sign in登录 2…

单片机学习(18)--红外遥控器

红外遥控器 17.1红外遥控的基础知识1.红外遥控简介2.硬件电路3.基本发送和接收4.NEC编码5.遥控器键码6.51单片机的外部中断7.外部中断寄存器 17.2红外遥控的程序代码1.红外遥控(1)工程目录(2)main.c函数(3)…

pyenv-win | python版本管理,无需卸载当前版本

系统:windows,且已安装git。 使用 pyenv-win 在Windows中管理多个python版本,而无需卸载当前版本。安装步骤如下: 安装 pyenv-win 1. 安装 Git 和 pyenv-win: git clone https://github.com/pyenv-win/pyenv-win.git %USERPRO…

fastadmin 搜索调整的配置

//快捷搜索,这里可在控制器定义快捷搜索的字段search: false,//启用普通表单搜索commonSearch: true,//显示导出按钮showExport: false,//启用跨页选择maintainSelected: false,//启用固定列fixedColumns: false,//固定左侧列数fixedNumber: 3,//固定右侧列数fixedRightNumber:…

vue 两个页面切换, 再回到当前页,还是离开前的数据

1、要保证页面的name 和 建路由的大小写一致 2、页面不用生命周期--activated 调接口刷新

第G2周:人脸图像生成(DCGAN)

本文为365天深度学习训练营 中的学习记录博客 原作者:K同学啊 深度卷积对抗网络(Deep Convolutional Generative Adversarial Networks,简称DCGAN)是一种深度学习模型,由生成器(Generator)和判别…

四、GD32 MCU 常见外设介绍 (6) ADC 模块介绍

6.1.ADC 基础知识 12 位逐次逼近式模数转换器模块(ADC),可以采样来自于外部输入通道、内部输入通道的模拟信号,采样转换后,转换结果可以按照最低有效位对齐或最高有效位对齐的方式保存在相应的数据寄存器中。 6.2.GD…

【过题记录】 7.21

Mad MAD Sum 算法&#xff1a;思维&#xff0c;前缀最大值 模拟一下他的运行过程就会发现&#xff0c;两次之后整个数组就固定了&#xff0c;之后每次都是每个数往后移动一位&#xff0c;可以模拟两次之后计算每个数的存活轮数&#xff0c;计算贡献。 #include<bits/stdc.h…

PD协议芯片ECP5701兼容PD 2.0和PD 3.0(5V,9V,12V,15V,20V),支持 PD 输入多种类型无线充方案

文章目录 前言 一、TYPE-C口无线充与传统充电器的对比 1. TYPE-C口无线充的特点&#xff08;无需线材&#xff0c;更方便&#xff1b;接口定位性强&#xff0c;分明&#xff1b;兼容多个设备&#xff1b;充电速度更快&#xff1b;充电效率更高&#xff09; 2. 传统充电器的特点…

为什么 FPGA 的效率低于 ASIC?

FPGA是“可重构逻辑”器件。先制造的芯片&#xff0c;再次设计时“重新配置”。 ASIC 不需要“重新配置”。你先设计&#xff0c;把它交给代工厂&#xff0c;然后制造芯片。 现在让我们看看这些芯片的结构是什么样的&#xff0c;以及它们的不同之处。 ● 逻辑单元&#xff1a;F…

神经网络理论(机器学习)

motivation 如果逻辑回归的特征有很多&#xff0c;会造出现一些列问题&#xff0c;比如&#xff1a; 线性假设的限制&#xff1a; 逻辑回归是基于线性假设的分类模型&#xff0c;即认为特征与输出之间的关系是线性的。如果特征非常多或者特征与输出之间的关系是非线性的&#…

【Linux】线程——线程池、线程池的实现、线程安全的线程池、单例模式的概念、饿汉和懒汉模式、互斥锁、条件变量、信号量、自旋锁、读写锁

文章目录 Linux线程7. 线程池7.1 线程池介绍7.2 线程池的实现7.3 线程安全的线程池7.3.1 单例模式的概念7.3.2 饿汉和懒汉模式 8. 常见锁使用汇总8.1 互斥锁&#xff08;Mutex&#xff09;8.2 条件变量&#xff08;Condition Variable&#xff09;8.3 信号量&#xff08;Semaph…

探索 GPT-4o mini:成本效益与创新的双重驱动

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…