嵌入配置
嵌入向量配置
相关源文件
本章引用的主要源码文件:
docs/components/embedders/config.mdxdocs/components/embedders/overview.mdxdocs/components/llms/config.mdxdocs/components/llms/overview.mdxmem0-ts/src/oss/src/embeddings/ollama.tsmem0-ts/src/oss/src/llms/ollama.tsmem0-ts/src/oss/tests/ollama-embedder.test.tsmem0/configs/embeddings/base.pymem0/configs/llms/base.pymem0/embeddings/base.pymem0/embeddings/configs.pymem0/embeddings/gemini.pymem0/embeddings/huggingface.pymem0/embeddings/ollama.pymem0/embeddings/openai.pymem0/llms/configs.pymem0/llms/gemini.pymem0/llms/xai.pytests/embeddings/test_huggingface_embeddings.pytests/embeddings/test_ollama_embeddings.pytests/embeddings/test_openai_embeddings.py
本文档介绍 Mem0 中嵌入向量模型的配置选项,重点讲解 BaseEmbedderConfig 类和特定于提供商的参数。有关可用嵌入向量提供商和 EmbeddingBase 接口的信息,请参阅嵌入向量提供商。有关大语言模型(LLM)的配置,请参阅大语言模型(LLM)配置。
概述
Mem0 中的嵌入向量配置通过 BaseEmbedderConfig 类进行管理,该类为所有嵌入向量提供商提供了统一的配置接口。配置系统支持 11 个以上的嵌入向量提供商,并提供了特定于提供商的参数,同时保持了 API 表面的一致性。
配置通过 EmbeddingBase 构造函数传递给嵌入向量实现,并决定了模型选择、API 认证、嵌入向量维度和特定于提供商的行为。
来源: mem0/configs/embeddings/base.py:10-111, mem0/embeddings/base.py:1-32
BaseEmbedderConfig 类
配置类图
来源: mem0/configs/embeddings/base.py:10-111, mem0/embeddings/base.py:7-32, mem0/embeddings/openai.py:11-35, mem0/embeddings/huggingface.py:15-28, mem0/embeddings/ollama.py:24-32, mem0/embeddings/gemini.py:11-20
构造函数参数
BaseEmbedderConfig 构造函数使用以下参数初始化配置实例:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
model | Optional[str] | None | 嵌入向量模型标识符 |
api_key | Optional[str] | None | 用于认证的 API 密钥 |
embedding_dims | Optional[int] | None | 向量维度 |
ollama_base_url | Optional[str] | None | Ollama API 的 URL |
openai_base_url | Optional[str] | None | 兼容 OpenAI 的 API 的 URL |
model_kwargs | Optional[dict] | {} | HuggingFace SentenceTransformer 的参数 |
huggingface_base_url | Optional[str] | None | HuggingFace TEI 的 URL |
azure_kwargs | Optional[AzureConfig] | {} | Azure OpenAI 特定配置 |
http_client_proxies | Optional[Union[Dict, str]] | None | httpx.Client 的代理设置 |
vertex_credentials_json | Optional[str] | None | Vertex AI 凭证路径 |
memory_add_embedding_type | Optional[str] | None | 记忆添加的任务类型 |
memory_update_embedding_type | Optional[str] | None | 记忆更新的任务类型 |
memory_search_embedding_type | Optional[str] | None | 记忆搜索的任务类型 |
output_dimensionality | Optional[str] | None | Gemini 模型的维度 |
lmstudio_base_url | Optional[str] | "http://localhost:1234/v1" | LM Studio 的 URL |
aws_access_key_id | Optional[str] | None | AWS 访问密钥(Bedrock) |
aws_secret_access_key | Optional[str] | None | AWS 秘密密钥(Bedrock) |
aws_region | Optional[str] | None | AWS 区域(默认为环境变量或 "us-west-2") |
来源: mem0/configs/embeddings/base.py:15-110
通用配置参数
模型选择
如果初始化时 model 参数为 None,各提供商将分配默认模型:
# OpenAI 默认值 [mem0/embeddings/openai.py:15]
self.config.model = self.config.model or "text-embedding-3-small"
# HuggingFace 默认值(本地) [mem0/embeddings/huggingface.py:23]
self.config.model = self.config.model or "multi-qa-MiniLM-L6-cos-v1"
# Ollama 默认值 [mem0/embeddings/ollama.py:28]
self.config.model = self.config.model or "nomic-embed-text"
# Gemini 默认值 [mem0/embeddings/gemini.py:15]
self.config.model = self.config.model or "models/gemini-embedding-001"
来源: mem0/embeddings/openai.py:15-15, mem0/embeddings/huggingface.py:23-23, mem0/embeddings/ollama.py:28-28, mem0/embeddings/gemini.py:15-15
API 密钥管理
API 密钥按以下优先级解析:
BaseEmbedderConfig中显式设置的api_key- 环境变量(例如
OPENAI_API_KEY、GOOGLE_API_KEY、AWS_REGION)
来源: mem0/embeddings/openai.py:21-21, mem0/embeddings/gemini.py:18-18, mem0/configs/embeddings/base.py:109-109
嵌入向量维度
embedding_dims 参数控制向量大小。不同提供商的实现方式各异:
- OpenAI:如果用户设置了该参数,则将
dimensions传递给 API。默认值为1536mem0/embeddings/openai.py:18-19。 - HuggingFace:如果未指定,则从
model.get_sentence_embedding_dimension()自动检测mem0/embeddings/huggingface.py:27。 - Gemini:如果提供了
output_dimensionality则使用该值,否则默认值为768mem0/embeddings/gemini.py:16。 - Ollama:默认值为
512mem0/embeddings/ollama.py:29。
来源: mem0/embeddings/openai.py:18-19, mem0/embeddings/huggingface.py:27-27, mem0/embeddings/gemini.py:16-16, mem0/embeddings/ollama.py:29-29
配置流程
从配置到提供商实例化
来源: mem0/embeddings/configs.py:6-32, mem0/embeddings/base.py:14-18, mem0/embeddings/openai.py:12-35, mem0/embeddings/huggingface.py:16-28
特定于提供商的配置
OpenAI 配置
OpenAI 嵌入向量支持自定义基础 URL 和批量处理。
openai_base_url:从配置中解析,然后检查OPENAI_API_BASE(已废弃),再检查OPENAI_BASE_URL,默认值为"https://api.openai.com/v1"mem0/embeddings/openai.py:22-27。- 批处理:
embed_batch自动将输入分块为每批 100 个,以保持在 API 限制范围内mem0/embeddings/openai.py:62。 - Matryoshka 支持:仅当在配置中显式设置了
embedding_dims时,dimensions参数才会传递给 APImem0/embeddings/openai.py:18。
来源: mem0/embeddings/openai.py:11-77
HuggingFace 配置
支持两种操作模式:
- 远程模式:使用
huggingface_base_url通过OpenAI客户端连接到文本嵌入向量推理(TEI)端点mem0/embeddings/huggingface.py:19-21。 - 本地模式:使用
SentenceTransformer在本地加载模型mem0/embeddings/huggingface.py:25。
来源: mem0/embeddings/huggingface.py:15-44
Ollama 配置
Ollama 实现确保模型在使用前已存在于本地:
ollama_base_url:作为host传递给ollama.Clientmem0/embeddings/ollama.py:31。- 自动拉取:
_ensure_model_exists()检查本地模型列表,如果模型缺失则拉取该模型mem0/embeddings/ollama.py:38-49。
来源: mem0/embeddings/ollama.py:24-66
Gemini 配置
Gemini 嵌入向量使用 google-genai SDK:
output_dimensionality:映射到types.EmbedContentConfigmem0/embeddings/gemini.py:34。- 默认模型:
models/gemini-embedding-001mem0/embeddings/gemini.py:15。
来源: mem0/embeddings/gemini.py:11-39
任务特定嵌入向量
Mem0 支持针对不同记忆操作的任务特定嵌入向量类型。这对于 Vertex AI 等区分检索和存储任务的提供商特别有用。
memory_add_embedding_type:添加记忆时使用。memory_update_embedding_type:更新记忆时使用。memory_search_embedding_type:搜索记忆时使用。
embed 函数签名包含一个 memory_action 参数以支持此逻辑: def embed(self, text, memory_action: Optional[Literal["add", "search", "update"]] = None) mem0/embeddings/base.py:21。
来源: mem0/configs/embeddings/base.py:32-34, 96-98, mem0/embeddings/base.py:21-31
校验与 Pydantic 模式
EmbedderConfig 类使用 Pydantic 的 field_validator 为嵌入向量提供商提供高级别校验:
class EmbedderConfig(BaseModel):
provider: str = Field(
description="嵌入向量模型的提供商(例如 'ollama'、'openai')",
default="openai",
)
config: Optional[dict] = Field(description="特定嵌入向量模型的配置", default={})
@field_validator("config")
def validate_config(cls, v, values):
provider = values.data.get("provider")
if provider in [
"openai", "ollama", "huggingface", "azure_openai", "gemini",
"vertexai", "together", "lmstudio", "langchain", "aws_bedrock", "fastembed",
]:
return v
else:
raise ValueError(f"不支持的嵌入向量提供商:{provider}")
来源: mem0/embeddings/configs.py:6-32