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

225 阅读6分钟

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

何为Mem0?

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

准备工作之下载所需库

pip install mem0ai pymochow

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 项目注入“记忆”吧!