lance-format

🗄️ 多模态 AI 的高性能列式湖仓

Lance v9 是面向多模态 AI 的开源列式湖仓格式,提供比 Parquet 快 100 倍的随机访问性能,支持向量/标量/全文/地理索引、MemWAL 流式写入、乐观并发控制和时间旅行等高级特性。

收藏
4.2k
安装
994
版本
0.8.0
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心定位与架构

Lance 是一个面向多模态 AI 的开源列式数据格式,核心承诺是"比 Parquet 快 100 倍的随机访问速度"。它并非单一格式,而是一套互操作规范栈:文件格式、表格式、索引格式、目录规范和命名空间客户端规范。Rust 工作空间 lance-format/lance 完整实现了这些规范,并提供 Python (pylance) 和 Java 绑定。

本技能追踪 v9.0.0-beta.10(开发前沿),如需稳定版本建议锁定 v8.0.0 系列。v9 是轻量级主版本 bump,核心变化:Python 最低版本提升至 3.10+,alter_columns 对带索引列的强制前置 drop_index,以及 FM-Index proto 重命名导致旧索引不可读。

显著优势

1. 极致随机访问性能:专为 ML 工作负载设计,避免 Parquet 的行组扫描开销
2. 丰富的索引生态:向量索引(IVF_PQ、IVF_HNSW、IVF_RQ、RaBitQ)、标量索引(BTree、Bitmap、Bloom、LabelList、N-gram、Zonemap、FM-Index)、全文检索(BM25)、地理/RTree 索引

3. 原生多模态支持:FixedSizeList 向量、bfloat16、图像类型、Blob 编码、JSONB

4. 企业级特性:MemWAL 流式写入、乐观并发控制(OCC)重试、多版本时间旅行、schema 演进、稳定行 ID

5. 模块化 crate 架构:25 个 crate 清晰分层,从 lance-io 对象存储到 lance-index 索引实现,可按需依赖

局限性与风险

  • 格式版本锁定:数据集一旦创建,存储版本固定(默认 2.1,实验性 2.2/2.3),变更需重写
  • API 稳定性:v9 处于 beta 阶段,proto 变更(如 FM-Index)可导致数据不兼容
  • 生态锁定:深度绑定 Arrow/DataFusion 版本(Arrow 58 / DataFusion 53),升级需同步
  • 学习曲线:25 crate 工作空间、复杂的索引调参、OCC 冲突处理需要理解内部机制
  • 非通用 OLAP:专为 ML 随机访问优化,批量扫描场景不如 Parquet

适合人群

  • 构建多模态 AI 数据管道的 Rust/Python 开发者
  • 需要向量+标量+全文混合检索的 RAG 应用架构师
  • 对延迟敏感的在线推理服务(需快速单点查询)
  • 使用 DuckDB/Polars/Ray/Spark 直接消费 Lance 格式的数据工程师

常规风险

  • 版本漂移:beta 标签频繁发布,需显式锁定 tag 而非跟踪 main
  • 索引重建成本:schema 变更或格式升级可能触发昂贵重索引
  • 对象存储配置复杂性:S3/GCS/Azure/MinIO/TOS/GooseFS 等多后端,配置参数分散
  • 并发冲突:OCC 模式下高写入冲突场景需实现重试逻辑

关键区分:本技能针对底层 lance-format/lance 格式引擎,非 lancedb/lancedb 数据库产品。若使用 lance crate 直接编程,或需要理解 DuckDB/Polars 如何读取 .lance 文件,使用本技能。

lance-format 内容

references文件夹
手动下载zip · 50.0 kB
lance-reference.mdtext/markdown
请选择文件