agentic_huge_data_base / wiki
页面 Mem0 · 7.6 记忆导出·DeepWiki 中文全文译文

7.6 · 记忆导出(Memory Export)

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

项目Mem0 章节7.6 状态全文译文 模块接口与服务契约、界面与交互、工作流与编排、记忆与上下文
源码线索
  • docs/api-reference/entities/delete-user.mdx
  • docs/api-reference/entities/get-users.mdx
  • docs/api-reference/events/get-event.mdx
  • docs/api-reference/events/get-events.mdx
  • 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
模块标签
  • 接口与服务契约
  • 界面与交互
  • 工作流与编排
  • 记忆与上下文
  • 模型调用与提供方适配

章节正文

记忆导出

内存导出

相关源文件

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

  • docs/api-reference/entities/delete-user.mdx
  • docs/api-reference/entities/get-users.mdx
  • docs/api-reference/events/get-event.mdx
  • docs/api-reference/events/get-events.mdx
  • 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/openapi.json
  • docs/platform/features/contextual-add.mdx
  • docs/platform/features/entity-scoped-memory.mdx
  • docs/platform/features/v2-memory-filters.mdx
  • docs/platform/quickstart.mdx
  • mem0/client/main.py

内存导出是一个结构化数据提取系统,可以将非结构化内存转换为类型化、符合模式的数据结构。该功能允许应用程序以 JSON 模式(通常由 Pydantic 生成)定义的格式检索内存,从而实现与下游系统的类型安全集成和数据可移植性。

概述

内存导出系统作为一个基于异步任务的服务运行,其工作流程如下:

  1. 接收 JSON 模式定义。
  2. 检索符合可选过滤条件的内存。
  3. 使用大语言模型(LLM)进行提取,将数据转换并结构化为符合模式的形式。
  4. 通过基于轮询的检索机制返回类型化结果。

这使得应用程序能够将对话式内存数据转换为结构化格式,例如客户画像、专业简历或特定领域的实体。

来源docs/docs.json:95-95mem0/client/main.py:563-606

导出工作流

下图展示了在导出生命周期中,SDK 与平台 API 之间的交互过程。

Mem0 · 导出工作流 · 图 1
Mem0 · 导出工作流 · 图 1

图示:内存导出的请求与检索生命周期,展示了异步处理过程。

来源mem0/client/main.py:563-606docs/openapi.json:24-210

创建导出

端点:POST /v1/memories/导出/

创建导出的端点接收模式、过滤条件和可选指令。

请求结构

字段类型必填描述
schemaobject定义导出结构的 JSON 模式(兼容 Pydantic)。
filtersobject实体过滤条件(user_id、agent_id、app_id、run_id)。
export_instructionsstring用于提取过程的自定义自然语言指令。
客户端方法:create_memory_export

MemoryClient.create_memory_export() 方法封装了导出创建的 API。

# 使用示例
filters = {"user_id": "alice"}
export_instructions = "创建一份全面的画像。优先使用最近的信息。"

response = client.create_memory_export(
    schema=json_schema,
    filters=filters,
    export_instructions=export_instructions
)
print(response["id"])

实现细节

  • 位于 mem0/client/main.py:563-587
  • 接收 schema(字典类型)和可选的 export_instructions
  • 使用 _prepare_params()org_idproject_id 注入到请求上下文中 mem0/client/main.py:143-154
  • 捕获遥测事件 client.create_memory_export mem0/client/main.py:587

来源mem0/client/main.py:563-587mem0/client/main.py:143-154

模式与指令

模式定义

模式决定了输出的结构。它支持嵌套对象、枚举和基本类型。常见的结构包括 ProfessionalProfile(专业画像)或 UserPreferences(用户偏好)。

导出指令

用户可以提供 export_instructions 来指导大语言模型(LLM)进行提取。常见的使用场景包括:

  • 冲突解决:优先使用最近的信息而非历史记录。
  • 详细程度:指定特定字段的提取深度。
  • 事实性:区分已确认的事实和用户推测性的陈述。

来源mem0/client/main.py:563-568docs/platform/features/v2-memory-filters.mdx:6-16

检索导出结果

端点:GET /v1/memories/导出/{id}/

创建导出任务后,可以通过导出 ID 检索结果。

客户端方法:get_memory_export

# 使用导出 ID 进行检索
response = client.get_memory_export(memory_export_id="550e8400-e29b-41d4-a716-446655440000")

备选方案:按过滤条件检索 SDK 还允许获取与特定过滤条件关联的最新导出。

filters = {"user_id": "alex"}
response = client.get_memory_export(filters=filters)

实现细节

  • 位于 mem0/client/main.py:590-606
  • 如果提供了 memory_export_id,则调用指定 ID 的端点。
  • 如果提供了 filters,则调用基于过滤条件的检索端点。
  • 捕获遥测事件 client.get_memory_export mem0/client/main.py:606

来源mem0/client/main.py:590-606

代码实体映射

下图将 SDK 方法映射到对应的 API 端点和内部工具函数。

Mem0 · 代码实体映射 · 图 2
Mem0 · 代码实体映射 · 图 2

图示:SDK 方法与 API 端点及内部逻辑的关联关系。

来源mem0/client/main.py:563-622mem0/client/utils.py:1-20

导出过滤

导出可以使用与标准内存搜索相同的过滤逻辑来限定范围。

过滤条件用途示例
user_id隔离特定用户的内存。{"user_id": "user_123"}
agent_id按特定智能体角色进行过滤。{"agent_id": "agent_456"}
app_id限定到特定应用实例。{"app_id": "app_789"}
run_id限定到特定会话或线程。{"run_id": "run_000"}
created_at基于时间的导出,支持运算符。{"created_at": {"gte": "2024-01-01"}}

来源docs/platform/features/v2-memory-filters.mdx:32-60mem0/client/main.py:32-34

摘要与元数据

平台 API 提供了 /v1/summary/ 端点,用于获取内存的高级概览,而无需执行完整的结构化导出。

客户端方法:get_summary

# mem0/client/main.py:609-622
def get_summary(self, filters: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
    """获取内存导出的摘要。"""
    params = self._prepare_params({"filters": filters})
    response = self.client.post("/v1/summary/", json=params)
    return response.json()

来源mem0/client/main.py:609-622

错误处理

状态码原因解决方法
401未授权确认 MEM0_API_KEY 已正确设置。
404未找到导出 ID 不存在或已过期。
422校验错误提供的 JSON 模式或过滤条件无效。

SDK 使用 @api_error_handler 装饰器将这些 HTTP 错误转换为 Python 异常,例如 ValidationError(校验错误)或 AuthenticationError(认证错误)。

来源mem0/client/main.py:163-163mem0/client/utils.py:1-20