Embedchain 配置
Embedchain 配置
相关源文件
以下文件为本维基页面的生成提供了上下文:
embedchain/docs/api-reference/app/add.mdxembedchain/embedchain/chunkers/base_chunker.pyembedchain/embedchain/config/llm/base.pyembedchain/embedchain/config/model_prices_and_context_window.jsonembedchain/embedchain/data_formatter/data_formatter.pyembedchain/embedchain/embedchain.pyembedchain/embedchain/loaders/base_loader.pyembedchain/embedchain/loaders/web_page.pyembedchain/embedchain/vectordb/chroma.pyembedchain/poetry.lockembedchain/pyproject.tomlembedchain/tests/llm/test_openai.pyembedchain/tests/loaders/test_web_page.py
本文档描述了 Mem0 代码库中旧版 Embedchain 组件的配置系统。Embedchain 提供了一种结构化的配置方法,用于定义应用行为、数据库连接、大语言模型(LLM)提供商、嵌入器(Embedder)和向量存储(Vector Store)。
适用范围:本页面涵盖 Embedchain 特定的配置文件、兼容 YAML 的结构、组件级配置类以及数据库设置。有关现代 Mem0 配置,请参阅配置系统。
配置架构
Embedchain 使用分层配置系统,其中 EmbedChain 类(定义于 embedchain/embedchain/embedchain.py:38)充当中央编排器。它通过应用、大语言模型(LLM)、向量数据库和嵌入器(Embedder)的配置对象进行初始化。
组件初始化流程
下图展示了 EmbedChain 类在初始化过程中如何将高级配置名称与特定代码实体关联起来。
来源:embedchain/embedchain/embedchain.py:38-62,embedchain/embedchain/config/llm/base.py:111-142
大语言模型(LLM)配置
BaseLlmConfig 类管理语言模型交互的参数。它包含随机性、Token 限制和提示模板的设置。
BaseLlmConfig 的关键参数
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
number_documents | int | 3 | 要检索的上下文文档数量 embedchain/embedchain/config/llm/base.py:118 |
model | str | None | 具体的模型 ID(例如 gpt-4o-mini)embedchain/embedchain/config/llm/base.py:121 |
temperature | float | 0 | 控制随机性(0 表示确定性)embedchain/embedchain/config/llm/base.py:122 |
max_tokens | int | 1000 | 生成的最大 Token 数 embedchain/embedchain/config/llm/base.py:123 |
stream | bool | False | 启用响应流式传输 embedchain/embedchain/config/llm/base.py:125 |
system_prompt | str | None | 自定义系统指令 embedchain/embedchain/config/llm/base.py:129 |
token_usage | bool | False | 是否返回 Token 使用量和成本 embedchain/embedchain/config/llm/base.py:127 |
默认提示模板
Embedchain 提供了几个内置的提示模板来指导大语言模型(LLM)的行为:
- 标准问答:
DEFAULT_PROMPTembedchain/embedchain/config/llm/base.py:15-29 - 带历史记录:
DEFAULT_PROMPT_WITH_HISTORYembedchain/embedchain/config/llm/base.py:31-52 - Mem0 增强:
DEFAULT_PROMPT_WITH_MEM0_MEMORYembedchain/embedchain/config/llm/base.py:54-81 - 开发者支持:
DOCS_SITE_DEFAULT_PROMPTembedchain/embedchain/config/llm/base.py:83-99
来源:embedchain/embedchain/config/llm/base.py:111-142,embedchain/embedchain/config/llm/base.py:15-104
向量数据库配置
Embedchain 支持多种向量存储,其中 ChromaDB 是主要实现。配置涉及设置持久化目录和连接参数。
ChromaDB 配置示例
ChromaDB 类 embedchain/embedchain/vectordb/chroma.py:29 使用 ChromaDbConfig 来初始化客户端。它支持本地持久化和基于服务器的连接 embedchain/embedchain/vectordb/chroma.py:51-62。
来源:embedchain/embedchain/vectordb/chroma.py:32-64,embedchain/embedchain/vectordb/chroma.py:94-110
数据入库配置
通过 EmbedChain.add() 添加数据时,系统会使用 DataFormatter 根据 DataType 确定正确的加载器(Loader)和片段切分器(Chunker)。
入库数据流
- 检测:系统检测源的
DataTypeembedchain/embedchain/embedchain.py:162-181。 - 映射:
DataFormatter将DataType映射到特定的BaseLoader和BaseChunkerembedchain/embedchain/data_formatter/data_formatter.py:34-35。 - 加载:加载器(例如
WebPageLoader)获取原始内容并生成doc_idembedchain/embedchain/loaders/web_page.py:15-32。 - 片段切分:片段切分器将内容分割成可管理的片段,按
min_chunk_size过滤,并生成唯一的chunk_id值embedchain/embedchain/chunkers/base_chunker.py:18-74。
支持的数据类型(部分列表)
PDF_FILE:使用PdfFileLoader和PdfFileChunkerembedchain/embedchain/data_formatter/data_formatter.py:63,111WEB_PAGE:使用WebPageLoader和WebPageChunkerembedchain/embedchain/data_formatter/data_formatter.py:64,112JSON:使用JSONLoader和JSONChunkerembedchain/embedchain/data_formatter/data_formatter.py:75,123GMAIL:使用GmailLoader和GmailChunkerembedchain/embedchain/data_formatter/data_formatter.py:77,125
来源:embedchain/embedchain/embedchain.py:117-154,embedchain/embedchain/data_formatter/data_formatter.py:61-91,embedchain/embedchain/chunkers/base_chunker.py:18-74
模型元数据和定价
Embedchain 在 model_prices_and_context_window.json 中维护了一个模型能力注册表,包括上下文窗口大小和定价。
| 模型 ID | 最大输入 Token 数 | 最大输出 Token 数 | 输入成本(每 Token) |
|---|---|---|---|
openai/gpt-4o | 128,000 | 4,096 | $0.000005 embedchain/embedchain/config/model_prices_and_context_window.json:13 |
openai/gpt-4o-mini | 128,000 | 4,096 | $0.00000015 embedchain/embedchain/config/model_prices_and_context_window.json:20 |
openai/text-embedding-3-large | 8,191 | 不适用(向量:3072) | $0.00000013 embedchain/embedchain/config/model_prices_and_context_window.json:157 |
openai/gpt-3.5-turbo-0125 | 16,385 | 4,096 | $0.0000005 embedchain/embedchain/config/model_prices_and_context_window.json:136 |
来源:embedchain/embedchain/config/model_prices_and_context_window.json:9-22,embedchain/embedchain/config/model_prices_and_context_window.json:153-159,embedchain/embedchain/config/model_prices_and_context_window.json:132-138
环境和依赖
旧版 Embedchain 系统依赖于几个可选的额外组件来支持特定提供商,这些组件通过 pyproject.toml 进行管理。
- 开源:
sentence-transformers、torch、gpt4allembedchain/pyproject.toml:161 - 向量存储:
qdrant-client、chromadb、pymilvus、lancedbembedchain/pyproject.toml:101,121,122,162 - 云提供商:
google-cloud-aiplatform、langchain-aws、langchain-google-vertexaiembedchain/pyproject.toml:123,143,169 - 集成:
gmail(google-api-python-client)、notion、slackembedchain/pyproject.toml:171-178
来源:embedchain/pyproject.toml:95-144,embedchain/pyproject.toml:160-185