Mem0 - 个人 AI 的内存层

AI工程仔 2024-09-14 11:31:01 阅读 75

在这里插入图片描述

文章目录

一、关于 Mem0核心功能🔑路线图 🗺️常见用例Mem0与RAG有何不同?

二、快速入门 🚀1、安装2、基本用法(开源)3、高级用法🔧4、大模型支持

三、MultiOn1、概览2、设置和配置4、将记忆添加到Mem05、检索相关记忆6、浏览arxiv7、结论


一、关于 Mem0

Personalized AI 的内存层

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

Mem0 Slack : https://mem0.ai/slack官方文档:https://docs.mem0.ai/overviewMem0 Discord : https://mem0.ai/discordMem0 Twitter : https://x.com/mem0aiY Combinator S24 : https://www.ycombinator.com/companies/mem0mem0ai npm package : https://www.npmjs.com/package/mem0aimem0ai 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、安装

<code>pip install mem0ai


2、基本用法(开源)

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

import os

from mem0 import Memory

os.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"})code>

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")code>

print(related_memories)

# Update a memory

result = m.update(memory_id="m1", data="Likes to play tennis on weekends")code>

print(result)

# Get memory history

history = m.history(memory_id="m1")code>

print(history)



3、高级用法🔧

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

from mem0 import Memory

config = {

"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 Memory

os.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"})code>


三、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/")code>

print(browse_result)


7、结论

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

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


2024-07-23(二)



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。