AI 模型集成
AI 模型集成
相关源文件
本章引用的主要源码文件:
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 中的 AI 模型集成层,包括大语言模型(LLM)和嵌入向量模型。这些集成通过事实提取、冲突解决和语义搜索能力,支撑 mem0 的核心记忆操作。
关于如何通过工厂模式选择和实例化这些模型,请参见提供者生态。关于配置优先级和校验,请参见配置系统。
集成架构总览
Mem0 通过基类和特定提供者的实现,为与多个 AI 提供者交互提供了统一接口。该架构将大语言模型(LLM)操作(文本生成、工具调用)与嵌入向量操作(向量生成)分离开来。
集成组件关系
标题:AI 集成组件关系
来源: mem0/llms/base.py:7-12、mem0/embeddings/base.py:7-32、mem0/configs/llms/base.py:7-67、mem0/configs/embeddings/base.py:10-111、mem0/llms/configs.py:6-9、mem0/embeddings/configs.py:6-11
大语言模型基础架构
LLMBase 抽象类
所有大语言模型提供者都继承自 LLMBase,该类定义了文本生成操作的标准接口。基类确保所有提供者的行为一致。
大语言模型类层次结构
标题:大语言模型类层次结构
关键方法:
generate_response():文本生成的主要接口,接受消息、响应格式、工具和工具选择参数mem0/llms/gemini.py:137-143。_parse_response():特定提供者的解析逻辑,用于提取内容和工具调用mem0/llms/gemini.py:24-63。
来源: mem0/llms/base.py:7-12、mem0/llms/gemini.py:14-143、mem0/llms/configs.py:6-36
BaseLlmConfig
BaseLlmConfig 类定义了所有大语言模型提供者的标准参数 mem0/configs/llms/base.py:7-28。
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
model | Optional[Union[str, Dict]] | None | 模型标识符(例如 "gpt-4.1-nano-2025-04-14") |
temperature | float | 0.1 | 控制随机性(0.0 = 确定性,2.0 = 创造性) |
max_tokens | int | 2000 | 响应中的最大 Token 数 |
top_p | float | 0.1 | 核采样参数 |
top_k | int | 1 | Top-k 采样参数 |
api_key | Optional[str] | None | API 认证密钥 |
enable_vision | bool | False | 启用多模态图像输入 |
vision_details | Optional[str] | "auto" | 视觉细节级别("low"、"high"、"auto") |
reasoning_effort | Optional[str] | None | 推理模型的努力级别(o1、o3 等) |
http_client_proxies | Optional[Union[Dict, str]] | None | HTTP 代理配置 |
来源: mem0/configs/llms/base.py:16-67
大语言模型提供者实现
关于包括 Anthropic、AWS Bedrock、Ollama 和 Groq 在内的 18 个以上受支持提供者的完整列表,请参见大语言模型提供者。受支持的提供者在 LlmConfig 校验器中进行校验 mem0/llms/configs.py:13-35。
OpenAI 集成
Mem0 支持两种类型的 OpenAI 大语言模型格式:结构化输出(针对 JSON 优化)和非结构化输出(自由形式的自然语言)docs/components/llms/overview.mdx:42-63。
Gemini 集成
GeminiLLM 集成了 Google 的 Gemini 模型 mem0/llms/gemini.py:14-22。它将消息重新格式化为 Google 的 types.Content 格式 mem0/llms/gemini.py:71-94,并递归地从工具定义中移除 additionalProperties,以满足 Gemini API 的要求 mem0/llms/gemini.py:107-133。
来源: mem0/llms/gemini.py:14-196、docs/components/llms/overview.mdx:42-63
大语言模型配置
配置遵循严格的优先级:显式设置的值 > 环境变量 > 实现默认值 docs/components/llms/config.mdx:26-34。关于详细的配置模式,请参见大语言模型配置。
嵌入向量基础架构
EmbeddingBase 抽象类
所有嵌入向量提供者都继承自 EmbeddingBase,该类定义了向量生成的标准接口 mem0/embeddings/base.py:8。
关键方法:
embed(text, memory_action):为文本生成嵌入向量。memory_action可以是 "add"、"search" 或 "update"mem0/embeddings/huggingface.py:29-35。
来源: mem0/embeddings/base.py:7-32、mem0/embeddings/huggingface.py:29-35
BaseEmbedderConfig
BaseEmbedderConfig 类为所有嵌入向量提供者提供配置,包括特定提供者的 URL 和凭证 mem0/configs/embeddings/base.py:10-43。
来源: mem0/configs/embeddings/base.py:10-111
嵌入向量提供者实现
关于 OpenAI、HuggingFace 和 VertexAI 等 11 个以上受支持提供者的详细信息,请参见嵌入向量提供者。受支持的提供者在 EmbedderConfig 校验器中进行校验 mem0/embeddings/configs.py:14-31。
HuggingFace 集成
HuggingFaceEmbedding 支持两种模式:
- 本地模式:使用
sentence_transformers进行本地推理mem0/embeddings/huggingface.py:23-25。 - API 模式:使用兼容 OpenAI 的客户端连接到 HuggingFace TEI(文本嵌入向量推理)端点
mem0/embeddings/huggingface.py:19-21。
来源: mem0/embeddings/huggingface.py:15-45
Ollama 集成
OllamaEmbedding 管理本地嵌入向量模型 mem0/embeddings/ollama.py:24。它包含一个 _ensure_model_exists 检查,如果本地未找到模型,则从 Ollama 注册表中拉取模型 mem0/embeddings/ollama.py:38-49。
来源: mem0/embeddings/ollama.py:24-66
OpenAI 和 Gemini 嵌入向量
OpenAIEmbedding 默认使用 text-embedding-3-small mem0/embeddings/openai.py:15。GoogleGenAIEmbedding(Gemini)使用 models/gemini-embedding-001,并支持可调整的 output_dimensionality mem0/embeddings/gemini.py:15-16。
来源: mem0/embeddings/openai.py:11-55、mem0/embeddings/gemini.py:11-40
嵌入向量配置
配置嵌入向量涉及指定维度和任务特定的嵌入向量类型(例如 memory_add_embedding_type)mem0/configs/embeddings/base.py:96-98。有关详细信息,请参见嵌入向量配置。
重排序
Mem0 支持重排序提供者以优化搜索结果。关于配置和提供者详细信息,请参见重排序。