跳到内容

使用 Lance 对数据集进行版本控制

Lance 原生支持版本控制,让您可以跟踪随时间的变化。

在本教程中,您将学习如何将新数据追加到现有数据集,同时保留历史版本,以及如何使用版本号或有意义的标签访问特定版本。您还将了解如何利用 Lance 的原生版本控制功能实施适当的数据治理实践。

安装 Python SDK

pip install pylance

设置您的环境

首先,您应该导入必要的库

import shutil
import lance
import numpy as np
import pandas as pd
import pyarrow as pa

向数据集中追加新数据

您可以向现有数据集添加新行,创建一个新版本,同时保留原始数据。以下是如何追加行

df = pd.DataFrame({"a": [10]})
tbl = pa.Table.from_pandas(df)
dataset = lance.write_dataset(tbl, "/tmp/test.lance", mode="append")

dataset.to_table().to_pandas()

覆盖您的数据集

您可以用新数据完全替换您的数据集,创建一个新版本,同时保持旧版本可访问。

以下是如何覆盖数据并创建新版本

df = pd.DataFrame({"a": [50, 100]})
tbl = pa.Table.from_pandas(df)
dataset = lance.write_dataset(tbl, "/tmp/test.lance", mode="overwrite")

dataset.to_table().to_pandas()

访问之前的数据集版本

您还可以检查哪些版本可用,然后访问数据集的特定版本。

使用此请求列出数据集的所有版本

dataset.versions()

您也可以访问任何可用版本

# Version 1
lance.dataset('/tmp/test.lance', version=1).to_table().to_pandas()

# Version 2
lance.dataset('/tmp/test.lance', version=2).to_table().to_pandas()

标记您的重要版本

为重要版本创建命名标签,使通过有意义的名称引用特定版本变得更容易。要为相关版本创建标签,请执行此操作

dataset.tags.create("stable", 2)
dataset.tags.create("nightly", 3)
dataset.tags.list()

标签可以像版本一样被签出

lance.dataset('/tmp/test.lance', version="stable").to_table().to_pandas()

后续步骤

现在您已经掌握了使用 Lance 进行数据集版本控制,请查看 使用 Lance 进行向量索引和向量搜索。您可以学习如何在 Lance 表上构建高性能的向量搜索功能。

这将教您如何为您的版本化数据集构建快速、可扩展的搜索功能。