用量模式
使用模式
相关源文件
以下文件为本 Wiki 页面的生成提供了上下文:
docs/cookbooks/essentials/building-ai-companion.mdxdocs/cookbooks/essentials/controlling-memory-ingestion.mdxdocs/cookbooks/essentials/entity-partitioning-playbook.mdxdocs/cookbooks/essentials/exporting-memories.mdxdocs/cookbooks/integrations/healthcare-google-adk.mdxdocs/cookbooks/integrations/openai-tool-calls.mdxdocs/cookbooks/overview.mdxdocs/docs.jsondocs/llms.txtdocs/open-source/python-quickstart.mdxdocs/platform/features/contextual-add.mdxdocs/platform/features/entity-scoped-memory.mdxdocs/platform/features/v2-memory-filters.mdxexamples/misc/fitness_checker.pyexamples/misc/multillm_memory.pyexamples/misc/personal_assistant_agno.pyexamples/misc/personalized_search.py
本文档记录了 Mem0 的常见使用模式,涵盖从基本 CRUD 操作到高级集成场景。这些模式展示了如何在不同应用上下文中有效使用 Mem0 的记忆层。
有关详细的 API 参考,请参见记忆操作。有关特定集成的实现,请参见框架集成。有关基本设置和配置,请参见安装与设置。
记忆初始化模式
Mem0 支持两种主要的部署模型,每种模型具有不同的初始化模式。选择 Memory(开源版)还是 MemoryClient(平台版)决定了组件控制和托管模型。
自托管初始化:记忆类
模式:默认配置
Memory 类使用默认提供者进行初始化。默认情况下,它使用 OpenAI 作为大语言模型(LLM)和嵌入向量提供者,Qdrant 作为向量存储,SQLite 作为历史记录 docs/open-source/python-quickstart.mdx:80-87。
from mem0 import Memory
# 默认:OpenAI LLM + OpenAI 嵌入向量 + Qdrant 向量存储 + SQLite 历史记录
memory = Memory()
模式:自定义配置
用户可以通过向 Memory.from_config() 传递配置字典来自定义技术栈。这通常用于使用 Ollama 等提供者的本地优先设置 docs/cookbooks/essentials/building-ai-companion.mdx:94-120。
from mem0 import Memory
config = {
"vector_store": {
"provider": "qdrant",
"config": {"host": "localhost", "port": 6333, "embedding_model_dims": 768},
},
"llm": {
"provider": "ollama",
"config": {"model": "llama3.1:latest", "ollama_base_url": "http://localhost:11434"},
},
"embedder": {
"provider": "ollama",
"config": {"model": "nomic-embed-text:latest", "ollama_base_url": "http://localhost:11434"},
},
}
memory = Memory.from_config(config)
来源: docs/open-source/python-quickstart.mdx:34-40、docs/cookbooks/essentials/building-ai-companion.mdx:94-120、docs/llms.txt:90-92
平台初始化:MemoryClient 类
模式:API 密钥认证
MemoryClient 连接到托管的 Mem0 平台。这是推荐的四行代码集成和亚 50 毫秒检索路径 docs/llms.txt:23-32。
from mem0 import MemoryClient
# 使用平台 API 密钥初始化
client = MemoryClient(api_key="your-api-key")
来源: docs/llms.txt:23-32、docs/cookbooks/essentials/controlling-memory-ingestion.mdx:34-38
基本记忆 CRUD 模式
添加模式:事实提取与存储
Memory.add() 处理流程
模式:基于消息的添加
add() 方法处理对话以提取和存储事实 docs/open-source/python-quickstart.mdx:42-49。
messages = [
{"role": "user", "content": "你好,我是 Alex。我喜欢篮球和游戏。"},
{"role": "assistant", "content": "你好 Alex!我会记住你的兴趣。"}
]
client.add(messages, user_id="alex")
来源: docs/open-source/python-quickstart.mdx:42-49、docs/llms.txt:35-38、docs/core-concepts/memory-operations/add
搜索模式:语义检索
模式:带过滤的搜索
搜索使用向量相似性执行语义检索。结果可以通过 user_id 等过滤器限定范围 docs/open-source/python-quickstart.mdx:53-57。
# 搜索与查询相关的记忆
results = client.search("关于我你知道什么?", user_id="alex")
# 处理结果
for item in results["results"]:
print(f"记忆:{item['memory']}(得分:{item['score']})")
来源: docs/open-source/python-quickstart.mdx:53-74、docs/llms.txt:41-41、docs/cookbooks/essentials/building-ai-companion.mdx:65-66
更新与删除模式
模式:直接修改
可以使用唯一的 memory_id 更新或删除记忆 docs/llms.txt:45-50。
# 更新特定记忆
client.update(memory_id="mem_123", data="Alice 热爱山地徒步")
# 删除特定记忆
client.delete(memory_id="mem_123")
# 删除用户的所有记忆
client.delete_all(user_id="alice")
来源: docs/llms.txt:45-50、docs/llms.txt:75-80
高级使用模式
先搜索后生成模式
这是构建有状态 AI 伴侣的标准模式。它涉及检索相关记忆并将其注入到大语言模型(LLM)的系统提示中 docs/cookbooks/essentials/building-ai-companion.mdx:63-84。
def chat(user_input, user_id):
# 1. 检索相关记忆
memories = client.search(user_input, filters={"user_id": user_id}, top_k=5)
context = "\n".join(m["memory"] for m in memories["results"])
# 2. 使用记忆上下文调用 LLM
response = openai_client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": f"你是一名教练。记忆:\n{context}"},
{"role": "user", "content": user_input}
]
).choices[0].message.content
# 3. 存储新的对话
client.add([
{"role": "user", "content": user_input},
{"role": "assistant", "content": response}
], user_id=user_id)
return response
来源: docs/cookbooks/essentials/building-ai-companion.mdx:63-84、examples/misc/fitness_checker.py:34-49
受控入库模式
使用自定义指令和置信度阈值来防止来自推测性或低质量数据的"记忆污染" docs/cookbooks/essentials/controlling-memory-ingestion.mdx:17-28。
# 设置自定义指令以过滤推测性内容
instructions = "仅存储已确认的医疗事实。忽略推测性内容(可能、也许)。"
client.project.update(custom_instructions=instructions)
# 测试入库
client.add("我想我可能对青霉素过敏", user_id="p123")
# 结果:由于指令限制,存储了 0 条记忆
来源: docs/cookbooks/essentials/controlling-memory-ingestion.mdx:75-116、docs/cookbooks/essentials/controlling-memory-ingestion.mdx:186-213
记忆作为 LLM 工具模式
Mem0 可以直接接入 LLM 的工具调用(函数调用)流程,让代理自行决定何时搜索或保存信息 docs/cookbooks/integrations/openai-tool-calls.mdx:113-125。
来源: docs/cookbooks/integrations/openai-tool-calls.mdx:141-207、docs/cookbooks/integrations/healthcare-google-adk.mdx:123-144
多实体作用域
Mem0 允许通过 user_id、agent_id、app_id 和 run_id 对记忆进行分区,以在多租户环境中保持隔离 docs/cookbooks/essentials/entity-partitioning-playbook.mdx:32-38。
| 作用域 | 字段 | 用途 | 示例 |
|---|---|---|---|
| 用户 | user_id | 持久化的个人或账户 | customer_6412 |
| 代理 | agent_id | 不同的代理角色或工具 | meal_planner |
| 应用 | app_id | 白标应用或产品界面 | ios_retail_demo |
| 会话 | run_id | 短生命周期的流程或工单 | ticket-9241 |
隐式作用域:仅传递 user_id 会将结果限制在其他字段为 null 的记录上。使用通配符("*")可以匹配跨维度的任何非空值 docs/platform/features/entity-scoped-memory.mdx:37-43。
来源: docs/cookbooks/essentials/entity-partitioning-playbook.mdx:27-32、docs/platform/features/entity-scoped-memory.mdx:30-43、docs/platform/features/v2-memory-filters.mdx:34-41
领域特定示例
Mem0 在各个领域中被用于提供长期记忆能力:
- 医疗助手:跨会话记住患者病史、过敏信息和症状,同时过滤推测性内容
docs/cookbooks/essentials/controlling-memory-ingestion.mdx:7-10。 - 健身教练:跟踪目标、锻炼日志和恢复计划
examples/misc/fitness_checker.py:1-24。 - 个人助手:管理每日提醒并处理多模态数据(图像+文本)
examples/misc/personal_assistant_agno.py:31-75。 - 研究助手:捕获风格指南和内容创建工作流
docs/cookbooks/overview.mdx:90-96。
有关这些场景的详细实现,请参见领域特定示例。
来源: docs/cookbooks/overview.mdx:16-118、examples/misc/personal_assistant_agno.py:1-28