高级模式
高级模式
相关源文件
本章引用的主要源码文件:
docs/cookbooks/companions/nodejs-companion.mdxdocs/cookbooks/essentials/building-ai-companion.mdxdocs/cookbooks/essentials/controlling-memory-ingestion.mdxdocs/cookbooks/essentials/entity-partitioning-playbook.mdxdocs/cookbooks/essentials/exporting-memories.mdxdocs/cookbooks/frameworks/eliza-os-character.mdxdocs/cookbooks/frameworks/llamaindex-multiagent.mdxdocs/cookbooks/integrations/healthcare-google-adk.mdxdocs/cookbooks/integrations/mastra-agent.mdxdocs/cookbooks/integrations/openai-tool-calls.mdxdocs/cookbooks/operations/team-task-agent.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 集成到生产级 AI 应用中的高级使用模式。这些模式超越了基本的添加/搜索操作,展示了多智能体系统、会话管理和智能记忆处理等复杂架构。
多智能体记忆共享
在复杂系统中,多个专用智能体可以共享一个公共记忆层。这实现了协调行为,一个智能体捕获的知识可以立即被其他智能体使用,前提是它们共享相同的实体范围。
共享记忆架构
下图展示了不同智能体(例如,旅行专员和健康顾问)如何使用共享标识符与统一的 MemoryClient 进行交互。
来源: docs/cookbooks/essentials/entity-partitioning-playbook.mdx:54-70,docs/cookbooks/frameworks/llamaindex-multiagent.mdx:177-182
实现:实体分区
为防止"记忆泄露"(例如,旅行智能体看到不应看到的医疗数据),开发者会结合使用 user_id、agent_id 和 app_id。
| 字段 | 用途 | 代码实体标识符 |
|---|---|---|
user_id | 按最终用户隔离数据 | user_id="traveler_cam" |
agent_id | 按特定智能体角色隔离数据 | agent_id="chef_recommender" |
app_id | 按应用或租户隔离数据 | app_id="concierge_app" |
run_id | 按特定会话或线程隔离数据 | run_id="trip-2025-03" |
来源: docs/cookbooks/essentials/entity-partitioning-playbook.mdx:32-38,docs/platform/features/v2-memory-filters.mdx:35-40,docs/platform/features/entity-scoped-memory.mdx:30-35
会话与运行管理
Mem0 中的会话管理通过 run_id 实现。这允许在长期用户档案中实现短期上下文隔离。
模式:会话清理
一种常见的高级模式是在任务完成后删除临时"工作记忆",同时保留长期用户事实。
# 会话清理 - 删除特定工单的临时对话
def close_ticket(ticket_id: str, user_id: str):
client.delete_all(user_id=user_id, run_id=ticket_id)
来源: docs/cookbooks/essentials/entity-partitioning-playbook.mdx:190-191,docs/platform/features/entity-scoped-memory.mdx:156-161
智能记忆入库
高级系统不会存储所有内容。它们使用自定义指令和置信度阈值来控制哪些内容进入记忆存储。
入库控制架构
来源: docs/cookbooks/essentials/controlling-memory-ingestion.mdx:17-28,docs/open-source/python-quickstart.mdx:81-86,docs/platform/features/contextual-add.mdx:1-10
实现:过滤推测性内容
通过更新项目级别的 custom_instructions,可以防止 AI 将推测性陈述转化为"事实"。
instructions = """
仅存储已确认的医疗事实。
忽略:推测性内容(包含'可能'、'也许'、'我认为'等词语的表述)
"""
client.project.update(custom_instructions=instructions)
来源: docs/cookbooks/essentials/controlling-memory-ingestion.mdx:79-94,docs/platform/features/custom-instructions.mdx:1-15
图增强检索
Mem0 支持一种混合方法,将语义向量搜索与基于图的实体链接相结合,以改善关系型知识检索。
实体链接流程
来源: docs/platform/features/advanced-retrieval.mdx:1-20,docs/platform/features/v2-memory-filters.mdx:52-54
实现:带重排序的搜索
为提高高级检索的准确性,rerank=True 参数会在初始混合检索后触发二次评分过程。
matches = client.search(
"有食物过敏提醒吗?",
user_id="traveler-42",
filters={"metadata": {"trip": "japan-2025"}},
)
来源: docs/platform/features/v2-memory-filters.mdx:163-173,docs/open-source/features/reranker-search.mdx:1-10
结构化记忆导出
为满足合规性要求(如 GDPR)或进行迁移,Mem0 支持使用过滤器来限定数据范围,将记忆导出为结构化格式。
导出实现
- 过滤数据:定义范围(例如,特定的
app_id)。 - 触发导出:调用
client.get_memory_export(filters=...)。 - 下载:获取生成的数据集以进行外部处理。
来源: docs/cookbooks/essentials/entity-partitioning-playbook.mdx:194-195,docs/platform/features/memory-export.mdx:1-10
高级参数总结
| 特性 | 实现实体 | 用途 |
|---|---|---|
| 异步支持 | AsyncMemoryClient / AsyncMemory | 高并发环境 |
| 元数据过滤 | filters={"metadata": {"key": "val"}} | 检索中的字段级精度 |
| 自定义指令 | project.update(custom_instructions=...) | 领域特定的记忆分类 |
| 通配符过滤器 | filters={"user_id": "*"} | 跨所有非空实体查询 |
| 工具集成 | zodResponsesFunction | 将记忆接入 OpenAI 函数调用 |
来源: docs/platform/features/async-client.mdx:1-5,docs/platform/features/v2-memory-filters.mdx:61-63,docs/cookbooks/integrations/openai-tool-calls.mdx:113-117