logo

Mem0 + 百度智能云向量数据库:为AI打造持久化记忆

你是否也希望让AI应用更“懂”用户,能够准确记住用户的偏好并随时间不断调整?Mem0 正是为此而生的智能记忆层。实践表明,通过结合百度智能云向量数据库的高效存储与检索能力,可以轻松为用户打造个性化、上下文感知的交互体验。
接下来,本文就将带你快速入门如何使用Mem0和百度智能云向量数据库,完成记忆的添加、检索、更新、搜索、删除与历史追踪等核心步骤,完成基础记忆操作,帮助构建个性化的AI交互。

何为Mem0?

Mem0是一个专为AI应用设计的记忆管理系统,它能够通过保留用户偏好并随时间持续适应,提供个性化和高效的交互体验,例如存储以及检索用户记忆、支持记忆的更新以及版本历史的追踪,非常适合聊天机器人和和个性化推荐等工具或者场景,带来无缝衔接以及上下文感知的体验。

准备工作之下载所需库

  
  
  
  
  
  
pip install mem0ai pymochow
使用 OpenAI 作为 LLM,需要准备 API 密钥 OPENAI_API_KEY 作为环境变量。
  
  
  
  
  
  
import os
os.environ["OPENAI_API_KEY"] = "sk-***********"

配置Mem0使用百度智能云向量数据库

现在可以配置 Mem0 使用百度智能云向量数据库作为向量存储
  
  
  
  
  
  
# 定义配置
from mem0 import Memory
config = {
"vector_store": {
"provider": "baidu",
"config": {
"endpoint": "http://your-baidu-vectordb-endpoint",
"account": "your-account",
"api_key": "your-api-key",
"database_name": "mem0_demo",
"table_name": "quickstart_mem0_with_baidu",
"embedding_model_dims": 1536,
"metric_type": "L2",
},
}
}
m = Memory.from_config(config)
配置说明:
  • endpoint: 百度向量数据库的服务端点
  • account: 您的百度云账户
  • api_key: 百度向量数据库的 API 密钥
  • database_name: 数据库名称
  • table_name: 表名称
  • embedding_model_dims: 向量维度(需与您的嵌入模型匹配)
  • metric_type: 相似度计算方式(支持 COSINE、L2、IP)

使用Mem0和百度智能云向量数据库管理用户记忆

1、添加记忆

add 函数将非结构化文本作为记忆存储在百度向量数据库中,并将其与特定用户和可选元数据关联。在这里添加Alice的记忆"正在努力提高我的网球技能",以及相关的上下文元数据到百度智能云向量数据库。
  
  
  
  
  
  
# 为用户添加记忆:正在努力提高网球技能
res = m.add(
messages="我正在努力提高我的网球技能。",
user_id="alice",
metadata={"category": "hobbies"},
)
print(res)
  
  
  
  
  
  
{'results': [{'id': '77162018-663b-4dfa-88b1-4f029d6136ab',
'memory': '正在努力提高网球技能',
'event': 'ADD'}],
'relations': []}

2、更新记忆

可以使用 add 函数的返回值来获取记忆 ID,允许通过 update 用新信息更新此记忆。
  
  
  
  
  
  
# 获取 memory_id
memory_id = res["results"][0]["id"]
# 用新信息更新此记忆:喜欢在周末打网球
m.update(memory_id=memory_id, data="喜欢在周末打网球")
  
  
  
  
  
  
{'message': 'Memory updated successfully!'}

3、获取用户所有记忆

可以使用 get_all 函数查看百度向量数据库中所有插入的记忆或按 user_id 过滤。注意!这里可以看到记忆现在从"正在努力提高网球技能"更改为"喜欢在周末打网球"。
  
  
  
  
  
  
# 获取用户 Alice 的所有记忆
m.get_all(user_id="alice")
  
  
  
  
  
  
{'results': [{'id': '77162018-663b-4dfa-88b1-4f029d6136ab',
'memory': '喜欢在周末打网球',
'hash': '4c3bc9f87b78418f19df6407bc86e006',
'metadata': None,
'created_at': '2024-11-01T19:33:44.116920-07:00',
'updated_at': '2024-11-01T19:33:47.619857-07:00',
'user_id': 'alice'}]}

4、查看记忆更新历史

还可以通过 history 函数指定我们感兴趣的 memory_id 来查看记忆更新历史。
  
  
  
  
  
  
m.history(memory_id=memory_id)
  
  
  
  
  
  
[{'id': '71ed3cec-5d9a-4fa6-a009-59802450c0b9',
'memory_id': '77162018-663b-4dfa-88b1-4f029d6136ab',
'old_memory': None,
'new_memory': '正在努力提高网球技能',
'event': 'ADD',
'created_at': '2024-11-01T19:33:44.116920-07:00',
'updated_at': None},
{'id': 'db2b003c-ffb7-42e4-bd8a-b9cf56a02bb9',
'memory_id': '77162018-663b-4dfa-88b1-4f029d6136ab',
'old_memory': '正在努力提高网球技能',
'new_memory': '喜欢在周末打网球',
'event': 'UPDATE',
'created_at': '2024-11-01T19:33:44.116920-07:00',
'updated_at': '2024-11-01T19:33:47.619857-07:00'}]

5、搜索记忆

可以使用 search 函数为用户查找最相关的记忆。可以先为 Alice 添加另一个记忆。
  
  
  
  
  
  
new_mem = m.add(
"我有一个线性代数期中考试在11月20日",
user_id="alice",
metadata={"category": "task"},
)
现在调用 get_all 指定 user_id 来验证确实为用户 Alice 有 2 个记忆条目。
  
  
  
  
  
  
m.get_all(user_id="alice")
  
  
  
  
  
  
{'results': [{'id': '77162018-663b-4dfa-88b1-4f029d6136ab',
'memory': '喜欢在周末打网球',
'hash': '4c3bc9f87b78418f19df6407bc86e006',
'metadata': None,
'score': 0.8234567,
'created_at': '2024-11-01T19:33:44.116920-07:00',
'updated_at': '2024-11-01T19:33:47.619857-07:00',
'user_id': 'alice'},
{'id': 'aa8eaa38-74d6-4b58-8207-b881d6d93d02',
'memory': '有一个线性代数期中考试在11月20日',
'hash': '575182f46965111ca0a8279c44920ea2',
'metadata': {'category': 'task'},
'score': 0.6543210,
'created_at': '2024-11-01T19:33:57.271657-07:00',
'updated_at': None,
'user_id': 'alice'}]}

6、删除记忆

还可以通过提供相应的 memory_iddelete 记忆。将删除记忆"喜欢在周末打网球",因为其 memory_id 已经被检索,并调用 get_all 来验证删除是否成功。
  
  
  
  
  
  
m.delete(memory_id=memory_id)
m.get_all(user_id="alice")
  
  
  
  
  
  
{'results': [{'id': 'aa8eaa38-74d6-4b58-8207-b881d6d93d02',
'memory': '有一个线性代数期中考试在11月20日',
'hash': '575182f46965111ca0a8279c44920ea2',
'metadata': {'category': 'task'},
'created_at': '2024-11-01T19:33:57.271657-07:00',
'updated_at': None,
'user_id': 'alice'}]}
Mem0 与百度智能云向量数据库的结合,为开发者提供了一个强大而易用的工具链,用于构建具备长期记忆能力的 AI 应用。无论是智能对话系统还是个性化推荐引擎,都能从中受益。
现在就尝试以上代码,为你下一个 AI 项目注入“记忆”吧!
评论
用户头像