DataChain简介
DataChain是一个为人工智能设计的现代Python数据处理库。它的主要目标是在本地机器上组织非结构化数据并进行大规模处理。DataChain不会抽象或隐藏AI模型和API调用,而是帮助将它们集成到后现代数据栈中。
主要特性
DataChain具有以下几个关键特性:
📂 以存储为真实数据源
- 无需冗余复制即可处理来自S3、GCP、Azure和本地文件系统的非结构化数据
- 支持多模态数据:图像、视频、文本、PDF、JSON、CSV、Parquet等
- 将文件和元数据统一到持久化、版本化的列式数据集中
🐍 Python友好的数据管道
- 可直接操作Python对象和对象字段
- 内置并行化和内存外计算,无需SQL或Spark
🧠 数据丰富和处理
- 使用本地AI模型和LLM API生成元数据
- 可通过元数据进行过滤、连接和分组,通过向量嵌入进行搜索
- 可将数据集传递给PyTorch和TensorFlow,或导出回存储
🚀 高效性
- 并行化、内存外工作负载和数据缓存
- Python对象字段的向量化操作:求和、计数、平均等
- 优化的向量搜索
快速上手示例
使用JSON元数据选择文件
from datachain import Column, DataChain
meta = DataChain.from_json("gs://datachain-demo/dogs-and-cats/*json", object_name="meta")
images = DataChain.from_storage("gs://datachain-demo/dogs-and-cats/*jpg")
images_id = images.map(id=lambda file: file.path.split('.')[-2])
annotated = images_id.merge(meta, on="id", right_on="meta.id")
likely_cats = annotated.filter((Column("meta.inference.confidence") > 0.93) \
& (Column("meta.inference.class_") == "cat"))
likely_cats.export_files("high-confidence-cats/", signal="file")
使用本地AI模型进行数据整理
from transformers import pipeline
from datachain import DataChain, Column
classifier = pipeline("sentiment-analysis", device="cpu",
model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
def is_positive_dialogue_ending(file) -> bool:
dialogue_ending = file.read()[-512:]
return classifier(dialogue_ending)[0]["label"] == "POSITIVE"
chain = (
DataChain.from_storage("gs://datachain-demo/chatbot-KiT/",
object_name="file", type="text")
.settings(parallel=8, cache=True)
.map(is_positive=is_positive_dialogue_ending)
.save("file_response")
)
positive_chain = chain.filter(Column("is_positive") == True)
positive_chain.export_files("./output")
print(f"{positive_chain.count()} files were exported")
学习资源
社区支持
DataChain为处理大规模非结构化数据提供了强大而灵活的解决方案。无论是数据科学家、机器学习工程师还是AI研究人员,都可以利用DataChain简化数据处理流程,提高工作效率。欢迎探索更多功能并加入DataChain社区!