agentic_huge_data_base / wiki
页面 Mem0 · 3 记忆系统·DeepWiki 中文全文译文

3 · 记忆系统(Memory System)

长期记忆与上下文管理 · 本章是 Mem0 DeepWiki 中文译文的独立章节页,保留原始链接、源码锚点、模块标签和章节层级。

项目Mem0 章节3 状态全文译文 模块检索、召回与索引、测试、发布与运维、界面与交互、模型调用与提供方适配
源码线索
  • docs/core-concepts/memory-operations/add.mdx
  • docs/core-concepts/memory-operations/delete.mdx
  • docs/core-concepts/memory-operations/search.mdx
  • docs/core-concepts/memory-operations/update.mdx
  • docs/core-concepts/memory-types.mdx
  • docs/open-source/configuration.mdx
  • docs/open-source/overview.mdx
  • docs/platform/advanced-memory-operations.mdx
  • docs/platform/features/platform-overview.mdx
  • docs/platform/overview.mdx
模块标签
  • 检索、召回与索引
  • 测试、发布与运维
  • 界面与交互
  • 模型调用与提供方适配
  • 系统架构

中文译文

记忆系统(中文译文)

原始 DeepWiki 页面:https://deepwiki.com/mem0ai/mem0/3-memory-system
翻译时间:2026-05-27T08:45:09.195Z
翻译模型:deepseek-chat
原文字符数:16660
项目:Mem0 (mem0)

---

记忆系统

相关源文件

以下文件用于生成本维基页面:

  • docs/core-concepts/memory-operations/add.mdx
  • docs/core-concepts/memory-operations/delete.mdx
  • docs/core-concepts/memory-operations/search.mdx
  • docs/core-concepts/memory-operations/update.mdx
  • docs/core-concepts/memory-types.mdx
  • docs/open-source/configuration.mdx
  • docs/open-source/overview.mdx
  • docs/platform/advanced-memory-operations.mdx
  • docs/platform/features/platform-overview.mdx
  • docs/platform/overview.mdx
  • mem0/__init__.py
  • mem0/configs/prompts.py
  • mem0/memory/main.py
  • mem0/memory/storage.py
  • mem0/memory/utils.py
  • tests/configs/test_prompts.py
  • tests/memory/test_main.py
  • tests/test_chatty_llm_parsing.py
  • tests/test_main.py
  • tests/test_memory.py
  • tests/test_proxy.py

概述

记忆系统是核心子系统,负责在 Mem0 中存储、检索和管理记忆数据。它协调用户消息、基于大语言模型(LLM)的事实提取、冲突解决以及多后端存储(包括向量存储、图存储和历史数据库)之间的数据流。

该系统通过智能管线处理对话消息,具体流程如下:

  1. 使用大语言模型(LLM)提取关键事实 mem0/memory/main.py:423-456
  2. 解决与现有记忆的冲突 mem0/memory/main.py:496-590
  3. 并发地将数据存储到向量和图后端 mem0/memory/main.py:369-377
  4. 通过 SQLiteManager 维护所有变更的审计追踪 mem0/memory/storage.py:11-19

关键组件:

  • Memory 类:开源实现,提供直接存储访问 mem0/memory/main.py:172
  • MemoryClient 类:用于托管部署的平台 API 客户端。
  • 向量存储:支持语义相似性搜索 mem0/utils/factory.py:101-131
  • 图存储:捕获实体关系 mem0/memory/graph_memory.py:29
  • 历史数据库:提供审计追踪和会话消息持久化 mem0/memory/storage.py:128-148

子页面:

来源: mem0/memory/main.py:172-234mem0/memory/storage.py:11-19docs/core-concepts/memory-operations/add.mdx:8-56

核心架构

记忆系统主要通过 Memory mem0/memory/main.py:172(用于开源部署)和 MemoryClient(用于平台部署)实现。两者提供相同的核心操作,但在存储访问方式上有所不同。

图表:记忆系统组件依赖关系
graph TB
    Memory["Memory<br/>(mem0/memory/main.py:172)"]
    MemoryConfig["MemoryConfig<br/>(mem0/configs/base.py)"]

    VectorStoreFactory["VectorStoreFactory<br/>(mem0/utils/factory.py)"]
    GraphStoreFactory["GraphStoreFactory<br/>(mem0/utils/factory.py)"]
    LlmFactory["LlmFactory<br/>(mem0/utils/factory.py)"]
    EmbedderFactory["EmbedderFactory<br/>(mem0/utils/factory.py)"]
    RerankerFactory["RerankerFactory<br/>(mem0/utils/factory.py)"]

    vector_store["self.vector_store<br/>(VectorStoreBase)"]
    graph["self.graph<br/>(MemoryGraph)"]
    db["self.db<br/>(SQLiteManager)"]
    llm["self.llm<br/>(BaseLlm)"]
    embedding_model["self.embedding_model<br/>(BaseEmbedder)"]
    reranker["self.reranker<br/>(BaseReranker)"]

    MemoryConfig --> Memory
    Memory --> VectorStoreFactory
    Memory --> GraphStoreFactory
    Memory --> LlmFactory
    Memory --> EmbedderFactory
    Memory --> RerankerFactory

    VectorStoreFactory --> vector_store
    GraphStoreFactory --> graph
    LlmFactory --> llm
    EmbedderFactory --> embedding_model
    RerankerFactory --> reranker

    Memory --> vector_store
    Memory --> graph
    Memory --> db
    Memory --> llm
    Memory --> embedding_model
    Memory --> reranker

来源: mem0/memory/main.py:172-234mem0/utils/factory.py:10-140

组件职责
组件实例属性主要职责初始化方式
向量存储self.vector_store通过嵌入向量进行语义相似性搜索VectorStoreFactory.create() mem0/memory/main.py:183-185
图存储self.graph实体关系查询GraphStoreFactory.create() mem0/memory/main.py:201-204
历史数据库self.db审计追踪与消息存储SQLiteManager() mem0/memory/main.py:187
大语言模型(LLM)self.llm事实提取与冲突解决LlmFactory.create() mem0/memory/main.py:186
嵌入器self.embedding_model为存储和搜索生成向量EmbedderFactory.create() mem0/memory/main.py:178-182
重排序器self.reranker搜索结果优化(可选)RerankerFactory.create() mem0/memory/main.py:191-197

来源: mem0/memory/main.py:172-234mem0/memory/storage.py:11-19

记忆生命周期

记忆系统通过一个多阶段管线处理数据,该管线涉及基于大语言模型(LLM)的智能处理、冲突解决以及双存储写入。

图表:添加操作生命周期
sequenceDiagram
    participant Client
    participant Memory_add["Memory.add()<br/>(main.py:281)"]
    participant LLM["self.llm"]
    participant Embedder["self.embedding_model"]
    participant VectorStore["self.vector_store"]
    participant GraphStore["self.graph"]
    participant History["self.db"]

    Client->>Memory_add: "add(messages, user_id, ...)"

    Note over Memory_add,LLM: 阶段 1:事实提取
    Memory_add->>LLM: "从消息中提取事实"
    LLM-->>Memory_add: "{'facts': [...]}"

    Note over Memory_add,VectorStore: 阶段 2:冲突检测
    loop "对每个事实"
        Memory_add->>Embedder: "embed(fact)"
        Embedder-->>Memory_add: "嵌入向量"
        Memory_add->>VectorStore: "搜索相似记忆"
        VectorStore-->>Memory_add: "现有记忆"
    end

    Note over Memory_add,LLM: 阶段 3:冲突解决
    Memory_add->>LLM: "确定 ADD/UPDATE/DELETE/NONE"
    LLM-->>Memory_add: "{'memory': [{'event': ..., 'text': ...}]}"

    Note over Memory_add,History: 阶段 4:并发存储
    par "双存储"
        Memory_add->>VectorStore: "insert/update/delete"
        Memory_add->>GraphStore: "添加实体/关系"
    end
    Memory_add->>History: "add_history(event, ...)"

    Memory_add-->>Client: "{'results': [...]}"

来源: mem0/memory/main.py:281-598mem0/memory/main.py:599-608docs/core-concepts/memory-operations/add.mdx:39-49

图表:搜索操作生命周期
sequenceDiagram
    participant Client
    participant Memory_search["Memory.search()<br/>(main.py:758)"]
    participant Embedder["self.embedding_model"]
    participant VectorStore["self.vector_store"]
    participant GraphStore["self.graph"]
    participant Reranker["self.reranker"]

    Client->>Memory_search: "search(query, user_id, filters, ...)"

    Note over Memory_search,Embedder: 查询嵌入
    Memory_search->>Embedder: "embed(query)"
    Embedder-->>Memory_search: "查询向量"

    Note over Memory_search,GraphStore: 并发检索
    par "向量 + 图搜索"
        Memory_search->>VectorStore: "search(vectors, filters, limit)"
        VectorStore-->>Memory_search: "vector_memories"
        Memory_search->>GraphStore: "search(query, filters, limit)"
        GraphStore-->>Memory_search: "graph_entities"
    end

    Note over Memory_search,Reranker: 可选优化
    opt "rerank=True 且已配置重排序器"
        Memory_search->>Reranker: "rerank(query, memories, limit)"
        Reranker-->>Memory_search: "reranked_memories"
    end

    Memory_search-->>Client: "{'results': [...]}"

来源: mem0/memory/main.py:758-857mem0/memory/main.py:832-851docs/core-concepts/memory-operations/search.mdx:32-45

双存储架构

记忆系统使用两个并发运行的主要存储后端,外加一个用于变更追踪和消息历史的审计数据库。

存储后端
后端实例属性数据模型操作
向量存储self.vector_store嵌入向量 + 元数据载荷search()get()list()insert()update()delete()
图存储self.graph(可选)实体(节点)+ 关系(边)add()search()get_all()delete_all() mem0/memory/graph_memory.py:29-700
历史数据库self.dbSQLite 审计日志与消息add_history()get_history()save_messages() mem0/memory/storage.py:150-219
图表:并发存储执行
graph LR
    add_operation["Memory.add()"]
    ThreadPoolExecutor["ThreadPoolExecutor<br/>(main.py:369)"]

    vector_write["_add_to_vector_store()<br/>(main.py:386)"]
    graph_write["_add_to_graph()<br/>(main.py:599)"]

    vector_store["self.vector_store"]
    graph_store["self.graph"]
    history_db["self.db"]

    add_operation --> ThreadPoolExecutor
    ThreadPoolExecutor --> vector_write
    ThreadPoolExecutor --> graph_write

    vector_write --> vector_store
    vector_write --> history_db
    graph_write --> graph_store

来源: mem0/memory/main.py:369-377mem0/memory/storage.py:150-219mem0/memory/graph_memory.py:29-194

会话作用域

记忆系统要求至少提供一个会话标识符(user_idagent_idrun_id)来限定所有操作的作用域。这确保了记忆能够在适当的上下文中被组织和检索。

会话标识符要求

所有记忆操作至少需要以下之一:

  • user_id:限定到特定用户。
  • agent_id:限定到特定 AI 代理。
  • run_id:限定到对话或工作流会话。

_build_filters_and_metadata() 函数 mem0/memory/main.py:87-165 会校验这些要求并构建:

  1. base_metadata_template:在存储期间附加到新记忆的元数据。
  2. effective_query_filters:在搜索或列出记忆时应用的过滤器。
图表:过滤器构建流程
graph LR
    operation["Memory 操作<br/>(add/search/get_all/delete_all)"]
    build_filters["_build_filters_and_metadata()<br/>(main.py:87)"]

    session_ids["user_id, agent_id, run_id"]
    metadata["输入元数据"]
    filters["输入过滤器"]

    base_metadata["base_metadata_template<br/>(用于存储)"]
    effective_filters["effective_query_filters<br/>(用于检索)"]

    operation --> build_filters
    session_ids --> build_filters
    metadata --> build_filters
    filters --> build_filters

    build_filters --> base_metadata
    build_filters --> effective_filters

    base_metadata --> vector_write["向量/图写入"]
    effective_filters --> vector_search["向量/图搜索"]

有关包含逻辑运算符(AND/OR/NOT)和比较运算符的高级过滤功能,请参阅会话作用域与过滤器

来源: mem0/memory/main.py:87-165mem0/memory/main.py:100-110

智能记忆处理

默认情况下,记忆系统使用大语言模型(LLM)进行事实提取和冲突解决,而不是存储原始消息。

两阶段大语言模型(LLM)处理

阶段 1:事实提取 mem0/memory/main.py:423-456

  • 将对话消息转换为结构化事实。
  • 使用专用提示词,如 USER_MEMORY_EXTRACTION_PROMPTAGENT_MEMORY_EXTRACTION_PROMPT mem0/memory/utils.py:15-29
  • 支持通过 self.custom_instructions mem0/memory/main.py:186 提供自定义事实提取提示词。

阶段 2:冲突解决 mem0/memory/main.py:496-590

  • 将新事实与通过向量搜索检索到的现有记忆进行比较。
  • 大语言模型(LLM)确定操作:ADDUPDATEDELETENONE
  • PROCEDURAL_MEMORY_SYSTEM_PROMPT mem0/configs/prompts.py:20 引导。

有关用于确定记忆操作的逻辑详情,请参阅智能记忆处理

来源: mem0/memory/main.py:423-456mem0/memory/main.py:496-590mem0/memory/utils.py:15-29

审计追踪

SQLiteManager mem0/memory/storage.py:11 维护所有记忆修改的完整审计日志,并持久化对话历史。

历史数据库模式

历史表追踪所有记忆生命周期事件:

列名类型内容
idTEXT唯一历史记录 ID
memory_idTEXT受影响记忆的 ID
old_memoryTEXT先前内容(ADD 操作为 NULL)
new_memoryTEXT新内容(DELETE 操作为 NULL)
eventTEXTADD、UPDATE 或 DELETE
actor_idTEXT进行更改的实体
roleTEXTuser 或 assistant
访问历史
# 获取某个记忆的完整历史
history_records = memory.history(memory_id="mem_123")

每个记忆操作(添加/更新/删除)都会调用 self.db.add_history() mem0/memory/storage.py:150-191 来记录更改。

来源: mem0/memory/storage.py:102-149mem0/memory/main.py:1091-1123

部署选项

记忆系统提供两种部署模式:开源(本地 SDK)和平台(托管服务)。

部署对比
特性开源 (Memory)平台 (MemoryClient)
入口点Memory(config) mem0/memory/main.py:172MemoryClient(api_key="...")
存储用户管理的向量/图数据库完全托管的基础设施
配置通过 MemoryConfig mem0/configs/base.py:15 进行精细控制通过仪表盘进行项目级设置
操作add、search、update、delete、get_all、history所有操作 + batch_update、batch_delete
异步支持AsyncMemorymem0/memory/main.py:1411AsyncMemoryClient

有关每种部署模式的详细用法,请参阅:

来源: mem0/memory/main.py:172-234mem0/memory/main.py:1411docs/platform/overview.mdx:18-26

性能与高级特性

并发执行

记忆系统使用 ThreadPoolExecutor mem0/memory/main.py:369-377 并行执行向量和图操作:

# 在 add() 期间并发存储
with concurrent.futures.ThreadPoolExecutor() as executor:
    future1 = executor.submit(self._add_to_vector_store, ...)
    future2 = executor.submit(self._add_to_graph, ...)
    concurrent.futures.wait([future1, future2])
原始消息存储

设置 infer=False 可以绕过基于大语言模型(LLM)的事实提取,直接按原样存储消息 mem0/memory/main.py:387-421

# 存储原始对话数据,不经过智能层处理
memory.add(messages, user_id="alice", infer=False)

此模式会跳过冲突解决,将每条消息作为单独的条目存储在向量存储中。

来源: mem0/memory/main.py:369-377mem0/memory/main.py:387-421docs/core-concepts/memory-operations/add.mdx:117-120