agentic_huge_data_base / wiki
页面 Mem0 · 10 用量模式·DeepWiki 中文全文译文

10 · 用量模式(Usage Patterns)

长期记忆与上下文管理 · 聚焦本章的模块关系、源码依据与实现要点。

项目Mem0 章节10 状态全文译文 模块检索、召回与索引、测试、发布与运维、界面与交互、记忆与上下文
源码线索
  • docs/cookbooks/essentials/building-ai-companion.mdx
  • docs/cookbooks/essentials/controlling-memory-ingestion.mdx
  • docs/cookbooks/essentials/entity-partitioning-playbook.mdx
  • docs/cookbooks/essentials/exporting-memories.mdx
  • docs/cookbooks/integrations/healthcare-google-adk.mdx
  • docs/cookbooks/integrations/openai-tool-calls.mdx
  • docs/cookbooks/overview.mdx
  • docs/docs.json
  • docs/llms.txt
  • docs/open-source/python-quickstart.mdx
模块标签
  • 检索、召回与索引
  • 测试、发布与运维
  • 界面与交互
  • 记忆与上下文
  • 模型调用与提供方适配

章节正文

用量模式

使用模式

相关源文件

以下文件为本 Wiki 页面的生成提供了上下文:

  • docs/cookbooks/essentials/building-ai-companion.mdx
  • docs/cookbooks/essentials/controlling-memory-ingestion.mdx
  • docs/cookbooks/essentials/entity-partitioning-playbook.mdx
  • docs/cookbooks/essentials/exporting-memories.mdx
  • docs/cookbooks/integrations/healthcare-google-adk.mdx
  • docs/cookbooks/integrations/openai-tool-calls.mdx
  • docs/cookbooks/overview.mdx
  • docs/docs.json
  • docs/llms.txt
  • docs/open-source/python-quickstart.mdx
  • docs/platform/features/contextual-add.mdx
  • docs/platform/features/entity-scoped-memory.mdx
  • docs/platform/features/v2-memory-filters.mdx
  • examples/misc/fitness_checker.py
  • examples/misc/multillm_memory.py
  • examples/misc/personal_assistant_agno.py
  • examples/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-40docs/cookbooks/essentials/building-ai-companion.mdx:94-120docs/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-32docs/cookbooks/essentials/controlling-memory-ingestion.mdx:34-38

基本记忆 CRUD 模式

添加模式:事实提取与存储

Memory.add() 处理流程

Mem0 · 添加模式:事实提取与存储 · 图 1
Mem0 · 添加模式:事实提取与存储 · 图 1

模式:基于消息的添加

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-49docs/llms.txt:35-38docs/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-74docs/llms.txt:41-41docs/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-50docs/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-84examples/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-116docs/cookbooks/essentials/controlling-memory-ingestion.mdx:186-213

记忆作为 LLM 工具模式

Mem0 可以直接接入 LLM 的工具调用(函数调用)流程,让代理自行决定何时搜索或保存信息 docs/cookbooks/integrations/openai-tool-calls.mdx:113-125

Mem0 · 记忆作为 LLM 工具模式 · 图 2
Mem0 · 记忆作为 LLM 工具模式 · 图 2

来源: docs/cookbooks/integrations/openai-tool-calls.mdx:141-207docs/cookbooks/integrations/healthcare-google-adk.mdx:123-144

多实体作用域

Mem0 允许通过 user_idagent_idapp_idrun_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-32docs/platform/features/entity-scoped-memory.mdx:30-43docs/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-118examples/misc/personal_assistant_agno.py:1-28