文章目录
- 一、关于 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 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"})
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 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"})
三、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(二)