搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

lance-format/lance

数据

面向多模态 AI 的开源湖仓格式,把向量检索、随机访问和版本管理整合到对象存储之上。

7,295
937
Rust
Apache-2.0
创建于 4 年前

项目介绍

Lance 是一个面向多模态 AI 的开源湖仓格式,包含文件格式、表格式和 catalog 规范,可以直接在对象存储之上搭出完整的湖仓。仓库提供 Rust 核心实现,以及 Python(PyO3)和 Java(JNI)绑定。

它适合需要在同一份数据上做向量相似度检索、BM25 全文检索和 SQL 分析,或需要高速随机访问做训练与采样,或要把图片、视频、音频、文本和 embedding 统一存放的团队。与主要面向 SQL 分析的 Parquet、Iceberg、Delta Lake 不同,Lance 把 AI 所需的能力内置进格式:支持带默认值回填的加列而不重写整张表,也支持带 ACID 事务、时间旅行、标签和分支的版本管理。

快速上手

安装 Python 包:

pip install pylance

用 lance.write_dataset 把已有 Parquet 数据写成 Lance 数据集,再通过 Arrow 的 dataset 接口读回:

import lance
import pyarrow.dataset

parquet = pyarrow.dataset.dataset("/tmp/test.parquet", format="parquet")
lance.write_dataset(parquet, "/tmp/test.lance")
dataset = lance.dataset("/tmp/test.lance")
df = dataset.to_table().to_pandas()

数据集也可以用 DuckDB 查询。做向量检索时,先把向量写入 Lance 数据集,调用 create_index 并指定 index_type="IVF_PQ",再给 to_table 传入 nearest 参数取 top-k 近邻。README 用 SIFT1M 数据走通了完整流程。更详细的用法见格式规范和文档站。

使用约束

格式由每个数据集里存储的 data_storage_version 标识,稳定版本是长期的读取兼容承诺;next 别名不稳定,只能用于实验,不能写入生产数据。SDK 和 API 的变更按语义化版本管理,与文件格式稳定性相互独立。混用多个 Lance 版本时,应固定 data_storage_version 以保证写入结果确定。

存储后端由数据集路径的 URI scheme 自动选择:本地文件系统、S3 及 S3 兼容存储、Azure Blob 与 ADLS Gen2、GCS、阿里云 OSS、腾讯云 COS、火山引擎 TOS、Hugging Face Hub、GooseFS,以及仅供测试的内存后端。除 Python 外还有 Rust 和 Java 可用,生态集成覆盖 Arrow、Pandas、Polars、DuckDB、Spark、Ray、Trino、Flink 和多个开放 catalog。凭证和各存储的配置项见对象存储配置文档。项目处于活跃开发阶段,许可证为 Apache-2.0。

HotRepo 点评

在 2026 年 11 月 14 日的 Rust 日榜中,项目当天新增 6 个 Star,位列该语言榜第 8。这只是单次快照,只能说明当天的排名,不足以判断趋势。更有分量的信号来自仓库本身的完整度:公开的格式规范、存储版本兼容承诺,以及 Rust、Python、Java 三套绑定。评估采用时,应先读版本规则再写生产数据,因为选定的存储版本就是后续版本承诺持续支持的对象。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

Hacker News 讨论

相关推荐

  1. pandas-dev/pandasPython 的标签化数据结构库,用于数据清洗、分组、合并、重塑和时间序列分析。Python50,382
  2. rerun-io/rerun开源 SDK 与查看器,用于记录、可视化和查询机器人及传感器多模态时序数据。Rust11,710
  3. hugues31/duckpad面向 DuckDB 的自托管 SQL 工作区,用可视化流水线组织数据,并追溯每个结果对应的来源行。TypeScript267