一、Activeloop 库简介
Activeloop 是一款专注于数据集管理、向量存储与大模型数据流水线的 Python 工具库,核心用于构建、版本控制、流式加载与查询 AI 数据集,尤其适配大语言模型、计算机视觉场景。其通过统一数据格式实现跨设备、跨框架的数据共享,底层依托高效序列化与云端存储能力,支持本地/云端无缝切换。该库采用 MIT License 开源,优点是易用、轻量、兼容主流 AI 框架,缺点是在超大规模离线数据集上性能略逊于专用分布式框架。

二、Activeloop 安装与环境准备
在使用 Activeloop 之前,我们需要完成库的安装与基础环境配置,支持 Python 3.8 及以上版本,可直接通过 pip 完成安装。
2.1 基础安装
打开命令行工具,执行以下安装命令:
pip install deeplakeActiveloop 的核心功能封装在 deeplake 包中,这是官方推荐的安装方式,安装过程会自动依赖 numpy、pandas 等基础数据处理库。
2.2 验证安装
安装完成后,可通过简单代码验证是否安装成功:
import deeplake
# 打印库版本
print("Activeloop (deeplake) 版本:", deeplake.__version__)运行代码后,若正常输出版本号,说明环境配置完成,可进入后续功能使用。
三、Activeloop 核心功能与基础使用
Activeloop 核心围绕数据集创建、数据写入、数据读取、数据查询、向量存储五大功能展开,面向 AI 开发者屏蔽底层存储细节,专注数据本身。
3.1 创建本地数据集
数据集是 Activeloop 的核心载体,支持文本、图片、向量、标签等多种数据类型,创建方式简洁直观。
import deeplake
import numpy as np
# 创建本地数据集,路径为当前目录下的 my_first_dataset
ds = deeplake.dataset("./my_first_dataset")
# 定义数据集结构:文本数据、向量数据、标签
ds.create_tensor("text", htype="text")
ds.create_tensor("embedding", htype="embedding")
ds.create_tensor("label", htype="class_label")
print("数据集创建完成,结构如下:")
print(ds.tensors)代码说明:
deeplake.dataset()用于创建/加载数据集,传入本地路径则生成本地数据集;create_tensor()定义数据列,htype指定数据类型,适配 AI 场景常用格式;- 执行后会在指定路径生成数据集文件夹,包含数据与元信息。
3.2 向数据集写入数据
创建完数据集结构后,可批量写入文本、向量、标签等数据,模拟大模型训练或检索场景的原始数据。
# 构造模拟数据
text_list = [
"Python 是一门优雅易用的编程语言",
"Activeloop 适合管理大模型数据集",
"向量数据库是 RAG 系统的核心组件",
"深度学习需要高质量标注数据"
]
# 生成模拟 768 维嵌入向量(适配大模型通用维度)
embedding_list = [np.random.rand(768) for _ in range(4)]
label_list = [0, 1, 1, 0]
# 批量写入数据集
with ds:
ds.text.extend(text_list)
ds.embedding.extend(embedding_list)
ds.label.extend(label_list)
print("数据写入成功,数据集样本数:", len(ds))代码说明:
- 使用
with ds:上下文管理器保证数据写入原子性,避免中途出错导致数据损坏; extend()用于批量添加数据,适配列表、numpy 数组等格式;- 写入后可通过
len(ds)查看数据集总样本数。
3.3 读取数据集数据
Activeloop 支持索引读取、遍历读取、条件读取,操作方式与列表、DataFrame 高度相似,降低学习成本。
# 按索引读取单条数据
sample = ds[0]
print("第一条数据文本:", sample.text.data())
print("第一条数据向量形状:", sample.embedding.shape)
print("第一条数据标签:", sample.label.data())
# 遍历所有数据
print("\n===== 遍历全部数据 =====")
for i, sample in enumerate(ds):
print(f"样本 {i}:")
print(f"文本:{sample.text.data()}")
print(f"标签:{sample.label.data()}\n")代码说明:
- 直接通过索引
ds[i]获取第 i 条样本; data()方法提取原始数据,避免返回封装对象;- 遍历方式与 Python 列表一致,无需复杂语法。
3.4 条件查询数据
Activeloop 内置轻量查询引擎,支持按标签、数值等条件筛选数据,满足 AI 数据预处理需求。
# 查询标签为 1 的所有样本
filtered_ds = ds[ds.label == 1]
print("标签为 1 的样本数量:", len(filtered_ds))
for sample in filtered_ds:
print("筛选文本:", sample.text.data())代码说明:
- 支持
==、!=、>、<等常规比较运算符; - 筛选后返回新的数据集视图,不占用额外内存;
- 适合大模型训练前的数据过滤与采样。
四、Activeloop 向量存储与 RAG 场景实战
向量存储是 Activeloop 的核心亮点,可直接作为轻量级向量数据库使用,适配 RAG(检索增强生成)场景,无需额外部署复杂数据库。
4.1 向量数据写入与检索
# 重新创建向量专用数据集
rag_ds = deeplake.dataset("./rag_embedding_dataset")
rag_ds.create_tensor("content", htype="text")
rag_ds.create_tensor("vector", htype="embedding")
# 写入文档与对应向量
documents = [
"豆包是字节跳动自研的人工智能助手",
"Activeloop 可用于构建 RAG 系统的向量库",
"Python 广泛应用于 AI 与数据科学领域",
"RAG 系统通过检索提升大模型回答准确性"
]
# 生成模拟向量
vectors = [np.random.rand(128) for _ in range(4)]
with rag_ds:
rag_ds.content.extend(documents)
rag_ds.vector.extend(vectors)
# 模拟查询向量并计算相似度
query_vector = np.random.rand(128)
scores = []
for sample in rag_ds:
vec = sample.vector.data()
# 余弦相似度简化计算
similarity = np.dot(query_vector, vec) / (np.linalg.norm(query_vector) * np.linalg.norm(vec))
scores.append(similarity)
# 获取最相似的文档
best_idx = np.argmax(scores)
print("\n最匹配的文档:", rag_ds[best_idx].content.data())
print("匹配相似度:", round(scores[best_idx], 4))代码说明:
- 该示例完整模拟 RAG 系统中文档入库→向量存储→相似度检索流程;
- 无需依赖 Pinecone、Chroma 等外部向量库,单机即可运行;
- 适合个人开发者、小型项目快速搭建检索系统。
4.2 与大模型嵌入接口结合
Activeloop 可无缝对接 OpenAI、文心一言、豆包等大模型的嵌入接口,实现真实向量生成与存储。
# 模拟调用大模型生成嵌入向量(可替换为真实 API)
def mock_get_embedding(text: str) -> np.ndarray:
return np.random.rand(128)
# 构建真实场景数据集
qa_ds = deeplake.dataset("./qa_dataset")
qa_ds.create_tensor("question", htype="text")
qa_ds.create_tensor("answer", htype="text")
qa_ds.create_tensor("q_embedding", htype="embedding")
qa_pairs = [
{"q": "Activeloop 是什么", "a": "Activeloop 是 Python 数据集与向量管理库"},
{"q": "如何安装 deeplake", "a": "使用 pip install deeplake 安装"},
{"q": "RAG 全称是什么", "a": "RAG 全称是 Retrieval Augmented Generation"}
]
with qa_ds:
for pair in qa_pairs:
q_emb = mock_get_embedding(pair["q"])
qa_ds.question.append(pair["q"])
qa_ds.answer.append(pair["a"])
qa_ds.q_embedding.append(q_emb)
print("问答数据集构建完成,样本数:", len(qa_ds))代码说明:
- 将
mock_get_embedding替换为真实模型接口,即可生成工业级向量库; - 数据集同时存储问题、答案、向量,形成完整 RAG 数据链路。
五、Activeloop 云端数据集使用
Activeloop 支持云端存储,实现多设备、多开发者共享数据集,无需手动传输文件。
5.1 登录与云端数据集创建
首先在命令行登录 Activeloop 账号:
deeplake login按照提示输入用户名与密码,登录成功后即可创建云端数据集。
# 创建云端数据集(需登录)
# cloud_ds = deeplake.dataset("hub://用户名/my_cloud_dataset")
# 后续读写操作与本地数据集完全一致
# with cloud_ds:
# cloud_ds.text.extend(["云端数据测试"])代码说明:
- 路径以
hub://开头表示云端数据集; - 读写 API 与本地完全一致,实现本地/云端无缝切换;
- 适合团队协作、跨设备开发。
六、与 PyTorch/TensorFlow 框架对接
Activeloop 原生支持深度学习框架,可直接转换为框架可读取的数据集,简化训练数据加载流程。
# 转换为 PyTorch DataLoader
from torch.utils.data import DataLoader
# 构建适合训练的数据集
train_ds = deeplake.dataset("./train_dataset")
train_ds.create_tensor("image", htype="image")
train_ds.create_tensor("target", htype="class_label")
# 模拟图像数据
for i in range(10):
train_ds.image.append(np.random.rand(28, 28, 3))
train_ds.target.append(np.random.randint(0, 2))
# 转换为 PyTorch 数据集
pytorch_ds = train_ds.pytorch(batch_size=2, shuffle=True)
dataloader = DataLoader(pytorch_ds, batch_size=None)
# 读取训练批次
for batch in dataloader:
print("图像批次形状:", batch["image"].shape)
print("标签批次:", batch["target"])
break代码说明:
- 通过
pytorch()方法直接生成适配框架的数据格式; - 支持 shuffle、batch_size、num_workers 等训练参数;
- 大幅减少数据预处理与格式转换代码量。
七、实际应用案例:简易智能问答系统
结合前面所有知识点,构建一个可直接运行的轻量级智能问答系统,完整体现 Activeloop 的实用价值。
import deeplake
import numpy as np
# 1. 构建知识库数据集
kb_ds = deeplake.dataset("./knowledge_base")
kb_ds.create_tensor("question", htype="text")
kb_ds.create_tensor("answer", htype="text")
kb_ds.create_tensor("embed", htype="embedding")
# 知识库内容
knowledge = [
{"q": "Python 有哪些常用数据结构", "a": "列表、字典、元组、集合、堆、队列等"},
{"q": "Activeloop 能做什么", "a": "管理数据集、存储向量、构建 RAG、对接深度学习框架"},
{"q": "如何读取 deeplake 数据", "a": "通过索引 ds[i] 或遍历读取,使用 data() 获取原始数据"},
{"q": "deeplake 支持云端吗", "a": "支持,使用 hub:// 路径创建云端数据集"}
]
# 写入数据
with kb_ds:
for item in knowledge:
embed = np.random.rand(128)
kb_ds.question.append(item["q"])
kb_ds.answer.append(item["a"])
kb_ds.embed.append(embed)
# 2. 定义检索函数
def search_answer(user_query: str) -> str:
query_embed = np.random.rand(128)
max_sim = -1
best_ans = ""
for sample in kb_ds:
sim = np.dot(query_embed, sample.embed.data()) / (
np.linalg.norm(query_embed) * np.linalg.norm(sample.embed.data())
)
if sim > max_sim:
max_sim = sim
best_ans = sample.answer.data()
return best_ans
# 3. 模拟用户提问
if __name__ == "__main__":
user_query = "如何读取 deeplake 里面的数据"
answer = search_answer(user_query)
print("用户问题:", user_query)
print("系统回答:", answer)该案例可直接部署在本地,作为小型客服机器人、文档问答助手使用,代码简洁、依赖少、启动快,充分体现 Activeloop 在 AI 小项目中的高效性。
相关资源
- Pypi地址:https://pypi.org/project/deeplake/
- Github地址:https://github.com/activeloopai/deeplake
- 官方文档地址:https://docs.activeloop.ai/
关注我,每天分享一个实用的Python自动化工具。

