datachain-ai/datachain
The Context Layer for unstructured data: typed, versioned datasets over S3, GCS, Azure
DataChain – 非结构化数据的「上下文层」
是什么 – 一个将存储在 S3、Google Cloud Storage、Azure Blob 或本地文件系统中的文件转换为 类型化、版本控制的数据集 的 Python 库。这些数据集可像数据仓库一样进行查询。它添加了一个轻量级的「数据 harness」,使 LLM 驱动的代理(Claude、Cursor、Codex、Copilot、Pi)能够在不移动原始文件的情况下理解并操作这些数据集。
核心组件
| 组件 | 功能 |
|---|---|
| 计算引擎 | 在文件上并行、异步执行 Python;支持检查点、增量(delta)运行,以及通过 DataChain Studio 实现的分布式执行。 |
| 数据集 DB | 基于 SQLite 的存储,记录每个数据集的 Pydantic 模式、版本、血缘关系和文件指针。即使在数亿行数据上,过滤、连接、分组、向量搜索等查询也能在亚秒级时间内直接在该数据库上运行。 |
| 知识库 (可选) | 自动生成的 markdown,描述每个数据集及其模式;可供人类和 LLM 代理阅读。 |
| 代理 harness (可选) | 一个技能,将三层结构接入 LLM 代码生成代理,使其可以发出 read_storage、map、save 等指令,并将结果作为普通 Python 对象获取。 |
典型工作流
- 读取原始文件 –
dc.read_storage('s3://bucket/**/*.jpg', anon=True, delta=True)创建文件的惰性视图。 - 定义模式 – 编写一个 Pydantic 模型(例如
ImageInfo)来描述你想要的列。 - 映射/转换 – 应用一个 Python UDF(
map(info=get_info))返回该模型;DataChain 将结果作为新的 命名数据集(pets_images@1.0.0)存储。 - 保存 –
.save('pets_images')将数据集注册到数据集 DB 中,自动进行版本控制。 - 查询 – 使用
dc.read_dataset('pets_images').filter(...).to_pandas()或向量搜索辅助函数(dc.func.cosine_distance)来检索或排序行。 - 增量运行 – 使用
delta=True时,仅处理新添加的文件;版本号递增(@1.0.1、@1.0.2、…),未更改的行被跳过。 - 代理驱动的流水线 – 安装技能后(
datachain skill install --target claude),LLM 可被提示构建整个流水线、生成知识库,并使用存储的数据集回答后续问题。
README 中突出的关键功能
- 版本化、类型化数据集 – 每个流水线步骤都会生成可复现的、命名的数据集,其模式存储在 SQLite 中。
- 快速、亚秒级查询 – 过滤、连接、聚合和向量相似性搜索直接在元数据上运行,无需加载文件。
- 检查点感知流水线 – 崩溃或错误不会强制完全重跑;引擎会从上次成功批次恢复。
- 代理集成 – 为 Claude、Cursor、Codex、Copilot 和 Pi 提供的技能,使 LLM 能读取知识库并调用 DataChain 操作,如同调用原生函数一样。
- 可扩展计算 – 本地多核异步执行或通过 DataChain Studio 实现分布式任务(GPU 集群、本地 K8s、任意云)。
- 零数据移动 – 原始文件保留在原始存储桶中;仅轻量级元数据和可选嵌入被本地存储。
- 知识库 – 数据集的 markdown 表示,供人类浏览(兼容 Obsidian)和代理发现可用数据。
安装与快速入门
pip install datachain # 核心库
# 可选 LLM 技能(例如 Claude)
datachain skill install --target claude
来自 README 的最小「代理驱动」示例:
- 从 S3 复制一张参考图像。
- 打开 Claude Code(或其他支持的代理)。
- 提示它 查找与该图像相似的狗,按品种、遮罩可用性和宽度过滤。
- 代理将请求分解,运行嵌入,连接品种元数据,应用过滤器,并返回一个排序的表格——所有操作均使用自动版本化并存储的数据集完成。
Studio – 共享、云后端执行
datachain auth login→ 登录托管 UI。datachain job run --workers 20 --cluster gpu-pool script.py提交分布式任务。- UI 显示血缘图、数据集注册表、访问控制,并支持大型医疗格式(DICOM、NIfTI、点云)。
谁可能使用它
- 需要在大规模图像/视频/音频集合上构建可复现数据流水线的机器学习团队。
- 需要查询自有数据但无需将其复制到独立向量存储的 LLM 增强代理的公司。
- 希望对数十亿个文件级元数据和嵌入进行快速、类似 SQL 探索的研究人员。
- 任何希望拥有带内置血缘关系和增量更新的版本化、类型化数据集的组织。
了解更多
- 完整文档: https://docs.datachain.ai/
- 架构图:
docs/assets/harness.svg - 社区: GitHub issues、邮件支持、Twitter @datachain_ai。
所有陈述均直接取自仓库的 README;未推断额外功能。
相关
- 项目
- 项目
- 项目
- 项目
- 项目