datachain-ai/datachain
The Context Layer for unstructured data: typed, versioned datasets over S3, GCS, Azure
DataChain – 一个用于非结构化数据版本化、可查询数据集的 Python 库
它是什么
- 一个将存储在 S3、GCS、Azure 或本地磁盘上的文件视为类型化、版本控制数据集的 Python 包。
- 它构建了一个轻量级的、由 SQLite 支持的 Dataset DB,用于存储模式(通过 Pydantic)、文件指针、血缘关系甚至向量嵌入,从而在不移动原始文件的情况下实现亚秒级的过滤、连接、聚合和相似性搜索。
- 一个可选的 Knowledge Base 层将这些元数据导出为人类和 LLM 代理可读的 markdown,并且一个 Skill 可以为 Claude、Cursor、Codex、GitHub Copilot 或 Pi 安装数据感知代理工具。
关键组件
| 组件 | 角色 |
|---|---|
| Compute Engine | 针对文件的并行 Python 处理(异步 I/O、检查点、增量更新)。 |
| Dataset DB | 存储 Pydantic 模式、版本化数据集定义和向量;查询直接在 SQLite 上运行。 |
| Knowledge Base | 自动生成的描述数据集的 markdown,对代理和文档很有用。 |
| Agent Harness / Skill | 向 LLM 代理公开 read_storage、map、save 等功能,以便它们能够推理和操作数据。 |
| Studio (cloud service) | 可选的托管 UI,用于共享数据集注册、分布式计算、访问控制和血缘可视化。 |
典型工作流
- 读取存储 –
dc.read_storage('s3://bucket/**/*.jpg', anon=True, delta=True)创建一个文件的惰性集合。 - 定义模式 – 编写一个 Pydantic 模型;映射函数的返回类型将成为数据集模式。
- 映射 / 转换 – 对每个文件应用 Python UDF (
.map(info=get_info));DataChain 处理批处理、检查点,并且仅重新处理新的/更改的文件。 - 保存 –
.save('pets_images')将结果注册为版本化数据集 (pets_images@1.0.0)。 - 查询 – 使用流畅的 API (
filter,mutate,order_by,limit) 直接在 Dataset DB 上运行快速的类 SQL 操作或向量相似性搜索。 - 知识库 – 运行
dc-knowledge生成 LLM 代理可以读取的 markdown。 - 代理驱动的流水线 – 通过安装的技能,LLM(例如 Claude Code)可以根据自然语言提示生成整个流水线。
为什么它很重要
- 无需数据复制 – 数据集只是元数据和指针;原始文件保留在您的云存储桶中。
- 版本控制与可重复性 – 每个流水线步骤都是一个命名、不可变的数据集版本,易于回滚或重用结果。
- 可扩展查询 – 基于 SQLite 的引擎可以在毫秒内过滤和连接数百万行数据,远超内存中 pandas 的处理能力。
- 代理就绪 – 该技能将 LLM 代理与您的数据连接起来,使它们能够理解数据集模式、执行连接并自动生成代码。
安装
pip install datachain
# optional agent skill
# datachain skill install --target claude # also cursor, codex, copilot, pi
示例(查找与参考图像相似的狗,按品种、掩码和大小过滤) – README 展示了一个完整的从提示到结果的流程,其中 Claude Code 分解任务、构建中间数据集并返回排名匹配列表。
目标受众
- 需要在大型非结构化媒体集合上进行可重复流水线的数据工程师和 ML 团队。
- 构建 LLM 驱动代理的 AI 开发人员,这些代理必须在不移动数据的情况下与真实数据交互。
- 在云对象存储中存储数据并需要轻量级、版本控制数据目录的组织。
链接
- PyPI: https://pypi.org/project/datachain/
- Docs: https://www.datachain.ai/docs
- Studio (hosted UI): https://studio.datachain.ai
- GitHub: https://github.com/datachain-ai/datachain
相关
- 项目
- 项目
- 项目
- 项目
- 项目