Mem0 使用案例学习总结 - 记忆化应用结构
前言
为了学习mem0的应用,我们可以构建一个 完全本地、轻量、可运行 的 Mem0 示例,使用 Chroma 作为向量数据库、Ollama 提供 LLM 和 Embedding 能力。
环境
- Python 3.12.8
- 仅使用本地大模型(通过 Ollama)
- 不依赖任何外部 Embedding 或向量服务
✅ 第一步:安装依赖
在您的 Python 环境中运行以下命令:
# 安装 Mem0(会自动包含 Chroma 支持)
pip install mem0ai# 安装 Ollama 的 Python 客户端(可选,但推荐用于调试)
pip install ollama
💡 注意:Mem0 内部依赖
chromadb,pip install mem0ai通常会自动安装它。如果没有,可以手动补充:pip install chromadb
✅ 第二步:准备本地模型(通过 Ollama)
确保已安装 Ollama,然后拉取两个模型:
# 用于生成回答的 LLM
ollama pull llama3.2# 用于生成 Embedding 的模型(Chroma 需要它)
ollama pull nomic-embed-text
✅
nomic-embed-text是 Ollama 中兼容 Chroma 且效果不错的开源嵌入模型。
✅ 第三步:编写完整 Python 示例代码
创建文件 mem0_with_chroma.py:
from mem0 import Memory# === 配置 Mem0:全部使用本地服务 ===
config = {"vector_store": {"provider": "chroma","config": {"path": "./my_chroma_memories", # 本地持久化路径"collection_name": "user_memories"}},"llm": {"provider": "ollama","config": {"model": "llama3.2","ollama_base_url": "http://localhost:11434",}},"embedder": {"provider": "ollama","config": {"model": "nomic-embed-text","ollama_base_url": "http://localhost:11434",}},
}# 初始化 Memory
memory = Memory.from_config(config)# 用户 ID(用于隔离不同用户的记忆)
user_id = "user_local_001"# === 添加记忆 ===
print("正在添加记忆...")
memory.add("我住在杭州,喜欢西湖边散步。", user_id=user_id)
memory.add("我对人工智能和大模型开发很感兴趣。", user_id=user_id)
memory.add("我不喝咖啡,只喝茶。", user_id=user_id)# === 查询相关记忆 ===
query = "用户喜欢什么饮品?"
print(f"\n查询问题: {query}")
results = memory.search(query, user_id=user_id)print("检索到的相关记忆:")
for i, mem in enumerate(results, 1):print(f"{i}. {mem['text']}")# === (可选)让 LLM 基于记忆生成回答 ===
# 注意:Mem0 本身不直接提供“带记忆的问答”接口,但你可以组合使用
context = "\n".join([mem["text"] for mem in results])
prompt = f"""你是一个贴心的助手,请根据用户的记忆回答问题。
用户的记忆:
{context}问题:{query}请直接回答,不要提及“根据记忆”等字样。"""response = memory.llm.generate(messages=[{"role": "user", "content": prompt}])
print(f"\nLLM 回答: {response}")
✅ 第四步:运行示例
确保 Ollama 正在运行(终端中执行 ollama serve 或后台已启动),然后运行:
python mem0_with_chroma.py
首次运行时,Mem0 会:
- 在
./my_chroma_memories目录下创建 Chroma 的本地数据库 - 调用 Ollama 生成嵌入向量并存储
- 调用 Ollama 的 LLM 生成回答
后续运行会复用已存储的记忆,实现真正的本地持久化。
🔒 数据持久化说明
- 所有记忆都保存在你项目目录下的
./my_chroma_memories文件夹中。 - 删除该文件夹即可清除所有记忆。
- 无需 Docker 或额外服务,Chroma 默认以 本地文件模式 运行,非常适合开发和单机部署。
✅ 优势总结
| 组件 | 方案 | 是否本地 | 是否免服务 |
|---|---|---|---|
| 向量库 | Chroma | ✅ 是 | ✅ 是(文件模式) |
| Embedding | Ollama (nomic-embed-text) | ✅ 是 | ✅ 是 |
| LLM | Ollama (llama3.2) | ✅ 是 | ✅ 是 |
| 记忆管理 | Mem0 | ✅ 是 | ✅ 是 |
这个方案完全满足您“纯本地、无外部依赖、仅用本地大模型”的要求,且代码简洁、易于维护。
如需更换模型(如改用 phi3 或 qwen2),只需修改 config 中的 model 名称并确保已通过 ollama pull 下载即可。
