lance-format

🗄️ 多模态 AI 列式湖仓格式官方参考

Lance v9 开源多模态 AI 列式存储格式官方参考,涵盖 Rust crate 工作空间、文件/表格式、索引系统、事务并发与版本控制,适用于直接集成 lance crate 构建数据湖仓。

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

使用说明

核心定位

Lance 是面向多模态 AI 的开源列式数据格式,宣称随机访问性能比 Parquet 快 100 倍。它并非单一格式,而是可互操作的规范栈:文件格式、表格式、索引格式、目录规范和命名空间客户端规范。本技能追踪 v9.0.0-beta.18 开发前沿,涵盖 lance-format/lance Rust 工作空间(25+ crate)及 Python/Java 绑定。

显著优点

1. 分层架构清晰:从底层 lance-encoding(结构化编码)到 lance-table(表格式)、lance-index(索引)、lance-io(对象存储),职责分明,可直接按需链接 crate。

2. 多模态原生支持:FixedSizeList 向量列、bfloat16、图像类型、JSON/Blob 类型、地理空间扩展,AI 工作流开箱即用。

3. 丰富索引生态:向量索引(IVF_PQ/HNSW/IVF_RQ/RaBitQ 等)、标量索引(BTree/Bitmap/Bloom/LabelList/N-gram/FM-Index)、全文检索(BM25/tokenizers)、R-Tree 地理索引,覆盖从近似最近邻到子串/正则匹配的全场景。

4. Lakehouse 特性完整:时间旅行(time-travel)、分支/标签、schema 演化(零拷贝增删改列)、稳定 Row ID、MemWAL 流式写入、乐观并发控制(OCC)与自定义 commit handler(条件写入/DynamoDB)。

5. 性能导向设计:文件格式 2.1(默认)支持自适应结构化编码、更好的整数/字符串压缩;远程存储优化遵循「最小化远程调用」原则而非调参。

潜在局限

  • API 仍在演进:v9 虽与 v8 结构相似,但存在破坏性变更(Python 3.9 废弃、alter_columns 索引约束变更、FM-Index proto 重命名),需 pin 明确 tag 而非 main。
  • 实验性功能风险:2.2/2.3 格式版本不稳定,Map 类型、Blob v2、VariablePackedStruct 等编码可能变更。
  • 学习曲线陡峭:25 crate 工作空间、15 种事务操作、复杂的版本/分支/namespace 模型,直接集成需深入理解内部机制。
  • 生态绑定 Rust/Arrow:深度依赖 Arrow 58、DataFusion 53,与其他数据处理框架集成需适配层。

适用人群

  • 底层数据系统开发者:需在 Rust/Python 中直接操作 .lance 数据集、实现自定义 commit handler 或存储后端。
  • AI/ML 工程团队:构建向量数据库、多模态数据湖,需要高性能随机访问和丰富索引。
  • LanceDB 深度用户:理解其底层存储机制以优化性能或调试问题。

常规风险

  • 版本锁定敏感:文件格式版本在创建时固定,变更需重写数据集;next 别名指向 2.3,生产环境应显式指定版本。
  • 并发冲突:OCC retry 默认 20 次,高冲突场景需自定义 commit handler(如 DynamoDB 协调)。
  • 对象存储成本:默认配置已优化,不当的 LANCE_IO_THREADS 或压缩元数据调参可能反而增加远程调用和成本。
  • 索引兼容性:v9 中 FTS 默认格式升为 v2,旧版读取器需显式指定 format_version=1

lance-format 内容

references文件夹
docs文件夹
format文件夹
file文件夹
index文件夹
scalar文件夹
system文件夹
vector文件夹
table文件夹
guide文件夹
integrations文件夹
quickstart文件夹
手动下载zip · 239.5 kB
encoding.mdtext/markdown
请选择文件