高级特性
高级功能
相关源文件
本章引用的主要源码文件:
mem0-ts/src/client/config.tsmem0-ts/src/client/telemetry.types.tsmem0-ts/src/client/tests/telemetry-aliasing.test.tsmem0/__init__.pymem0/configs/prompts.pymem0/memory/main.pymem0/memory/setup.pymem0/memory/storage.pymem0/memory/telemetry.pymem0/memory/utils.pytests/configs/test_prompts.pytests/memory/test_main.pytests/test_chatty_llm_parsing.pytests/test_main.pytests/test_memory.pytests/test_proxy.pytests/test_telemetry_aliasing.py
本文档介绍了 Mem0 的高级功能和优化技术。这些功能支持领域特定的定制、性能调优、复杂过滤模式以及面向生产部署的批量操作。
有关基本记忆操作,请参阅记忆操作。有关提供方配置,请参阅配置系统。有关部署模型,请参阅部署模型。
自定义提示词
Memory 类使用基于大语言模型(LLM)的提示词进行事实提取和冲突解决。自定义提示词会覆盖默认行为,以提高特定领域的准确性。
通过 MemoryConfig 配置
自定义提示词在初始化时通过 MemoryConfig 的 custom_instructions 字段设置。
from mem0 import Memory
from mem0.configs.base import MemoryConfig
config = MemoryConfig(
custom_instructions="从患者对话中提取医学事实...",
)
m = Memory(config)
来源:mem0/configs/base.py:29-58, tests/test_main.py:48-52
事实提取提示词选择
Memory 中的 _add_to_vector_store 方法会根据配置和消息上下文选择提示词。在 v1.1 管线中,事实提取和记忆操作(添加/更新/删除)被合并为一次大语言模型(LLM)调用,使用 ADDITIVE_EXTRACTION_PROMPT。
提示词选择逻辑
来源:mem0/memory/main.py:425-440, mem0/memory/utils.py:15-29, mem0/configs/prompts.py:62-114
单次请求自定义指令
add() 方法接受一个 prompt 参数,用于单次调用覆盖。在 _add_to_vector_store 执行期间,该参数会优先于全局配置中定义的 custom_instructions。
来源:mem0/memory/main.py:254-261, tests/memory/test_main.py:93-100
详情请参阅自定义提示词。
遥测与分析
Mem0 通过 PostHog 集成捕获匿名使用遥测数据,以改进库的功能。
遥测事件捕获
capture_event 函数(位于 mem0.memory.telemetry)记录操作。它使用由 MEM0_TELEMETRY_SAMPLE_RATE(默认值为 0.1)定义的采样机制来处理高频事件,而 mem0.init 等生命周期事件则始终触发。
遥测流程
来源:mem0/memory/telemetry.py:29-69, mem0/memory/main.py:233, mem0/memory/telemetry.py:186-195
隐私与控制
- 标识符哈希处理:
process_telemetry_filters函数确保用户提供的 ID 不会以明文形式发送。 - 禁用:在环境变量中设置
MEM0_TELEMETRY=False可以完全禁用AnonymousTelemetry客户端。
来源:mem0/memory/utils.py:200-215, mem0/memory/telemetry.py:14-22
详情请参阅遥测与分析。
性能优化
Mem0 实现了多种模式,以确保记忆操作的低延迟和高吞吐量。
并发处理
Memory.add() 和 Memory.search() 方法利用 ThreadPoolExecutor(或在 AsyncMemory 中使用 asyncio)来并行执行向量存储搜索和图存储检索,从而显著减少混合查询的总响应时间。
来源:mem0/memory/main.py:369-383, mem0/memory/main.py:693-709
存储管理
- SQLiteManager:使用线程安全锁定和结构化迁移来管理本地历史记录和消息持久化,涉及
history和messages表。 - 重排序:
RerankerFactory允许集成 Cohere 等提供方来优化向量搜索结果,确保高精度而无需过度获取数据。
来源:mem0/memory/storage.py:11-18, mem0/utils/factory.py:39, mem0/memory/storage.py:128-148
详情请参阅性能优化。
高级过滤
Mem0 支持通过元数据过滤对记忆检索进行细粒度控制。
运算符与逻辑
系统通过底层的 VectorStoreBase 实现来处理过滤器。支持的比较运算符包括:
| 运算符 | 语法示例 | 作用 |
|---|---|---|
eq | {"status": {"eq": "active"}} | 相等 |
ne | {"type": {"ne": "temporary"}} | 不等 |
in | {"tag": {"in": ["work", "home"]}} | 集合包含 |
gt / lt | {"priority": {"gt": 5}} | 数值比较 |
来源:mem0/memory/main.py:780-795, mem0/memory/main.py:810-815
详情请参阅高级过滤。
批量操作
对于大规模数据管理,MemoryClient(平台版)和 SQLiteManager(开源版)提供了批量处理能力。
批量修改
- 平台版:
MemoryClient提供batch_update()和batch_delete()方法,可以在单个网络请求中修改多个记忆 UUID。 - 开源版存储:
SQLiteManager包含batch_add_history()方法,可以高效地持久化多个生命周期事件。
来源:mem0/client/main.py:510-534, mem0/client/main.py:536-560, mem0/memory/storage.py:193-195
详情请参阅批量操作。
总结
Mem0 的高级功能为生产级 AI 代理提供了所需的控制能力:
- 定制化:使用
custom_instructions进行领域特定的事实提取。 - 分析:通过
MEM0_TELEMETRY监控使用情况,同时通过哈希处理保护隐私。 - 速度:利用并发执行和
RerankerFactory实现精确检索。 - 控制:使用复杂的元数据过滤器和批量操作进行数据生命周期管理。