Legacy: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
目的与范围
本文档涵盖了 Embedchain,它是前身检索增强生成(RAG)框架,后来演变为 Mem0。Embedchain 被设计为一个简单的开源框架,用于在自定义数据源上构建问答系统。虽然 Mem0 代表了 AI 应用的现代记忆层,但 Embedchain 代码仍保留在仓库的 embedchain/ 目录下,以提供向后兼容性和遗留支持。
有关当前 Mem0 记忆系统的信息,请参阅记忆系统。有关适用于两个系统的配置模式,请参阅配置系统。
什么是 Embedchain?
Embedchain 是一个检索增强生成(RAG)框架,它简化了在自定义数据上创建聊天机器人和问答系统的过程。它提供自动数据类型检测、可配置的大语言模型(LLM)/嵌入向量提供程序,并通过 LangChain 与多个向量存储集成。
主要特性:
- 包名:
embedchain(版本 0.1.128)embedchain/pyproject.toml:2-3 - 描述: "最简单的开源检索增强生成(RAG)框架"
embedchain/pyproject.toml:4 - 核心依赖: LangChain(^0.3.1)
embedchain/pyproject.toml:98 - 当前状态: 为向后兼容而维护的遗留代码库。
- 后继者: Mem0(作为依赖包含:
mem0ai ^0.1.54)embedchain/pyproject.toml:108
来源: embedchain/pyproject.toml:1-108
与 Mem0 的关系
Embedchain 已演变为 Mem0,现代代码库位于 mem0/ 目录下,而遗留代码保留在 embedchain/ 目录下。pyproject.toml 通过将 Mem0 列为依赖项展示了这一过渡,从而允许逐步迁移。
系统演进:从 Embedchain 到 Mem0
以下图表说明了遗留检索增强生成(RAG)框架与现代记忆层之间的关系。
迁移路径:
- Embedchain 用户可以逐步迁移到 Mem0 以记忆为中心的 API。
- 两个系统共享相似的提供程序生态系统(大语言模型(LLM)、向量存储、嵌入向量器)。
- 配置模式相似,但 Mem0 提供了额外的记忆特定功能。
来源: embedchain/pyproject.toml:95-108,embedchain/embedchain/embedchain.py:38-96
核心架构
有关这些组件的技术细节,请参阅以下子页面:
EmbedChain 类
遗留系统的核心是 EmbedChain 类,它编排了大语言模型(LLM)、向量数据库和嵌入向量器。
类初始化:
class EmbedChain(JSONSerializable):
def __init__(
self,
config: BaseAppConfig,
llm: BaseLlm,
db: BaseVectorDB = None,
embedder: BaseEmbedder = None,
system_prompt: Optional[str] = None,
):
# ... 初始化逻辑 ...
embedchain/embedchain/embedchain.py:38-46
该类通过 add() 方法处理数据添加的生命周期,该方法会触发加载、片段切分和嵌入向量化 embedchain/embedchain/embedchain.py:117-154。
配置类
Embedchain 使用分层配置系统,包含大语言模型(LLM)和嵌入向量器的基类。BaseLlmConfig 类为语言模型提供了全面的配置,包括温度、最大 Token 数和自定义提示模板的参数 embedchain/embedchain/config/llm/base.py:111-142。
来源: embedchain/embedchain/embedchain.py:38-154,embedchain/embedchain/config/llm/base.py:111-142
数据处理管线
Embedchain 的管线弥合了原始数据源与向量存储之间的差距。
数据流:从源到向量存储
此图表将自然语言空间(源数据)映射到负责处理它的代码实体。
关键管线组件:
- DataFormatter: 将
DataType映射到特定的加载器和片段切分器embedchain/embedchain/data_formatter/data_formatter.py:12-35。 - BaseLoader: 子类(如
WebPageLoader)获取原始内容embedchain/embedchain/loaders/web_page.py:22-62。 - BaseChunker: 处理文本分割和元数据丰富
embedchain/embedchain/chunkers/base_chunker.py:12-74。 - BaseVectorDB: 与
ChromaDB等数据库交互以存储和查询向量embedchain/embedchain/vectordb/chroma.py:29-64。
来源: embedchain/embedchain/data_formatter/data_formatter.py:12-35,embedchain/embedchain/loaders/web_page.py:22-62,embedchain/embedchain/chunkers/base_chunker.py:12-74,embedchain/embedchain/vectordb/chroma.py:29-64
提示系统
Embedchain 包含针对不同用例预定义的提示模板,位于大语言模型(LLM)配置模块中。
| 模板名称 | 用途 | 文件指针 |
|---|---|---|
DEFAULT_PROMPT | 标准问答专家系统指令。 | embedchain/embedchain/config/llm/base.py:15-29 |
DEFAULT_PROMPT_WITH_HISTORY | 带对话历史上下文的问答。 | embedchain/embedchain/config/llm/base.py:31-52 |
DEFAULT_PROMPT_WITH_MEM0_MEMORY | 与 Mem0 用户偏好集成。 | embedchain/embedchain/config/llm/base.py:54-81 |
DOCS_SITE_DEFAULT_PROMPT | 专门用于开发者支持和代码。 | embedchain/embedchain/config/llm/base.py:83-99 |
来源: embedchain/embedchain/config/llm/base.py:15-108
模型定价与上下文
为协助 Token 跟踪和成本估算,系统维护了一个 model_prices_and_context_window.json 文件。该文件包含各种提供程序的元数据,包括 OpenAI、Azure 和 Anthropic embedchain/embedchain/config/model_prices_and_context_window.json:1-219。
来源: embedchain/embedchain/config/model_prices_and_context_window.json:1-219
总结
遗留的 Embedchain 是一个以检索增强生成(RAG)为中心的框架,它为 Mem0 更高级的记忆能力提供了基础。虽然 EmbedChain 类及其相关的加载器/片段切分器仍然可用,但鼓励用户探索记忆系统以满足现代 AI 记忆需求。
有关特定遗留子系统的详细文档,请参阅:
- Embedchain 概述 — 详细关系与迁移路径。
- Embedchain 配置 — YAML 和组件设置。
- Embedchain 数据源 — 模式与数据库迁移。