agentic_huge_data_base / wiki
页面 Mem0 · 10.3 领域-专属示例·DeepWiki 中文全文译文

10.3 · 领域-专属示例(Domain-Specific Examples)

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

项目Mem0 章节10.3 状态全文译文 模块界面与交互、模型调用与提供方适配、系统架构、测试、发布与运维
源码线索
  • 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/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/mem0-demo/app/api/chat/route.ts
  • examples/mem0-demo/app/assistant.tsx
  • examples/mem0-demo/app/layout.tsx
  • examples/mem0-demo/components/assistant-ui/thread-list.tsx
  • examples/mem0-demo/components/assistant-ui/thread.tsx
  • examples/mem0-demo/components/mem0/github-button.tsx
  • examples/mem0-demo/next.config.ts
  • examples/mem0-demo/package.json
  • examples/vercel-ai-sdk-chat-app/components.json
  • examples/vercel-ai-sdk-chat-app/src/components/memories.tsx
  • examples/vercel-ai-sdk-chat-app/src/components/ui/avatar.tsx
  • examples/vercel-ai-sdk-chat-app/src/components/ui/badge.tsx
  • examples/vercel-ai-sdk-chat-app/src/components/ui/button.tsx
  • examples/vercel-ai-sdk-chat-app/src/components/ui/card.tsx
  • examples/vercel-ai-sdk-chat-app/src/components/ui/dialog.tsx
  • examples/vercel-ai-sdk-chat-app/src/components/ui/input.tsx
  • examples/vercel-ai-sdk-chat-app/src/components/ui/label.tsx
  • examples/vercel-ai-sdk-chat-app/src/components/ui/scroll-area.tsx
  • examples/vercel-ai-sdk-chat-app/src/components/ui/select.tsx

本文档提供了在不同行业垂直领域和用例中应用 Mem0 的具体实现模式。每个示例都演示了如何构建记忆、配置会话作用域以及针对领域特定需求优化检索。

有关基本记忆操作,请参阅基本用法。有关批量操作和自定义提示等高级技术,请参阅高级模式。有关与特定框架的集成,请参阅智能体框架

AI 健身伴侣

健身应用需要记住用户的目标、过去的锻炼记录以及生理限制(如受伤情况),从而跨会话提供个性化指导。

记忆架构
Mem0 · 记忆架构 · 图 1
Mem0 · 记忆架构 · 图 1

健身伴侣实体映射

实现模式

本示例展示了一个名为"Ray"的健身教练使用 Mem0 跨会话记住用户"在 4 小时内完成马拉松"的目标 docs/cookbooks/essentials/building-ai-companion.mdx:50-171

from mem0 import MemoryClient
from openai import OpenAI

# 初始化客户端
openai_client = OpenAI(api_key="your-openai-key")
mem0_client = MemoryClient(api_key="your-mem0-key")

def fitness_chat(user_input, user_id):
    # 1. 检索相关记忆(例如:"Max 想在 4 小时内完成马拉松")
    memories = mem0_client.search(user_input, filters={"user_id": user_id}, top_k=5)
    context = "\n".join(m["memory"] for m in memories["results"])

    # 2. 使用记忆上下文调用大语言模型
    response = openai_client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": f"你是 Ray,一名跑步教练。记忆:\n{context}"},
            {"role": "user", "content": user_input}
        ]
    ).choices[0].message.content

    # 3. 存储对话以更新记忆层
    mem0_client.add([
        {"role": "user", "content": user_input},
        {"role": "assistant", "content": response}
    ], user_id=user_id)

    return response

来源: docs/cookbooks/essentials/building-ai-companion.mdx:56-84docs/llms.txt:29-51

医疗患者助手

医疗应用需要严格控制记忆入库,以过滤推测性内容,并优先存储经过验证的医疗事实,例如过敏史或确诊诊断。

记忆架构
Mem0 · 记忆架构 · 图 2
Mem0 · 记忆架构 · 图 2

医疗记忆控制流程

实现模式

此模式使用 custom_instructions 来控制记忆层持久化的内容,防止推测性陈述成为"事实" docs/cookbooks/essentials/controlling-memory-ingestion.mdx:75-116

from mem0 import MemoryClient

client = MemoryClient(api_key="your-api-key")

# 定义严格的医疗入库规则
instructions = """
仅存储已确认的医疗事实。
忽略:推测性内容(包含"可能"、"也许"、"我认为"等词语)。
存储:已确诊的诊断、已知过敏史、当前用药情况。
"""

client.project.update(custom_instructions=instructions)

# 由于指令限制,以下内容不会被存储 [docs/cookbooks/essentials/controlling-memory-ingestion.mdx:97-110]
client.add([{"role": "user", "content": "我想我可能对青霉素过敏"}], user_id="patient_123")

# 以下内容会被存储 [docs/cookbooks/essentials/controlling-memory-ingestion.mdx:200-213]
client.add([{"role": "user", "content": "史密斯医生在 3 月 15 日诊断我患有高血压"}], user_id="patient_123")

来源: docs/cookbooks/essentials/controlling-memory-ingestion.mdx:79-110docs/cookbooks/integrations/healthcare-google-adk.mdx:61-98

个性化购物助手

电商助手使用记忆来跟踪用户偏好(颜色、品牌、预算),并将其集成到结构化的工具调用中,以提供推荐 docs/cookbooks/integrations/openai-tool-calls.mdx:7-141

实现模式
import MemoryClient from "mem0ai";
import { OpenAI } from "openai";

const mem0Client = new MemoryClient({ apiKey: process.env.MEM0_API_KEY });
const USER_ID = "sample-user";

async function recommendCars(userInput) {
    // 搜索偏好,例如"喜欢奥迪"、"预算 12 万" [docs/cookbooks/integrations/openai-tool-calls.mdx:195-198]
    const relevantMemories = await mem0Client.search(userInput, { userId: USER_ID });
    const memoryString = relevantMemories.results.map(m => m.memory).join("\n");

    const response = await openAIClient.responses.create({
        model: "gpt-5-mini",
        tools: [{ type: "web_search_preview" }, carRecommendationTool],
        input: `用户偏好:\n${memoryString}\n\n问题:${userInput}`,
    });

    return response.output;
}

来源: docs/cookbooks/integrations/openai-tool-calls.mdx:180-207docs/llms.js:60-81

Vercel AI SDK 聊天集成

对于基于 Web 的聊天机器人,Mem0 与 Vercel AI SDK 集成,提供持久的记忆层,可以向用户高亮显示推断出的信息 examples/mem0-demo/app/api/chat/route.ts:1-112

数据流
Mem0 · 数据流 · 图 3
Mem0 · 数据流 · 图 3

Vercel AI SDK 集成流程

实现模式

使用 @mem0/vercel-ai-provider,在流式传输大语言模型响应之前,检索记忆并将其注入到系统提示中 examples/mem0-demo/app/api/chat/route.ts:70-91

import { addMemories, getMemories } from "@mem0/vercel-ai-provider";
import { streamText } from "ai";

export async function POST(req: Request) {
  const { messages, userId } = await req.json();

  // 使用重排序检索相关记忆
  const memories = await getMemories(messages, {
    user_id: userId,
    rerank: true,
    threshold: 0.1
  });

  const result = streamText({
    model: openai("gpt-4o"),
    messages,
    system: `记忆:${memories.map(m => m.memory).join("\n")}`,
  });

  // 后台任务:从对话中捕获新记忆
  addMemories(messages, { user_id: userId });

  return result.toDataStreamResponse();
}

来源: examples/mem0-demo/app/api/chat/route.ts:70-112examples/mem0-demo/app/assistant.tsx:45-50

多实体分区

在旅行或企业服务中,必须按 user_idagent_idapp_id 对记忆进行分区,以防止不同上下文之间的数据泄露 docs/cookbooks/essentials/entity-partitioning-playbook.mdx:6-75

作用域模式
# 为特定智能体和运行存储旅行偏好
client.add(
    cam_messages,
    user_id="traveler_cam",
    agent_id="travel_planner",
    run_id="tokyo-2025-weekend",
    app_id="concierge_app"
)

# 仅在特定智能体的作用域内检索,以防止泄露
user_scope = {
    "AND": [
        {"user_id": "traveler_cam"},
        {"app_id": "concierge_app"},
        {"agent_id": "travel_planner"}
    ]
}
memories = client.search("有任何饮食限制吗?", filters=user_scope)

来源: docs/cookbooks/essentials/entity-partitioning-playbook.mdx:32-62docs/platform/features/v2-memory-filters.mdx:74-102

领域特定配置表

领域推荐的大语言模型检索策略关键作用域
客户支持gpt-4o-mini混合(语义 + BM25)user_idagent_id
医疗gpt-4o高阈值(0.8 以上)user_idrun_id
研究claude-3-opus图谱 + 向量user_idapp_id
电商gpt-5-mini工具驱动搜索user_id

来源: docs/llms.txt:153-171docs/open-source/python-quickstart.mdx:80-87docs/cookbooks/essentials/controlling-memory-ingestion.mdx:171-184