agentic_huge_data_base / wiki
页面 Mem0 · 3.3 记忆操作·DeepWiki 中文全文译文

3.3 · 记忆操作(Memory Operations)

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

项目Mem0 章节3.3 状态全文译文 模块测试、发布与运维、检索、召回与索引、记忆与上下文、界面与交互
源码线索
  • docs/api-reference/memory/add-memories.mdx
  • docs/api-reference/memory/delete-memories.mdx
  • docs/api-reference/memory/delete-memory.mdx
  • docs/api-reference/memory/get-memories.mdx
  • docs/api-reference/memory/get-memory.mdx
  • docs/api-reference/memory/history-memory.mdx
  • docs/api-reference/memory/search-memories.mdx
  • docs/api-reference/memory/update-memory.mdx
  • docs/core-concepts/memory-operations/add.mdx
  • docs/core-concepts/memory-operations/delete.mdx
模块标签
  • 测试、发布与运维
  • 检索、召回与索引
  • 记忆与上下文
  • 界面与交互
  • 配置治理

章节正文

记忆操作

记忆操作

相关源文件

本章引用的主要源码文件:

  • docs/api-reference/memory/add-memories.mdx
  • docs/api-reference/memory/delete-memories.mdx
  • docs/api-reference/memory/delete-memory.mdx
  • docs/api-reference/memory/get-memories.mdx
  • docs/api-reference/memory/get-memory.mdx
  • docs/api-reference/memory/history-memory.mdx
  • docs/api-reference/memory/search-memories.mdx
  • docs/api-reference/memory/update-memory.mdx
  • 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 记忆管理系统基础的核心操作(addsearchupdatedeletegetget_allhistory)。内容涵盖 V3 增量式管线的实现细节、语义检索机制以及每个操作返回的数据结构。

概述

Mem0 提供两个主要的记忆操作类:

  • Memory(开源版):自托管记忆管理,可完全控制提供者。详见 mem0/memory/main.py:172-1242
  • MemoryClient(平台版):托管 Mem0 平台的托管 API 客户端。

这两个类实现了统一的 API,但平台版(V3)为了性能和简洁性,强调采用"仅增量"的提取管线 docs/api-reference/memory/add-memories.mdx:7-15

核心操作

添加操作

add() 方法用于存储来自对话消息的新记忆。在开源版中,它支持两种模式:智能推理(默认)或原始存储。

添加操作流程(开源版)
Mem0 · 添加操作流程(开源版) · 图 1
Mem0 · 添加操作流程(开源版) · 图 1

来源: mem0/memory/main.py:281-384mem0/memory/main.py:386-597

推理模式与原始模式

infer=True 时,系统会使用 USER_MEMORY_EXTRACTION_PROMPTAGENT_MEMORY_EXTRACTION_PROMPT 进行提取 mem0/configs/prompts.py:63-114。然后,它会通过将新事实与从 VectorStore 检索到的现有记忆进行比较来解决冲突 mem0/memory/main.py:465-475

infer=False 时,消息会被原样存储。每条消息都会成为向量存储中的一个独立条目,并附带相关的元数据 mem0/memory/main.py:392-421

搜索操作

search() 方法使用语义相似度检索相关记忆。它可以选择性地使用混合方法,结合向量搜索与 BM25 关键词匹配及重排序。

搜索实现细节

如果同时启用了向量搜索和关键词搜索,search 函数会计算一个综合得分。它使用 score_and_rank 来合并结果 mem0/memory/main.py:825-835

Mem0 · 搜索实现细节 · 图 2
Mem0 · 搜索实现细节 · 图 2

来源: mem0/memory/main.py:758-867mem0/utils/scoring.py:43-48

参数
参数位置描述
querymem0/memory/main.py:759用于搜索的自然语言字符串
filtersmem0/memory/main.py:765用于元数据过滤的字典(user_id、agent_id 等)
thresholdmem0/memory/main.py:766最低相似度得分(0.0 到 1.0)
limitmem0/memory/main.py:764返回结果的最大数量
更新和删除操作
更新

update() 方法用于修改现有的记忆条目。它会为新文本重新生成嵌入向量,并更新 VectorStore 中的记录 mem0/memory/main.py:869-901

  • 实现方式:它会调用 _update_memory(),该方法会计算新数据的 MD5 哈希值,以防止冗余更新 mem0/memory/main.py:1004-1041
删除

Mem0 提供三种删除数据的方式:

  1. delete(memory_id):删除特定记录 mem0/memory/main.py:903-931。在开源版中,此操作现在会先获取记忆内容,以便在删除前将其记录到历史中 tests/test_main.py:164-174
  2. delete_all(filters):删除所有符合筛选条件的记忆(例如,特定 user_id 的所有记忆)mem0/memory/main.py:933-1002
  3. reset():完全清空向量存储和历史数据库 mem0/memory/main.py:1145-1173
历史操作

history() 方法用于追踪记忆的生命周期。它会查询 SQLiteManager,返回与特定 memory_id 关联的事件(ADDUPDATEDELETE)的时间顺序列表。

来源: mem0/memory/main.py:1118-1143mem0/memory/storage.py:221-255

历史模式

历史记录存储在由 SQLiteManager 管理的本地 SQLite 表中 mem0/memory/storage.py:11

  • memory_id:记忆记录的 ID mem0/memory/storage.py:68-81
  • old_memory:更新前的内容。
  • new_memory:更新或添加后的内容。
  • event:操作类型(ADD/UPDATE/DELETE)。
获取和获取全部操作
  • get(memory_id):通过 ID 检索单条记忆。它会将原始向量存储的载荷映射为结构化的 MemoryItem mem0/memory/main.py:610-651
  • get_all(filters):根据筛选条件列出记忆。它支持通过 limitoffset 进行分页 mem0/memory/main.py:653-709。在平台版 V3 中,像 user_id 这样的实体 ID 必须filters 对象内传递 docs/api-reference/memory/get-memories.mdx:7-10

代码实体摘要

主要类
实体文件角色
Memorymem0/memory/main.py:172开源版记忆操作的主要入口点。
AsyncMemorymem0/memory/main.py:1244Memory 类的异步实现。
SQLiteManagermem0/memory/storage.py:11管理本地历史记录和消息持久化。
MemoryItemmem0/configs/base.py:15定义记忆记录结构的 Pydantic 模型。
关键工具函数
函数文件角色
_build_filters_and_metadatamem0/memory/main.py:87将会话 ID 规范化为存储兼容的筛选条件。
parse_messagesmem0/memory/utils.py:61将消息字典列表转换为扁平字符串,供大语言模型处理。
extract_jsonmem0/memory/utils.py:125从包含 Markdown 的大语言模型响应中稳健地提取 JSON。
normalize_factsmem0/memory/utils.py:84将大语言模型提取的事实从对象规范化为纯字符串。

来源: mem0/memory/main.pymem0/memory/storage.pymem0/memory/utils.py