Mem0 + 百度智能云向量数据库:为AI打造持久化记忆
你是否也希望让AI应用更“懂”用户,能够准确记住用户的偏好并随时间不断调整?Mem0 正是为此而生的智能记忆层。实践表明,通过结合百度智能云向量数据库的高效存储与检索能力,可以轻松为用户打造个性化、上下文感知的交互体验。
接下来,本文就将带你快速入门如何使用Mem0和百度智能云向量数据库,完成记忆的添加、检索、更新、搜索、删除与历史追踪等核心步骤,完成基础记忆操作,帮助构建个性化的AI交互。
何为Mem0?
Mem0是一个专为AI应用设计的记忆管理系统,它能够通过保留用户偏好并随时间持续适应,提供个性化和高效的交互体验,例如存储以及检索用户记忆、支持记忆的更新以及版本历史的追踪,非常适合聊天机器人和和个性化推荐等工具或者场景,带来无缝衔接以及上下文感知的体验。
准备工作之下载所需库
pip install mem0ai pymochow
pip install mem0ai pymochow
使用 OpenAI 作为 LLM,需要准备 API 密钥 OPENAI_API_KEY
作为环境变量。
import osos.environ["OPENAI_API_KEY"] = "sk-***********"
配置Mem0使用百度智能云向量数据库
现在可以配置 Mem0 使用百度智能云向量数据库作为向量存储
定义配置
# 定义配置
from mem0 import Memoryconfig = {"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_id
来 delete
记忆。将删除记忆"喜欢在周末打网球",因为其 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 项目注入“记忆”吧!