agentic_huge_data_base / wiki
页面 Mem0 · 2.1 工厂模式与组件系统·DeepWiki 中文全文译文

2.1 · 工厂模式与组件系统(Factory Pattern and Component System)

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

项目Mem0 章节2.1 状态全文译文 模块模型调用与提供方适配、检索、召回与索引、系统架构、界面与交互
源码线索
  • Makefile
  • docs/components/vectordbs/config.mdx
  • docs/components/vectordbs/dbs/chroma.mdx
  • docs/components/vectordbs/dbs/qdrant.mdx
  • docs/components/vectordbs/dbs/vectorize.mdx
  • docs/components/vectordbs/overview.mdx
  • mem0-ts/pnpm-lock.yaml
  • mem0-ts/src/oss/package.json
  • mem0-ts/src/oss/src/index.ts
  • mem0-ts/src/oss/src/llms/deepseek.ts
模块标签
  • 模型调用与提供方适配
  • 检索、召回与索引
  • 系统架构
  • 界面与交互
  • 配置治理

章节正文

工厂模式与组件系统

工厂模式与组件系统

相关源文件

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

  • Makefile
  • docs/components/vectordbs/config.mdx
  • docs/components/vectordbs/dbs/chroma.mdx
  • docs/components/vectordbs/dbs/qdrant.mdx
  • docs/components/vectordbs/dbs/vectorize.mdx
  • docs/components/vectordbs/overview.mdx
  • mem0-ts/pnpm-lock.yaml
  • mem0-ts/src/oss/package.json
  • mem0-ts/src/oss/src/index.ts
  • mem0-ts/src/oss/src/llms/deepseek.ts
  • mem0-ts/src/oss/src/storage/SQLiteManager.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/utils/factory.py
  • mem0/vector_stores/configs.py
  • poetry.lock
  • pyproject.toml

目的与范围

本文档描述了 Mem0 的工厂模式实现,该模式提供了一种集中式机制,用于实例化和配置 AI 模型提供商、向量存储、图存储和重排序器。工厂系统支持运行时提供商选择、类型安全的配置以及无需修改核心代码即可扩展。

有关可用提供商及其功能的信息,请参阅提供商生态系统。有关配置验证和优先级规则,请参阅配置系统

概述

Mem0 的工厂模式解决了在五种组件类型(大语言模型、嵌入器、向量存储、图存储和重排序器)中支持 60 多个提供商集成的挑战,同时保持清晰的关注点分离。每个工厂维护一个注册表,将提供商名称映射到实现类,从而实现无需紧耦合的动态实例化。

工厂系统提供以下功能:

  • 运行时提供商选择:通过配置切换提供商,无需更改代码。
  • 类型安全的配置:使用 Pydantic 验证的提供商特定配置类 mem0/vector_stores/configs.py:6-67
  • 动态类加载:延迟导入提供商实现以最小化依赖 mem0/utils/factory.py:24-27
  • 可扩展性:注册新提供商而无需修改工厂代码 mem0/utils/factory.py:115-126
组件架构:代码实体空间

此图将高级系统组件映射到其特定的代码标识符和文件位置。

Mem0 · 组件架构:代码实体空间 · 图 1
Mem0 · 组件架构:代码实体空间 · 图 1

来源mem0/utils/factory.py:1-284mem0/vector_stores/configs.py:6-67

工厂类

Mem0 在 Python 中实现了五个工厂类,并在 TypeScript 中为 OSS 版本实现了等效的工厂。

LlmFactory

LlmFactory 使用提供商特定的配置创建大语言模型实例 mem0/utils/factory.py:30-56。它同时支持传统的 BaseLlmConfig 和现代的提供商特定配置类。

提供商类路径配置类
openaimem0.llms.openai.OpenAILLMOpenAIConfig
anthropicmem0.llms.anthropic.AnthropicLLMAnthropicConfig
azure_openaimem0.llms.azure_openai.AzureOpenAILLMAzureOpenAIConfig
ollamamem0.llms.ollama.OllamaLLMOllamaConfig
deepseekmem0.llms.deepseek.DeepSeekLLMDeepSeekConfig
lmstudiomem0.llms.lmstudio.LMStudioLLMLMStudioConfig
vllmmem0.llms.vllm.VllmLLMVllmConfig
groqmem0.llms.groq.GroqLLMBaseLlmConfig

关键方法

  • create(provider_name, config, **kwargs):使用配置实例化大语言模型 mem0/utils/factory.py:59-112
  • register_provider(name, class_path, config_class):添加新的大语言模型提供商 mem0/utils/factory.py:115-126
  • get_supported_providers():列出可用的提供商 mem0/utils/factory.py:129-136

来源mem0/utils/factory.py:30-137mem0-ts/src/oss/src/utils/factory.ts:62-92

EmbedderFactory

EmbedderFactory 创建嵌入模型实例。它处理 upstash_vector 的特殊情况,该情况可以通过 MockEmbeddings 使用内置嵌入 mem0/utils/factory.py:156-157

提供商类路径
openaimem0.embeddings.openai.OpenAIEmbedding
huggingfacemem0.embeddings.huggingface.HuggingFaceEmbedding
fastembedmem0.embeddings.fastembed.FastEmbedEmbedding
geminimem0.embeddings.gemini.GoogleGenAIEmbedding
vertexaimem0.embeddings.vertexai.VertexAIEmbedding

来源mem0/utils/factory.py:139-165mem0-ts/src/oss/src/utils/factory.ts:40-60

VectorStoreFactory

VectorStoreFactory 创建向量数据库客户端。在 Python 实现中,它使用 VectorStoreConfig 的动态查找来验证提供商特定设置 mem0/vector_stores/configs.py:41-67

Mem0 · VectorStoreFactory · 图 2
Mem0 · VectorStoreFactory · 图 2

关键提供商qdrantchromapgvectorpineconemongodbmilvusredisvalkeyelasticsearchopensearchsupabaseweaviatefaissazure_ai_searchdatabricksupstash_vector mem0/vector_stores/configs.py:13-38

来源mem0/utils/factory.py:167-206mem0/vector_stores/configs.py:6-67mem0-ts/src/oss/src/utils/factory.ts:94-117

GraphStoreFactory 和 RerankerFactory
  • GraphStoreFactory:创建图客户端,例如用于 memgraphkuzuneptuneMemoryGraph mem0/utils/factory.py:208-230
  • RerankerFactory:使用与 LlmFactory 相同的模式创建重排序器(例如 CohereRerankerLLMRerankermem0/utils/factory.py:232-284

来源mem0/utils/factory.py:208-284

动态类加载

load_class() 函数支持延迟加载提供商实现,这对于 pyproject.toml 中大量的可选依赖列表至关重要 pyproject.toml:26-74

def load_class(class_type):
    module_path, class_name = class_type.rsplit(".", 1)
    module = importlib.import_module(module_path)
    return getattr(module, class_name)

来源mem0/utils/factory.py:24-27

配置流程与验证

系统确保用户提供的原始字典输入在传递给组件构造函数之前被转换为经过验证的 Pydantic 模型。

初始化流程:自然语言到代码实体

此图说明了用户的配置字符串或字典如何被转换为一个活的代码对象。

Mem0 · 初始化流程:自然语言到代码实体 · 图 3
Mem0 · 初始化流程:自然语言到代码实体 · 图 3

验证步骤

  1. 字典合并:如果提供了字典,则将其与 **kwargs 合并 mem0/utils/factory.py:84-87
  2. 类型转换:如果提供了 BaseLlmConfig 但提供商需要特定类(例如 OpenAIConfig),工厂会自动将公共字段(model、api_key、temperature 等)映射到新实例 mem0/utils/factory.py:88-104
  3. Pydantic 强制执行:最终的配置类(例如 VectorStoreConfig)会验证 pathhostapi_key 等字段 mem0/vector_stores/configs.py:41-67

来源mem0/utils/factory.py:80-112mem0/vector_stores/configs.py:41-67

TypeScript 实现

TypeScript OSS 实现(mem0-ts/src/oss)遵循类似的工厂模式,但使用静态 switch 语句而不是动态导入来解析提供商 mem0-ts/src/oss/src/utils/factory.ts:1-136

TypeScript 中的工厂

  • EmbedderFactory:支持 openaiollamagoogleazure_openailangchain mem0-ts/src/oss/src/utils/factory.ts:40-60
  • LLMFactory:支持 openaianthropicgroqmistraldeepseekmem0-ts/src/oss/src/utils/factory.ts:62-92
  • VectorStoreFactory:支持 memoryqdrantredisvectorizepgvectormem0-ts/src/oss/src/utils/factory.ts:94-117
  • HistoryManagerFactory:管理 SQLiteManagerSupabaseHistoryManagerMemoryHistoryManager mem0-ts/src/oss/src/utils/factory.ts:119-136

来源mem0-ts/src/oss/src/utils/factory.ts:1-137