当前位置: 首页 > news >正文

智能体长记忆解决方案Mem0和Memobase

智能体长记忆解决方案Mem0和Memobase

1 简单介绍

为解决智能体的长记忆问题,有很多开源的方案,具有代表性的有Mem0、MemoryOS、Memobase、cognee等。

Mem0是嵌入式项目,特长多Agent记忆管理,适用于快速集成、短期记忆、开发资源有限的环境;

Memobase是非嵌入式(需要构建独立的服务),特长单用户记忆管理,适用于长期画像、结构化记忆、企业级扩展;

Mem0是专为现代 AI 智能体设计的记忆层。它作为一个持久化的记忆层,使智能体能够:回忆相关的过往交互 、存储重要的用户偏好和事实性上下文 、从成功与失败中学习等,它赋予 AI 智能体记忆能力,使其能够在多次交互中记住信息、持续学习并不断进化。它适配的组件较多。

# Github地址
https://github.com/mem0ai/mem0# 文档地址
https://docs.mem0.ai/introduction# Python客户端
https://docs.mem0.ai/open-source/python-quickstart# 官网地址
https://mem0.ai/

Memobase 是一个基于用户画像的记忆系统,旨在为您的大语言模型(LLM)应用提供长期的用户记忆能力。无论您是在构建虚拟伴侣、教育工具,还是个性化助手,Memobase 都能让您的 AI 记住用户、理解用户,并随着用户共同成长。

# Github地址
https://github.com/memodb-io/memobase# 文档地址
https://docs.memobase.io/introduction# 官网地址
https://www.memobase.io/

MemoryOS是一个用于个性化 AI 代理的记忆操作系统,能够实现更连贯、更个性化且更具上下文感知能力的交互。它采用分层存储架构,包含存储、更新、检索和生成四个核心模块,以实现全面且高效的记忆管理。

# Github地址
https://github.com/BAI-LAB/MemoryOS# 地址
https://bai-lab.github.io/MemoryOS/docs# 官网
https://baijia.online/memoryos/

Cognee会将您的数据组织成 AI 记忆,它会创建一个包含原始信息、提取出的概念以及有意义关系的知识图谱,供您进行查询。为智能体构建动态记忆,利用可扩展、模块化的 ECL(提取、认知、加载)管道,取代传统的 RAG(检索增强生成)。

# Github地址
https://github.com/topoteretes/cognee# 开发文档
https://docs.cognee.ai/getting-started/introduction

2 Mem0简单使用

2.1 Docker安装向量数据库

docker run -itd \
--name qdrant \
--restart always \
-p 6333:6333 \
-p 6334:6334 \
-v /home/qdrant_storage:/qdrant/storage:z \
qdrant/qdrant:v1.15.5

2.2 Python使用Mem0

# 安装依赖包
pip install mem0ai

Python代码

from mem0 import Memory
from openai import OpenAI# 配置向量库
config = {"vector_store": {"provider": "qdrant","config": {# 集合名称"collection_name": "test",# qdrant的地址"host": "192.168.108.147",# 端口号"port": 6333,# 设置向量维度,注意与本地模型同步"embedding_model_dims": 1024}},# 配置大模型"llm": {"provider": "openai","config": {# 类OpenAI的大模型地址"openai_base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1","api_key": "sk-XXXX",# 大模型名称"model": "qwen-plus","temperature": 0.3,"max_tokens": 2000}},# 配置嵌入模型"embedder": {"provider": "openai","config": {# 类OpenAI的嵌入地址"openai_base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1","api_key": "sk-XXXX",# 嵌入模型名称"model": "text-embedding-v4",# 生成文本的维度"embedding_dims": 1024}}
}
# 加载配置
memory = Memory.from_config(config)# 2 添加记忆
messages = [{"role": "user","content": "I like to drink coffee in the morning and go for a walk"}
]
# 用户编号
user_id = "mason"
result = memory.add(messages, user_id=user_id, metadata={"category": "preferences"})
print("result", result)# 历史记忆
history = memory.history(memory_id="c0cd9919-54e3-4127-b657-7cdb7bb096f1")# 3 查询记忆
related_memories = memory.search("Should I drink coffee or tea?", user_id="mason")
print("related_memories", related_memories)# 4 使用memory
openai_client = OpenAI(base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",api_key="sk-XXXX"
)
# 查询记忆
message = "tea"
relevant_memories = memory.search(query=message, user_id=user_id, limit=3)
# 封装记忆
memories_history = "\n".join(f"- {entry['memory']}" for entry in relevant_memories["results"])# 设置模型的提示词
system_prompt = f"You are a helpful AI. Answer the question based on query and memories.\nUser Memories:\n{memories_history}"
messages = [{"role": "system", "content": system_prompt}, {"role": "user", "content": message}]# 设置生成结果
response = openai_client.chat.completions.create(model="qwen-plus", messages=messages)
assistant_response = response.choices[0].message.content
print("assistant_response", assistant_response)# 追加新的记忆
messages.append({"role": "assistant", "content": assistant_response})
memory.add(messages, user_id=user_id)

2.3 执行结果

(1)代码执行

(2)Qdrant数据

3 Memobase简单使用

3.1 Docker安装Memobase服务器

⚠️ 可以使用官网的docker-compose直接安装,为了更好控制容器,此处分开安装。

(1)下载镜像

# 下载镜像,下载速度比较慢
docker pull ghcr.io/memodb-io/memobase:0.0.40# 下载pgvector
docker pull pgvector/pgvector:pg17# 下载redis
docker pull redis:7.4

(2)创建容器

网桥

# 创建网桥
sudo docker network create --driver bridge memobase-bridge

pgvector

# 创建向量库pgvector
docker run -itd \
--name memobase-server-db \
--network memobase-bridge \
--restart always \
-e POSTGRES_USER=root \
-e POSTGRES_PASSWORD=123456 \
-e POSTGRES_DB=memobase \
-p 5432:5432 \
-v /home/memobase/pgvector/data:/var/lib/postgresql/data \
pgvector/pgvector:pg17

redis

# 创建缓存库redis
docker run -itd \
--name memobase-server-redis \
--network memobase-bridge \
--restart always \
-p 6379:6379 \
-v /home/memobase/redis/data:/var/lib/postgresql/data \
redis:7.4 redis-server --requirepass 123456

Memobase

# 创建Memobase接口服务
# 注意:memobase是数据库
# memobase-server-db是数据库的容器名称
# memobase-server-redis是redis的容器名称
docker run -itd \
--name memobase-server-api \
--network memobase-bridge \
--restart always \
-e DATABASE_URL=postgresql://root:123456@memobase-server-db:5432/memobase \
-e REDIS_URL=redis://:123456@memobase-server-redis:6379/0 \
-e ACCESS_TOKEN=secret \
-e PROJECT_ID=memobase_dev \
-e API_HOSTS=http://0.0.0.0:8019 \
-e USE_CORS=false \
-p 8019:8000 \
-v /home/memobase/api/config.yaml:/app/config.yaml \
ghcr.io/memodb-io/memobase:0.0.40

配置文件:config.yaml

参数地址

https://docs.memobase.io/references/local_config#full-explanation-of-config-yaml

配置说明

# config.yaml
# 默认是OpenAI的地址,可以不设置
llm_base_url: OpenAI的地址
# 默认OpenAI的Key,必须设置,可以与上面的llm_base_url同步设置
llm_api_key: YOUR-OPENAI-KEY
# 设置模型名称,默认gpt-4o-mini
best_llm_model: 模型名称# 如果使用lstudio提供embedded, 可参考下面配置
# embedding_provider: lmstudio
# embedding_api_key: lm_XXX
# embedding_model: text-embedding-qwen3-embedding-8b# 如果使用地址访问嵌入模型,可参考下面配置
# embedding_base_url: http://127.0.0.1:1234/v1
# embedding_api_key: 嵌入模型的api-key
# embedding_model: 模型名称
# embedding_dim: 1024# language: zh

配置示例(以阿里云大模型)

# config.yaml
# 默认是OpenAI的地址,可以不设置
llm_base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
# 默认OpenAI的Key,必须设置,可以与上面的llm_base_url同步设置
llm_api_key: sk-xxxxx
# 设置模型名称,默认gpt-4o-mini
best_llm_model: qwen-plus# 如果使用lstudio提供embedded, 可参考下面配置
# embedding_provider: lmstudio
# embedding_api_key: lm_XXX
# embedding_model: text-embedding-qwen3-embedding-8b# 如果使用地址访问嵌入模型,可参考下面配置
embedding_base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
embedding_api_key: sk-xxxxx
embedding_model: text-embedding-v4
embedding_dim: 1024language: zh

3.2 Python使用Memobase

⚠️ Python版本要求:Python>=3.11

pip install memobase

简单示例

from openai import OpenAI
from memobase import MemoBaseClient, ChatBlob# 1 连接服务器,设置客户端
client = MemoBaseClient(# 服务器地址project_url="http://192.168.108.147:8019",# ACCESS_TOKEN=secretapi_key="secret"
)
print(client.ping())# 2 添加用户信息
uid = client.add_user({"name": "Mason"})# 可以用历史的用户编号查数据
# uid = "0c38e40e-89d0-4b5d-a423-526266abf48e"
print("uid", uid)# 3 获取用户信息
user = client.get_user(uid)
print("user", user)# 4 为用户添加记忆信息
message = ChatBlob(messages=[{"role": "user", "content": "Hi, I'm here again"},{"role": "assistant", "content": "Hi, Mason! How can I help you?"}
])
bid = user.insert(message)
print("bid", bid)# 5 将用户画像存储人库中
# 更新缓冲区的过程比较慢,可以注释掉
# 如果不刷新缓冲区,不会显示user.profile,也不能搜索记忆消息
# 默认情况,缓冲区数据太多(例如:1024 tokens),或者持续空闲很久(例如:1个小时),系统会自动将缓冲更新到库中
# 设置等待缓冲区执行
user.flush(sync=True)# 打印用户画像
print(user.profile(need_json=True))# 6 搜索记忆消息数据
# 语义查询
events = user.search_event("you")
print(events)# 要点查询
events = user.search_event_gist("you")
print(events)# 7 获取context
context = user.context()# 8 使用context应用到对话中client = OpenAI(base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",api_key="sk-XXXX"
)SYSTEM_PROMPT = f"""You're a helpful assistant.
Your job is to ...Below is the user's memory:
{context}"""# 获取值
response = client.chat.completions.create(model="qwen-plus",messages=[{"role": "system", "content": SYSTEM_PROMPT},{"role": "user", "content": "Who'am I?s"}]
)print(response.choices[0].message.content)

3.3 执行结果

查看服务日志

docker logs -f memobase-server-api

Python执行结果

数据库信息

使用DBeaver打开向量数据库

http://www.dtcms.com/a/431766.html

相关文章:

  • 健康网站模板正规电商平台
  • 网站布局内容tomcat wordpress
  • LeetCode 刷题【94. 二叉树的中序遍历、95. 不同的二叉搜索树 II】
  • 【代码随想录day 31】 力扣 738.单调递增的数字
  • 上海网站设计 企业有赞微商城入口
  • 【Leetcode高效算法】用双指针策略打破有效三角形的个数
  • 浏览器为什么打不开网站wordpress搭建多人博客
  • 牛客算法刷题noob57 凯撒加密
  • 计算机类毕业设计开题报告注意事项
  • Qt QML创建多线程(示例存读数据库)
  • 2026届计算机毕业设计选题推荐
  • 邹城市网站建设长春网站建设方案外包
  • 合肥建公司网站万户信息 做网站怎么样
  • 第十篇:告别new和delete:RAII机制与智能指针导论
  • 做搜狗pc网站优化快速深圳企业模板建站
  • 深度学习第十章 循环神经网络
  • 设计一个外贸网站需要多少钱wordpress 博客地址更改
  • ASP网站建设实训报告总结大德通众包做网站怎么样
  • 查询网站死链接温州百度快速排名优化
  • 网站建设全包哪家便宜怎么在网站上做按钮
  • 永州网站建设哪家好中信建设有限责任公司深圳中信金融中心项目工期专业招标
  • 八年级信息网站怎么做网站设计的价格
  • OSPF Init 状态 概念及题目
  • 事件相关电位(Event-Related Potential,ERP)
  • 运营一个网站的成本wordpress 网站小模块
  • 怀化市建设局网站地址wordpress建什么站
  • 网站域名解析怎么做wordpress筛选最新文章
  • 【知识科普】JSON数据格式详细介绍
  • wordpress站酷首页wordpress引用jquery
  • 深度学习中的池化(Pooling)技术:原理、实现与应用