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,用于共享数据集注册、分布式计算、访问控制和血缘可视化。

典型工作流

  1. 读取存储 – dc.read_storage('s3://bucket/**/*.jpg', anon=True, delta=True) 创建一个文件的惰性集合。
  2. 定义模式 – 编写一个 Pydantic 模型;映射函数的返回类型将成为数据集模式。
  3. 映射 / 转换 – 对每个文件应用 Python UDF (.map(info=get_info));DataChain 处理批处理、检查点,并且仅重新处理新的/更改的文件。
  4. 保存 – .save('pets_images') 将结果注册为版本化数据集 (pets_images@1.0.0)。
  5. 查询 – 使用流畅的 API (filter, mutate, order_by, limit) 直接在 Dataset DB 上运行快速的类 SQL 操作或向量相似性搜索。
  6. 知识库 – 运行 dc-knowledge 生成 LLM 代理可以读取的 markdown。
  7. 代理驱动的流水线 – 通过安装的技能,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 开发人员,这些代理必须在不移动数据的情况下与真实数据交互。
  • 在云对象存储中存储数据并需要轻量级、版本控制数据目录的组织。

链接

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目