agentic_huge_data_base / wiki
页面 Mem0 · 6.3 嵌入提供方·DeepWiki 中文全文译文

6.3 · 嵌入提供方(Embedding Providers)

长期记忆与上下文管理 · 本章是 Mem0 DeepWiki 中文译文的独立章节页,保留原始链接、源码锚点、模块标签和章节层级。

项目Mem0 章节6.3 状态全文译文 模块检索、召回与索引、模型调用与提供方适配、界面与交互、系统架构
源码线索
  • docs/components/embedders/models/google_AI.mdx
  • docs/components/embedders/models/huggingface.mdx
  • docs/components/embedders/models/ollama.mdx
  • docs/components/embedders/models/openai.mdx
  • docs/components/embedders/models/together.mdx
  • docs/components/embedders/models/vertexai.mdx
  • docs/components/llms/models/ollama.mdx
  • mem0-ts/src/oss/src/embeddings/azure.ts
  • mem0-ts/src/oss/src/embeddings/google.ts
  • mem0-ts/src/oss/src/embeddings/ollama.ts
模块标签
  • 检索、召回与索引
  • 模型调用与提供方适配
  • 界面与交互
  • 系统架构
  • 测试、发布与运维

中文译文

嵌入提供方(中文译文)

原始 DeepWiki 页面:https://deepwiki.com/mem0ai/mem0/6.3-embedding-providers
翻译时间:2026-05-27T08:45:04.588Z
翻译模型:deepseek-chat
原文字符数:11395
项目:Mem0 (mem0)

---

嵌入向量提供者

相关源文件

以下文件被用作生成此 Wiki 页面的上下文:

  • docs/components/embedders/models/google_AI.mdx
  • docs/components/embedders/models/huggingface.mdx
  • docs/components/embedders/models/ollama.mdx
  • docs/components/embedders/models/openai.mdx
  • docs/components/embedders/models/together.mdx
  • docs/components/embedders/models/vertexai.mdx
  • docs/components/llms/models/ollama.mdx
  • mem0-ts/src/oss/src/embeddings/azure.ts
  • mem0-ts/src/oss/src/embeddings/google.ts
  • mem0-ts/src/oss/src/embeddings/ollama.ts
  • mem0-ts/src/oss/src/embeddings/openai.ts
  • mem0-ts/src/oss/src/llms/ollama.ts
  • mem0-ts/src/oss/src/vector_stores/azure_ai_search.ts
  • mem0-ts/src/oss/src/vector_stores/vectorize.ts
  • mem0-ts/src/oss/tests/azure-embedder.test.ts
  • mem0-ts/src/oss/tests/google-embedder.test.ts
  • mem0-ts/src/oss/tests/ollama-embedder.test.ts
  • mem0-ts/src/oss/tests/openai-embedder.test.ts
  • mem0/configs/embeddings/base.py
  • mem0/embeddings/base.py
  • mem0/embeddings/gemini.py
  • mem0/embeddings/huggingface.py
  • mem0/embeddings/ollama.py
  • mem0/embeddings/openai.py
  • mem0/embeddings/vertexai.py
  • mem0/llms/gemini.py
  • tests/embeddings/test_huggingface_embeddings.py
  • tests/embeddings/test_ollama_embeddings.py
  • tests/embeddings/test_openai_embeddings.py
  • tests/embeddings/test_vertexai_embeddings.py

本文档介绍了 Mem0 支持的嵌入向量提供者、它们的架构以及如何集成到记忆系统中。嵌入向量提供者将文本转换为高维向量,从而实现语义搜索功能。

架构总览

Mem0 的嵌入向量系统使用工厂模式,通过统一的接口支持多个嵌入向量提供者。所有嵌入器都继承自 EmbeddingBase 并实现 embed() 方法。

基类和工厂
graph TB
    subgraph "工厂层"
        EmbedderFactory["EmbedderFactory"]
    end

    subgraph "基础抽象"
        EmbeddingBase["EmbeddingBase"]
        BaseEmbedderConfig["BaseEmbedderConfig"]
    end

    subgraph "提供者实现"
        OpenAIEmbedding["OpenAIEmbedding"]
        OllamaEmbedding["OllamaEmbedding"]
        HuggingFaceEmbedding["HuggingFaceEmbedding"]
        GoogleGenAIEmbedding["GoogleGenAIEmbedding"]
        VertexAIEmbedding["VertexAIEmbedding"]
        AzureOpenAIEmbedding["AzureOpenAIEmbedding"]
    end

    EmbedderFactory -->|"create(provider_name, config)"| EmbeddingBase

    EmbeddingBase <|-- OpenAIEmbedding
    EmbeddingBase <|-- OllamaEmbedding
    EmbeddingBase <|-- HuggingFaceEmbedding
    EmbeddingBase <|-- GoogleGenAIEmbedding
    EmbeddingBase <|-- VertexAIEmbedding
    EmbeddingBase <|-- AzureOpenAIEmbedding

    BaseEmbedderConfig -->|"配置"| EmbeddingBase

来源: mem0/embeddings/base.py:1-32, mem0/configs/embeddings/base.py:10-111, mem0/embeddings/openai.py:11-12, mem0/embeddings/huggingface.py:15-16

EmbeddingBase 抽象类

所有嵌入向量提供者都继承自 EmbeddingBase,该类定义了嵌入实现的契约:

class EmbeddingBase(ABC):
    def __init__(self, config: Optional[BaseEmbedderConfig] = None)

    @abstractmethod
    def embed(self, text, memory_action: Optional[Literal["add", "search", "update"]])

embed() 方法接受一个 memory_action 参数,允许提供者为不同的操作(添加、搜索或更新)使用不同的嵌入策略。

来源: mem0/embeddings/base.py:7-32

支持的提供者

基于云的提供者
OpenAI
  • 默认模型: text-embedding-3-small mem0/embeddings/openai.py:15
  • 默认维度: 1536 mem0/embeddings/openai.py:19
  • 关键特性: 支持通过可自定义维度的 Matryoshka 嵌入。仅当用户显式设置维度时,才会将维度传递给 API,以保持与非 Matryoshka 后端的兼容性 mem0/embeddings/openai.py:16-18
  • API 密钥: OPENAI_API_KEY 环境变量或配置参数 mem0/embeddings/openai.py:21

该实现会自动将批量请求切分为每组 100 个,以保持在 API 限制范围内 mem0/embeddings/openai.py:62-66

来源: mem0/embeddings/openai.py:11-76, tests/embeddings/test_openai_embeddings.py:112-125

Google Gemini(Google AI)
  • 默认模型: models/gemini-embedding-001 mem0/embeddings/gemini.py:15
  • 默认维度: 768 mem0/embeddings/gemini.py:16
  • 客户端: 使用 google.genai.Client mem0/embeddings/gemini.py:20
  • 特殊参数: 支持通过 types.EmbedContentConfig 设置 output_dimensionality mem0/embeddings/gemini.py:34-37

来源: mem0/embeddings/gemini.py:11-40

Vertex AI
  • 默认模型: gemini-embedding-001 mem0/embeddings/vertexai.py:15
  • 认证: 使用 GCPAuthenticator 进行集中式 Google Cloud 认证 mem0/embeddings/vertexai.py:27-31
  • 任务特定嵌入: 支持基于记忆操作的专业嵌入类型:
  • - add/updateRETRIEVAL_DOCUMENT mem0/embeddings/vertexai.py:19-20 - searchRETRIEVAL_QUERY mem0/embeddings/vertexai.py:21

  • 任务类型映射:memory_action 映射到 TextEmbeddingInput 中的 task_type mem0/embeddings/vertexai.py:54-61

来源: mem0/embeddings/vertexai.py:11-64, tests/embeddings/test_vertexai_embeddings.py:91-115

本地和自托管提供者
Ollama
  • 默认模型: nomic-embed-text mem0/embeddings/ollama.py:28
  • 默认维度: 512 mem0/embeddings/ollama.py:29
  • 自动管理: 通过 self.client.list() 检查模型是否存在于本地,如果缺失则通过 self.client.pull() 拉取 mem0/embeddings/ollama.py:38-49
  • TypeScript 实现: 包含防御性检查,确保在调用 Ollama 客户端之前输入是字符串 mem0-ts/src/oss/src/embeddings/ollama.ts:31-35

来源: mem0/embeddings/ollama.py:24-66, mem0-ts/src/oss/src/embeddings/ollama.ts:6-70

Hugging Face
  • 模式: 支持通过 sentence_transformers 进行本地执行,以及通过兼容 OpenAI 的客户端进行远程 TEI(文本嵌入推理)mem0/embeddings/huggingface.py:19-25
  • 本地模式: 使用 SentenceTransformer,默认模型为 multi-qa-MiniLM-L6-cos-v1。通过查询模型维度自动设置 embedding_dims mem0/embeddings/huggingface.py:23-27
  • TEI 模式: 通过设置 huggingface_base_url 触发,使用 openai.OpenAI 客户端 mem0/embeddings/huggingface.py:19-21

来源: mem0/embeddings/huggingface.py:15-44, tests/embeddings/test_huggingface_embeddings.py:75-103

实现细节

数据流:文本到向量空间

下图展示了自然语言输入如何通过代码实体流动以生成向量。

sequenceDiagram
    participant User as "用户输入"
    participant Mem as "Memory 类"
    participant Provider as "OpenAIEmbedding"
    participant Client as "openai.OpenAI"

    User->>Mem: add("I love sci-fi")
    Mem->>Provider: embed("I love sci-fi", memory_action="add")
    Note over Provider: mem0/embeddings/openai.py
    Provider->>Provider: text.replace("\n", " ")
    Provider->>Client: client.embeddings.create(input=[text], model=config.model, encoding_format="float")
    Client-->>Provider: response.data[0].embedding
    Provider-->>Mem: List[float] (向量)

来源: mem0/embeddings/openai.py:37-55, mem0/embeddings/base.py:21-32, tests/embeddings/test_openai_embeddings.py:17-30

双模式支持(HuggingFace)

HuggingFace 提供者根据是否存在 huggingface_base_url 动态切换本地库调用和网络 API 调用。

graph TD
    subgraph "mem0/embeddings/huggingface.py"
        Init["HuggingFaceEmbedding.__init__(config)"]
        Embed["HuggingFaceEmbedding.embed(text)"]

        Init --> HasURL{"config.huggingface_base_url?"}
        HasURL -->|是| TEIMode["设置 self.client = OpenAI(base_url=...)"]
        HasURL -->|否| LocalMode["设置 self.model = SentenceTransformer(...)"]

        Embed --> CheckMode{"self.config.huggingface_base_url 已设置?"}
        CheckMode -->|是| APICall["self.client.embeddings.create(...)"]
        CheckMode -->|否| LocalEnc["self.model.encode(text, convert_to_numpy=True)"]
    end

来源: mem0/embeddings/huggingface.py:16-44, tests/embeddings/test_huggingface_embeddings.py:18-27, tests/embeddings/test_huggingface_embeddings.py:75-103

批量处理

OpenAI 和 Ollama(TypeScript)提供者支持批量操作以优化网络开销。

特性实现文件
批量大小每次切分 100 个文本mem0/embeddings/openai.py:62
规范化\n 替换为空格mem0/embeddings/openai.py:63
排序按响应索引排序mem0/embeddings/openai.py:75
TS 批量处理使用 Promise.all 进行映射mem0-ts/src/oss/src/embeddings/ollama.ts:44-47

来源: mem0/embeddings/openai.py:57-76, mem0-ts/src/oss/src/embeddings/openai.ts:30-49

配置参数

配置通过 BaseEmbedderConfig 管理,该配置集中了所有提供者的参数。

参数用途提供者
model模型标识符全部
api_key认证令牌云提供者
embedding_dims向量大小OpenAI、Vertex、Gemini、HF
ollama_base_url本地服务器地址Ollama
huggingface_base_urlTEI 端点地址HuggingFace
vertex_credentials_jsonGCP 服务账户路径VertexAI
http_client_proxies通过企业代理路由Azure/通用

来源: mem0/configs/embeddings/base.py:10-111, mem0/embeddings/openai.py:18-27