You need to enable JavaScript to run this app.
文档中心
AI 数据湖服务

AI 数据湖服务

复制全文
下载 pdf
Lance
Lance 概述
复制全文
下载 pdf
Lance 概述

什么是Lance

Lance 是一种专为大规模 AI 数据集设计的现代化列式数据格式。它类似于 Parquet,但针对多模态数据(如图像、视频、音频、点云及传统表格数据)的存储和访问进行了深度优化。Lance 支持与 POSIX 兼容的Linux文件系统以及主流云对象存储(火山引擎 TOS),使其成为构建统一 AI 数据湖的理想基础。
Image
Lance 格式的核心在于其高效的文件结构,它由三层逻辑构成:

  1. 文件格式层: 自主研发的底层存储格式,能够高效地存储和随机访问大规模、多模态的数据。
  2. 数据湖格式层: 类似于 Apache® Iceberg,提供了强大的数据湖管理功能,如原子事务、多版本控制,以离线引擎访问为主,不支持流引擎的写入,AI场景目前也不适用。

    Apache Gravitino, the names of other Apache projects, and the ASF logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries.

  3. 应用层: Lance支持多种方式接入,可以使用单机的SDK操作,例如PyLance,也可以通过分布式的引擎,例如Spark和Ray进行读写Lance数据,甚至能够通过lancedb的接口,将lance当做向量数据库使用。

Lance可以做什么

主要特点

Lance 的主要功能包括:

  • 高性能随机访问:针对单条数据,take 操作性能较 Parquet 提升 10 倍以上。
  • 向量搜索:索引支持毫秒级最近邻居查找,并实现标量查询与向量搜索的结合。
  • 零拷贝、自动版本控制:自动管理数据版本,并使用内置的零拷贝逻辑减少冗余。
  • 生态系统集成: Apache® Arrow、DuckDB 以及更多正在开发中。

    Apache Arrow, the names of other Apache projects, and the ASF logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries.

解决的核心问题 (AI 数据集的挑战)

传统的 AI/ML 工作流中,数据集的管理面临诸多挑战,例如:

  • 版本混乱: 训练数据的变更难以追踪,导致模型训练结果无法复现。
  • 访问低效: 对于大规模数据集,特别是包含向量或多媒体文件的数据,随机访问和查询性能低下。
  • 生态割裂: 数据预处理、模型训练和向量搜索等环节通常需要使用不同的工具和数据格式,增加了系统的复杂性和数据冗余。

Lance 通过提供一个统一的平台来解决这些问题,其核心能力包括:

  • 统一管理多模态数据: 将非结构化数据(如图像)和结构化数据(如元数据、标签)存储在同一张表中。
  • 高效的数据版本控制: 自动记录每一次数据变更,确保实验的可复现性。
  • 高性能的查询与搜索: 支持对数据过滤和向量相似度搜索。

核心特性

  • 零拷贝、免索引的数据访问: 读取数据时采用零拷贝技术,避免不必要的数据复制,显著提升 I/O 效率。其独特的格式设计使得随机访问性能比 Parquet 快 100 倍,无需依赖额外的索引。
  • 数据集版本控制与可复现性: 所有的数据写入、更新或删除操作都会自动生成一个新的、不可变的数据集版本。
  • 与生态系统的无缝集成: Lance 与 Apache Arrow 内存格式完全兼容,可以轻松地与 Pandas、DuckDB、Polars 等主流数据科学工具进行数据交换,同时也支持与 Spark、Ray 等大规模分布式计算引擎集成。

架构概览

Lance 格式的内部结构

一个 Lance 数据集在存储上表现为一个目录,其内部主要包含:

  • data/ 目录:存放真实的数据文件(.lance 文件)。
  • _versions/ 目录:存放每个版本的元数据清单(manifest 文件),记录了该版本包含了哪些数据文件。
  • _transactions/ 目录:用于保证写入操作的原子性。
  • _deletions/ 目录:存放删除文件(deletion vectors),用于跟踪已删除的行而无需重写数据文件。
  • _indices/ 目录:当对 Lance 数据创建了索引后,会将索引文件存放在此目录中,每个索引存储在独立的 UUID 子目录中。

数据读写流程

如何使用

如何使用请查看快速入门

最近更新时间:2026.04.13 11:47:40
这个页面对您有帮助吗?
有用
有用
无用
无用