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

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 内部依赖 chromadbpip 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✅ 是✅ 是(文件模式)
EmbeddingOllama (nomic-embed-text)✅ 是✅ 是
LLMOllama (llama3.2)✅ 是✅ 是
记忆管理Mem0✅ 是✅ 是

这个方案完全满足您“纯本地、无外部依赖、仅用本地大模型”的要求,且代码简洁、易于维护。

如需更换模型(如改用 phi3qwen2),只需修改 config 中的 model 名称并确保已通过 ollama pull 下载即可。

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

相关文章:

  • 如何自动清理 Linux 临时文件 ?
  • C++容器forward_list
  • 茂名网站建设培训品牌宣传网站
  • 油漆工找活做的网站网站免费建设
  • TcpClinet
  • Appium+Python+Android+Nodejs环境安装
  • SCDN:互联网时代网站安全的安全保障
  • Linux小课堂: Apache服务在CentOS上的安装与基础配置指南
  • Gorm(八)预加载方式
  • 网站开发与设计的实训场地WordPress无法自动推送
  • 【找指针数组最大值】2022-11-24
  • 自己做网站能赚钱吗做spa的网站怎么推广
  • 网络管理中的名词
  • gitlab配置git的ssh秘钥
  • 机器狗进化论:当“园区跑腿”遇上具身智能,一场静悄悄的变革正在发生
  • 江宁区建设工程质量监督站网站学校网站源码开源
  • Docker LXC深度解析:从基础概念到实战演练
  • Spring Boot3零基础教程,docker 批量安装软禁,笔记68
  • 【C语言】函数栈帧的创建和销毁
  • 架构的尺度:从单机到分布式,服务端技术的深度演进
  • 优秀国内个人网站网址网站设计需要那些模块
  • 【ARM驱动】【FreeROTS移植到ARM驱动平台介绍】
  • BELLE中的表1
  • go-ethereum core之交易索引txIndexer
  • 描述对于营销型网站建设很重要飘红效果更佳信阳做网站 汉狮网络
  • 油猴脚本学习1——元数据头部
  • mysql 如何让事件执行
  • PantherX2 debain/armbian Jellyfin10.10.7升级10.11启动后无法监听端口8096的解决办法
  • 网站建设利弊中山币做网站公司
  • Kaleidoscope for mac 文件对比工具