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.xdnf.cn/news/1488148.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

javaScrip的学习(一)

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

暑期C++ printf和scanf的平替

有任何不懂的问题可以评论区留言&#xff0c;能力范围内都会一一回答 C中也有专门的输入和输出的方法 首先我们需要一个头文件&#xff0c;也就是#include<iostream> 然后根据我们命名空间的知识可知这个地方如果我们要使用必须先展开 可以全部展开比如using namespa…

算法——二分查找(day9)

704.二分查找 704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 题目解析&#xff1a; 这道题其实用暴力其实很简单&#xff0c;挨个对比就完事了~ 但我们可以利用其升序的特性对其进行优化&#xff1a; 随机选择一个数&#xff08;5&#xff09;&#xff0c;发现比目标…

38.综合练习:评委打分

需求&#xff1a;有6位评委打分&#xff0c;分数范围[0&#xff0c;100]&#xff0c;去掉一个最高分和最低分之后&#xff0c;剩下4个评委的平均分就是最终得分 import java.util.Scanner;public class 评委打分 {public static void main(String[] args) {int[] arr new int…

给Windows系统中注入服务,即windwos守护进程

最近总是在windwos环境下测试nginx&#xff0c;总是需要频繁重启nginx服务。于是考虑有没有可能把nginx加入到系统服务的操作。在网上找了一大堆资料&#xff0c;现在来总结一下&#xff01; 方法1&#xff1a;利用nssm工具实现 这是一个守护进程的软件&#xff0c;可以在win…

利用‘WPS表格’或Excel批量修改文件名

以这些压缩包文件为例 第一步&#xff1a;新建一个空白的表格文档&#xff0c;并打开 第二步&#xff1a;对表格进行以下形式的设置 第三步&#xff1a;CtrlA(全选)–>按 Ctrlshift 的同时在空处点击鼠标右键–>复制文件地址&#xff1b;并填充对应的表格的单元格 第…

初识c++:string类(2)

#本节主要讲解c&#xff1a;string类的模拟实现 全部代码的实现在最后面&#xff01;&#xff01;&#xff01;有需要的自己往下滑&#xff0c;自取&#xff01;&#xff01;&#xff01;1.string类的模拟实现 2.浅拷贝 3.深拷贝 目录 #本节主要讲解c&#xff1a;string类…

洛谷 P9854 [CCC 2008 J1] Body Mass Index

这题让我们计算出 BMI 值&#xff0c;随后判断属于哪个等级。 BMI 值计算公式&#xff1a; ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​。 BMI 范围 对应信息 …

Linux NFS服务搭建及使用

一、NFS 服务器介绍 nfs &#xff08; Network File System &#xff09;即网络文件系统&#xff0c;其基于 UDP/IP使用 nfs 能够在不同计算机之间通过网络进行文件共享&#xff0c;能使使用者访问网络上其它计算机中的文件就像在访问自己的计算机一样。 二、NFS 服务器的特点 …

关闭Xshell后,任务将结束-tmux

Xshell标签中的会话结束后&#xff0c;会话中运行的进程也将被结束。 关闭标签 解释&#xff1a; xshell在断开连接后会中止所有正在运行的进程和任务&#xff0c;因为xshell客户端是通过ssh协议连接到远程服务器的&#xff0c;一旦连接断开&#xff0c;所有与该会话相关的进程…

[渗透测试] 主动信息收集

主动信息收集 在红蓝对抗过程中&#xff0c;资产属于核心地位&#xff0c;攻击方&#xff08;红方&#xff09;要尽可能的去获取对方资产&#xff0c;暴露目标资产&#xff0c;包括IP地址、网络设备、安全设备、服务器、存储在服务器中的数据等。防守方也要清楚自己有多少有价…

新榜矩阵通 | 家居行业品牌矩阵运营评估报告

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 新榜矩阵通推出“品牌矩阵运营评估”系列报告&#xff0c;深入剖析不同行业在新媒体平台上的运营策略及成效&#xff0c;为企业提供一个清晰标准的行业矩阵发展“参考坐标”。 随着自然流量匮乏、行业竞争…

免费【2024】springboot 博物馆展览与服务一体化平台

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

传知代码-智慧医疗:纹理特征VS卷积特征(论文复现)

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 论文链接&#xff1a;https://www.sciencedirect.com/science/article/abs/pii/S1076633223003537?__cf_chl_rt_tkJ9Aipfxyk5d.leu48P20ePFNd4B2aunaSmzVpXCg.7g-1721292386-0.0.1.1-6249 论文概述 今天我们把视线…

第8集《大佛顶首楞严经》

请大家打开《讲义》第十六页。 辛四、破转计见内。分二&#xff1a;壬一、转计。壬二、破斥。 古德说&#xff1a;不识本心&#xff0c;修法无益。我们的法门有很多选择&#xff0c;你可以去拜佛&#xff0c;你可以去念佛&#xff0c;你可以去持咒。但是从《楞严经》的角度来…

mac如何清理dns缓存 macbook清除dns缓存命令 苹果清理内存软件 为什么需要清除DNS缓存数据

在Mac操作系统中&#xff0c;清除DNS缓存可以帮助解决一些与域名解析有关的问题&#xff0c;例如访问速度慢、网站无法打开等。当遇到网络无法访问互联网等故障时有些用户不知道怎么清理DNS缓存&#xff0c;不清楚苹果mac清理内存怎么清理。接下来就给大家介绍一下Mac电脑清理d…

游泳耳机品牌哪个牌子好?四大高热度游泳耳机综合分析

近年来&#xff0c;游泳耳机的受欢迎程度呈指数级增长&#xff0c;市场热度不断攀升。但作为一名长期关注运动科技的专业人士&#xff0c;我必须提醒大家&#xff0c;在享受水下音乐的同时&#xff0c;也要注意选择专业可靠的产品。市面上许多所谓的“游泳耳机”其实缺乏必要的…

力扣 27移除元素

思路&#xff1a; 题目需要在原数组的基础上&#xff0c;移除等于val的元素&#xff0c;并返回数组移除后的元素数 用双指针遍历&#xff0c;for循环遍历&#xff0c;fast先行 如果当前元素等于val&#xff0c;fast自增是写在for循环中的,slow不变 如果不等&#xff0c;fas…

《Java初阶数据结构》----6.<优先级队列之PriorityQueue底层:堆>

前言 大家好&#xff0c;我目前在学习java。之前也学了一段时间&#xff0c;但是没有发布博客。时间过的真的很快。我会利用好这个暑假&#xff0c;来复习之前学过的内容&#xff0c;并整理好之前写过的博客进行发布。如果博客中有错误或者没有读懂的地方。热烈欢迎大家在评论区…

08 capture软件新建原理图 09 原理图添加元器件 10 原理图信号连通 11 原理图电源和地连通

08 capture软件新建原理图 && 09 原理图添加元器件 && 10 原理图信号连通 && 11 原理图电源和地连通 第一部分 08 capture软件新建原理图第二部分 09 原理图添加元器件第三部分 10 原理图信号连通第四部分 11 原理图电源和地连通 第一部分 08 capture软…