lance-format

🗄️ Lance v7 多模态列式格式技术参考

面向 Rust/Python 开发者的 Lance v7 列式多模态数据格式技术参考,涵盖文件/表/索引格式、MemWAL 流式写入、OCC 并发控制及完整 crate 工作空间。

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

使用说明

概述

Lance 是面向多模态 AI 的开源列式数据湖格式,定位为"随机访问速度比 Parquet 快 100 倍的列式格式"。该技能 (lance-format) 提供 Lance v7 技术规范的完整参考,而非构建于其上的 LanceDB 数据库产品。

核心用法

直接使用 Rust crate 工作空间(24 个 crate),主要入口包括:

  • lance - 公共 API(Dataset、扫描器、索引、提交)
  • lance-table - 表格式(manifest、提交处理器、稳定行 ID)
  • lance-file / lance-encoding - 文件格式与结构化编码
  • lance-index - 向量/标量/全文/地理空间索引
  • lance-io - 对象存储抽象与 I/O 调度
  • lance-namespace - 命名空间与目录服务

关键特性

  • 文件格式版本:2.1(默认稳定版)、2.2(next 实验版)
  • MemWAL 架构:LSM + WAL 实现高吞吐流式写入
  • OCC 乐观并发控制:带重试/变基的提交处理器(条件 PUT、DynamoDB)
  • 完整索引生态:IVF/HNSW/PQ/SQ/RQ 向量索引、RTree 地理索引、BM25 全文搜索
  • 版本控制:Git 风格的分支与标签、时间旅行查询、零拷贝 schema 演进

显著优点

  • 性能优势:专为嵌套数据随机访问和 ML 工作负载优化,避免 Parquet 的行组开销
  • 多模态原生:FixedSizeList 向量、Blob v2、图像/BFloat16 ML 扩展类型
  • 云原生:对象存储优先设计,支持 S3/GCS/Azure/内存/本地等 URI 方案
  • 生态集成:DuckDB、Polars、Ray、Spark、PyTorch、DataFusion 直接消费
  • 版本化数据管理:轻量级快照、稳定行 ID、变更数据捕获

潜在局限

  • API 稳定性:v7 仍处于 beta 阶段,beta 标签数日一更,编码格式可能变化
  • 学习曲线:24 crate 的分层架构需要理解内部边界(如 lance-encoding 非外部使用)
  • 功能边界:需明确区分 Lance 格式引擎与 LanceDB 产品功能(如嵌入注册表、重排序器为后者专有)
  • 格式锁定data_storage_version 创建后固定,版本升级需重写数据集

适合人群

  • 基础设施工程师:直接集成 lance crate 构建数据湖、特征存储、ML 训练管道
  • AI/ML 平台开发者:需要原生向量搜索 + 结构化数据混合存储的嵌入式引擎
  • 数据库内核开发者:研究列式格式、LSM-Tree、乐观并发控制实现

常规风险

  • 版本漂移:引用 main 分支而非固定 tag 可能遭遇格式不兼容;需锁定 v7.1.0-beta.2 或显式版本号
  • 实验功能误用next 格式版本(2.2)和 MemWAL 标记为实验性,生产环境建议 stable
  • 并发冲突:OCC 下高冲突场景需正确配置重试策略和提交处理器
  • 命名空间混淆:技能明确排除 LanceDB 产品功能,误用可能导致架构设计偏差

该技能是 Lance 格式的权威技术参考,非 LanceDB 使用指南。

lance-format 内容

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