agentic_huge_data_base / wiki
页面 Mem0 · 2.3 配置系统·DeepWiki 中文全文译文

2.3 · 配置系统(Configuration System)

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

项目Mem0 章节2.3 状态全文译文 模块模型调用与提供方适配、配置治理、测试、发布与运维、检索、召回与索引
源码线索
  • docs/components/vectordbs/dbs/vectorize.mdx
  • docs/open-source/multimodal-support.mdx
  • mem0-ts/pnpm-lock.yaml
  • mem0-ts/src/oss/package.json
  • mem0-ts/src/oss/src/config/defaults.ts
  • mem0-ts/src/oss/src/config/manager.ts
  • mem0-ts/src/oss/src/index.ts
  • mem0-ts/src/oss/src/llms/anthropic.ts
  • mem0-ts/src/oss/src/llms/deepseek.ts
  • mem0-ts/src/oss/src/llms/groq.ts
模块标签
  • 模型调用与提供方适配
  • 配置治理
  • 测试、发布与运维
  • 检索、召回与索引
  • 记忆与上下文

章节正文

配置系统

配置系统

相关源文件

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

  • docs/components/vectordbs/dbs/vectorize.mdx
  • docs/open-source/multimodal-support.mdx
  • mem0-ts/pnpm-lock.yaml
  • mem0-ts/src/oss/package.json
  • mem0-ts/src/oss/src/config/defaults.ts
  • mem0-ts/src/oss/src/config/manager.ts
  • mem0-ts/src/oss/src/index.ts
  • mem0-ts/src/oss/src/llms/anthropic.ts
  • mem0-ts/src/oss/src/llms/deepseek.ts
  • mem0-ts/src/oss/src/llms/groq.ts
  • mem0-ts/src/oss/src/llms/openai.ts
  • mem0-ts/src/oss/src/llms/openai_structured.ts
  • mem0-ts/src/oss/src/storage/SQLiteManager.ts
  • mem0-ts/src/oss/src/types/index.ts
  • mem0-ts/src/oss/src/utils/factory.ts
  • mem0-ts/src/oss/tests/deepseek.test.ts
  • mem0-ts/src/oss/tests/factory.unit.test.ts
  • mem0-ts/src/oss/tests/openai-llm.test.ts
  • mem0-ts/src/oss/tests/openai-structured-llm.test.ts
  • mem0/configs/base.py
  • mem0/configs/vector_stores/azure_ai_search.py
  • mem0/configs/vector_stores/vertex_ai_vector_search.py
  • mem0/configs/vector_stores/weaviate.py
  • mem0/proxy/main.py
  • mem0/vector_stores/supabase.py
  • mem0/vector_stores/vertex_ai_vector_search.py
  • mem0/vector_stores/weaviate.py
  • tests/vector_stores/test_vertex_ai_vector_search.py

mem0 中的配置系统负责管理大语言模型(LLM)、嵌入向量生成器、向量存储、图存储和重排序器等组件设置的初始化与校验。该系统采用基于提供商的架构,用户需指定使用的提供商(例如 "openai"、"anthropic")及其相关参数,系统会校验并实例化对应的实现。

配置结构

配置系统采用分层结构,顶层为 MemoryConfig,其中包含每个组件类型的嵌套配置。Python 和 TypeScript 实现遵循相似的模式,但各自采用语言特定的约定。

Python 配置模式
Mem0 · Python 配置模式 · 图 1
Mem0 · Python 配置模式 · 图 1

Python 配置类 Python 实现使用 Pydantic 的 BaseModel 进行模式定义和校验。

  • MemoryConfig:根配置类,包含所有组件设置 mem0/configs/base.py:29-57
  • LlmConfig:处理大语言模型(LLM)的提供商字符串和配置字典 mem0/llms/configs.py:6-35
  • EmbedderConfig:处理嵌入向量生成器的提供商字符串和配置字典 mem0/embeddings/configs.py:6-32
  • VectorStoreConfig:处理提供商信息以及提供商特定配置类的动态加载 mem0/vector_stores/configs.py:10-67

来源:mem0/configs/base.py:29-57mem0/llms/configs.py:6-35mem0/embeddings/configs.py:6-32mem0/vector_stores/configs.py:10-67

TypeScript 配置模式
Mem0 · TypeScript 配置模式 · 图 2
Mem0 · TypeScript 配置模式 · 图 2

TypeScript 配置类型 TypeScript 实现使用 Zod 进行运行时校验,并使用接口确保类型安全。

  • MemoryConfigSchema:用于校验合并后配置的 Zod 对象 mem0-ts/src/oss/src/types/index.ts:101-145
  • MemoryConfig:定义内存配置结构的接口 mem0-ts/src/oss/src/types/index.ts:54-72
  • LLMConfig:大语言模型(LLM)特定参数(如 apiKeymodelbaseURL)的接口 mem0-ts/src/oss/src/types/index.ts:43-52
  • VectorStoreConfig:向量存储参数的接口,允许传递提供商特定选项的字段 mem0-ts/src/oss/src/types/index.ts:24-31

来源:mem0-ts/src/oss/src/types/index.ts:15-145

配置优先级规则

配置值采用多层优先级系统进行解析。在配置对象中显式指定的值会覆盖默认值和环境变量。

优先级层级
优先级来源实现细节
1(最高)显式配置字典/对象传递给构造函数或 from_config
2(中等)环境变量在提供商的 __init__ConfigManager 中解析
3(最低)默认值定义在 BaseLlmConfigDEFAULT_MEMORY_CONFIG

Python 优先级实现 在 Python 中,环境变量解析通常在提供商的 __init__ 方法中进行。例如,在 OpenAIStructuredLLM 中,API 密钥的解析会先检查配置,再检查环境变量 mem0/llms/openai_structured.py:17-18

TypeScript 优先级实现 ConfigManager.mergeConfig 方法会显式地将用户提供的部分配置与 DEFAULT_MEMORY_CONFIG 合并 mem0-ts/src/oss/src/config/manager.ts:5-163。该方法还会处理键名规范化(例如,将 lmstudio_base_urlurl 映射为 baseURL),以保持与 Python SDK 配置的兼容性 mem0-ts/src/oss/src/config/manager.ts:24-29

来源:mem0/llms/openai_structured.py:17-18mem0-ts/src/oss/src/config/manager.ts:5-163mem0-ts/src/oss/src/config/defaults.ts:3-35

环境变量解析

系统识别多种环境变量,以支持零配置或便于管理密钥的设置。

组件环境变量文件引用
遥测MEM0_TELEMETRYmem0/memory/telemetry.py:14
遥测MEM0_TELEMETRY_SAMPLE_RATEmem0/memory/telemetry.py:47
存储目录MEM0_DIRmem0/configs/base.py:13
OpenAI 大语言模型(LLM)OPENAI_API_KEYmem0/llms/openai_structured.py:17
OpenAI 基础地址OPENAI_API_BASEmem0/llms/openai_structured.py:18

来源:mem0/memory/telemetry.py:14-47mem0/configs/base.py:11-13mem0/llms/openai_structured.py:17-18

配置校验与工厂

TypeScript 配置合并

TypeScript SDK 中的 ConfigManager 对子组件执行复杂的合并逻辑:

  • 向量存储维度:优先使用用户提供的维度,其次回退到嵌入向量生成器配置中的维度,或者留空以便在初始化时自动检测 mem0-ts/src/oss/src/config/manager.ts:66-69
  • 历史存储:将顶层的 historyDbPathhistoryStore.config 合并,同时确保 SQLite 特定路径被正确映射 mem0-ts/src/oss/src/config/manager.ts:136-155
  • 校验:最后一步调用 MemoryConfigSchema.parse(mergedConfig) mem0-ts/src/oss/src/config/manager.ts:161
组件工厂

校验通过后,配置会被传递给工厂,由工厂实例化具体的提供商类。

Mem0 · 组件工厂 · 图 3
Mem0 · 组件工厂 · 图 3

来源:mem0-ts/src/oss/src/config/manager.ts:5-163mem0-ts/src/oss/src/utils/factory.ts:40-136

基础配置类

BaseLlmConfig(Python)

BaseLlmConfig 类是所有大语言模型(LLM)提供商的基础,包含整个生态系统中通用的参数 mem0/configs/llms/base.py:7-28

参数类型默认值用途
modelOptional[Union[str, Dict]]None模型标识符 mem0/configs/llms/base.py:18
temperaturefloat0.1输出随机性 mem0/configs/llms/base.py:19
max_tokensint2000生成限制 mem0/configs/llms/base.py:21
top_pfloat0.1核采样 mem0/configs/llms/base.py:22
reasoning_effortOptional[str]None用于 o1/o3 等模型 mem0/configs/llms/base.py:26
http_client_proxiesOptional[Union[Dict, str]]None代理设置 mem0/configs/llms/base.py:27
向量存储配置(提供商特定)

提供商通常对其特定配置有严格的校验。例如,AzureAISearchConfig 使用 @model_validator 来阻止不支持的遗留字段(如 use_compression),并确保 compression_type 是有效的 mem0/configs/vector_stores/azure_ai_search.py:25-55

来源:mem0/configs/llms/base.py:7-67mem0/configs/vector_stores/azure_ai_search.py:6-57

遥测配置

遥测是一个全局配置方面,通过环境变量和单例模式进行管理。

  • 控制:默认通过 MEM0_TELEMETRY 启用 mem0/memory/telemetry.py:14
  • 采样:热路径事件以 MEM0_TELEMETRY_SAMPLE_RATE(默认 0.1)定义的速率进行采样,而生命周期事件(如 mem0.init)始终触发 mem0/memory/telemetry.py:31-51
  • 用户标识:系统会生成或检索一个唯一的 user_id,存储在本地配置或向量存储中,用于匿名化遥测数据 mem0/memory/setup.py:35-67

来源:mem0/memory/telemetry.py:14-70mem0/memory/setup.py:12-67