系统架构
系统架构
相关源文件
本章引用的主要源码文件:
AGENTS.mdCLAUDE.mdMakefileREADME.mddocs/components/vectordbs/config.mdxdocs/components/vectordbs/dbs/chroma.mdxdocs/components/vectordbs/dbs/qdrant.mdxdocs/components/vectordbs/overview.mdxdocs/vibecoding.mdxmem0/__init__.pymem0/configs/prompts.pymem0/memory/main.pymem0/memory/storage.pymem0/memory/utils.pymem0/utils/factory.pymem0/vector_stores/configs.pypoetry.lockpyproject.tomlskills/README.mdskills/mem0-integrate/LICENSEskills/mem0-integrate/README.mdskills/mem0-integrate/SKILL.mdskills/mem0-test-integration/LICENSEskills/mem0-test-integration/README.mdskills/mem0-test-integration/SKILL.mdtests/configs/test_prompts.pytests/memory/test_main.pytests/test_chatty_llm_parsing.pytests/test_main.pytests/test_memory.pytests/test_proxy.py
本文档描述了 Mem0 的三层架构:客户端层(SDK 和 API)、核心记忆系统(编排和工厂)以及存储后端(向量数据库、图数据库和历史记录追踪)。
架构总览
Mem0 采用模块化的三层架构,将客户端接口、记忆编排和存储关注点分离。这种设计支持灵活的部署模式(平台托管与自托管),同时在不同编程语言之间保持一致的 API 表面。
架构分为以下三层:
- 客户端层:多种访问方式(Python SDK、TypeScript SDK、REST API、CLI 和框架集成)。
- 核心记忆系统:通过
Memory或AsyncMemory类进行集中编排,并采用工厂模式实例化组件。 - 存储后端:可插拔的向量数据库、图数据库和历史记录追踪。
系统组件与代码实体
下图将自然语言中的系统概念映射到仓库中对应的代码实体。
来源:mem0/memory/main.py:15-41、mem0/utils/factory.py:30-41、mem0/configs/base.py:15-16、mem0/memory/storage.py:26-27
客户端层
客户端层提供了针对不同部署场景优化的主要访问模式。
Python SDK
- 自托管(开源版):
Memorymem0/memory/main.py:172-234和AsyncMemorymem0/memory/main.py:1140-1160类提供对基础设施的完全控制。用户通过MemoryConfig实例化它们。 - 平台 API:
MemoryClient类通过 REST 与 Mem0 托管的 API 通信。
TypeScript SDK 和集成
TypeScript SDK(mem0ai npm 包)提供平台 API 访问。像 @mem0/vercel-ai-provider 这样的集成通过将记忆层包装到 Vercel AI SDK 中,实现增强记忆的大语言模型调用 README.md:111-115。
CLI
mem0-cli 包允许用户直接从终端使用 mem0 add 和 mem0 search 等命令管理记忆 README.md:140-148。
来源:mem0/memory/main.py:172-234、README.md:100-148
核心记忆系统
Memory 类是开源版本的中心入口点。它编排了大语言模型(LLM)、嵌入向量生成器和存储后端之间的流程。
组件初始化
在初始化时,Memory 类使用各种工厂根据 MemoryConfig 实例化提供者 mem0/memory/main.py:173-234:
- 嵌入向量生成器:
EmbedderFactory.create()创建OpenAIEmbedding或HuggingFaceEmbedding等实例mem0/utils/factory.py:139-165。 - 向量数据库:
VectorStoreFactory.create()初始化Qdrant、Pinecone或ChromaDB等提供者mem0/utils/factory.py:167-205。 - 大语言模型(LLM):
LlmFactory.create()设置用于事实提取和记忆处理的语言模型mem0/utils/factory.py:30-137。 - 历史记录:初始化
SQLiteManager以追踪记忆变更和版本管理mem0/memory/main.py:187。
记忆处理管线(v3 算法)
最新的记忆算法专注于 Token 高效的单次提取过程 README.md:45-62。
来源:mem0/memory/main.py:281-384、README.md:56-60、mem0/configs/prompts.py:18-22
组件工厂
工厂模式抽象了支持 60 多个提供者的复杂性。
LlmFactory
LlmFactory 将提供者字符串映射到实现类及其特定配置 mem0/utils/factory.py:37-56。它支持的提供者包括 OpenAI、Anthropic、Groq、Ollama 和 AWS Bedrock。
VectorStoreFactory
VectorStoreFactory 管理向量数据库的实例化。支持的提供者在 VectorStoreConfig 中定义 mem0/vector_stores/configs.py:13-38。
| 类别 | 提供者 |
|---|---|
| 云/托管 | Pinecone、Upstash、MongoDB、Azure AI Search |
| 开源 | Qdrant、Chroma、Milvus、PGVector、Weaviate |
| 本地/嵌入式 | FAISS、SQLite(通过扩展) |
来源:mem0/utils/factory.py:167-205、mem0/vector_stores/configs.py:13-38
存储后端
Mem0 采用多级存储方法:
- 向量存储:存储事实的高维嵌入向量,用于语义检索。
- 图存储:存储实体和关系(例如,
用户 -- 喜欢 -- Python),以支持关系推理README.md:59。 - 关系存储(SQLite):
SQLiteManagermem0/memory/storage.py:26存储所有记忆的元数据、原始文本和历史/审计追踪。
来源:mem0/memory/storage.py:26-100、mem0/memory/main.py:187-206
配置系统
配置通过 mem0/configs/ 中的 Pydantic 模型进行管理。
- MemoryConfig:顶层配置对象
mem0/configs/base.py:15。 - VectorStoreConfig:验证提供者特定的设置并设置默认路径(例如,
/tmp/qdrant)mem0/vector_stores/configs.py:6-67。 - 校验:系统使用
model_validator确保提供者特定的配置类(如QdrantConfig或OpenAIConfig)正确实例化mem0/vector_stores/configs.py:40-67。
来源:mem0/configs/base.py:15-16、mem0/vector_stores/configs.py:6-67