lance-format

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

Lance v9 开放列式湖仓格式参考,专为多模态 AI 设计,支持 100 倍于 Parquet 的随机访问性能,涵盖 25 个 Rust crate、多种索引类型及 OCC 并发控制

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

使用说明

核心用法

Lance 是一个专为多模态 AI 设计的开源列式湖仓格式,核心定位是「比 Parquet 快 100 倍的随机访问」。它并非单一格式,而是由文件格式、表格式、索引格式、目录规范、命名空间客户端规范组成的技术栈。

本技能聚焦 lance-format/lance 仓库(v9.0.0-beta.16),覆盖 25 个 Rust crate 的完整工作空间:

  • 入口 crate: lance —— 提供 Dataset、扫描器、索引、提交等公开 API
  • 核心分层: lance-table(表格式/清单/提交句柄)、lance-file(文件读写)、lance-encoding(结构化编码)、lance-index(标量/向量/全文索引)、lance-io(对象存储/I/O 调度)

关键使用场景

  • 直接链接 lance crate 创建/读取 .lance 数据集
  • 操作 manifest、fragment、deletion file 的 2.x 文件格式
  • 构建 IVF_PQ、IVF_HNSW、IVF_RQ、RaBitQ、FM-Index、全文检索等索引
  • 使用 MemWAL 流式写入、乐观并发控制(OCC)重试与自定义 commit handler
  • 模式演进(schema evolution)、版本时间旅行(time-travel)、标签与分支管理

与 LanceDB 的区别:Lance 是格式/引擎层(本技能覆盖),LanceDB 是基于其上的数据库产品(查询构建器、嵌入注册表、云服务),不在此覆盖。

显著优点

1. 极致随机访问性能:针对 ML 工作负载优化,100x Parquet 随机访问速度
2. 原生多模态支持:FixedSizeList 向量、JSONB、Blob、图像类型、bfloat16 等 ML 扩展类型

3. 丰富索引生态:向量(IVF/HNSW/PQ/SQ/RQ/多 bit RQ)、标量(BTree/Bitmap/Bloom/LabelList/Ngram/Zonemap/FM-Index)、全文(BM25/ICU 分词)、地理(RTree)

4. 企业级并发控制:15 种事务操作、OCC 重试/变基、条件提交、DynamoDB 等外部 commit handler

5. 灵活版本管理:稳定行 ID、manifest 版本化、time-travel 查询、标签与分支

6. 流式写入架构:MemWAL 分片、Appender/Tailer/Flusher 模型、 fencing 机制

潜在缺点与局限性

1. API 稳定性:v9 为 beta 阶段(v9.0.0-beta.16),格式编码可能变化;v8.0.0(2026-07-01 发布)为稳定替代
2. 文件格式锁定data_storage_version 创建后固定,变更需重写数据集

3. 实验性功能风险:2.2/2.3 版本不稳定(Map 类型、Blob v2、VariablePackedStruct 编码可能变动)

4. Python 版本要求:v9 起最低 Python 3.10(3.9 已弃用)

5. 索引兼容性:v9 中 FM-Index proto 重命名导致旧索引不可读;FTS 默认升级为 v2 格式

6. breaking change 累积alter_columns 带索引列强制先 drop_indexas_vector_index API 移除

适合人群

  • 构建 AI/ML 数据管道的 Rust/Python 开发者
  • 需要直接操作湖仓存储层的系统工程师(DuckDB/Polars/Ray/Spark/PyTorch/DataFusion 集成场景)
  • 实现自定义 commit handler、分布式索引构建、流式写入的高级用户
  • 评估替代 Parquet/Iceberg/Delta Lake 的列式存储方案的技术决策者

常规风险

| 风险类别 | 具体说明 |
|---------|---------|
| 版本漂移风险 | beta 标签频繁发布(数日一次),行号引用漂移,生产环境应显式 pinned 到 tag 而非 `main` |
| 格式兼容性 | `next` 别名指向 2.3,实验性编码不稳定;跨版本数据集读写可能失败 |
| 索引失效 | v9 breaking change 导致 FM-Index 和旧 FTS v1 索引需重建或显式降级 |
| 并发冲突 | OCC 重试默认 20 次,高冲突场景需自定义 `CommitConfig` 或外部协调 |
| 对象存储依赖 | S3/GCS/Azure/MinIO/TOS/GooseFS 等后端配置复杂,credential 管理不当易泄露 |
| API 迁移成本 | Rust 2024 edition、Arrow 58、DataFusion 53 升级带来编译器版本要求(Rust 1.91+)|

lance-format 内容

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