lance-format

🗄️ 多模态 AI 的极速列式数据引擎

Lance v8 开源列式数据格式参考,专为多模态 AI 设计,支持高性能随机访问、向量和全文索引、模式演进及版本控制。

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

使用说明

核心用法

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

本技能针对 v8.0.0-beta.14,包含 25 个 crate 的完整工作空间:

  • 入口 crate: lance(Dataset、扫描器、索引、提交)
  • 核心 crate: lance-table(manifest、提交处理器)、lance-file(文件读写)、lance-encoding(结构编码)、lance-index(各类索引)、lance-io(对象存储)
  • 新增: lance-derive(v8 新增,#[derive(DeepSizeOf)])

文件格式版本

| 版本 | 状态 | 说明 |
|------|------|------|
| 2.0 | stable | 移除 row groups,支持 null |
| **2.1** | **默认 (stable)** | 自适应结构编码、更好的压缩、嵌套随机访问 |
| 2.2 | unstable | Map 类型、Blob v2、VariablePackedStruct |
| 2.3 | unstable (`next`) | 脚手架阶段,无独立编码 |

关键特性

  • 索引: IVF_PQ、IVF_HNSW、IVF_RQ(RaBitQ,v8 支持 1-9 bit)、多 bit RQ、FM-Index(v8 新增,Burrows-Wheeler 子串/前缀/正则搜索)
  • 并发控制: OCC(乐观并发控制)重试/变基、条件提交处理器、DynamoDB 提交处理器
  • 写入模式: MemWAL 流式写入、两阶段分布式提交
  • 数据管理: 模式演进(零拷贝列增删改)、版本控制、时间旅行、标签、分支、稳定行 ID
  • 对象存储: 支持 S3、GCS、Azure、Aliyun OSS、Tencent COS、Volcengine TOS、GooseFS 等

显著优点

1. 极致随机访问性能: 专为 ML 工作负载设计,随机访问远优于 Parquet
2. 原生向量搜索: 内置多种 ANN 索引(IVF_PQ/HNSW/RQ),v8 新增 FM-Index 标量索引

3. 模式演进友好: 字段 ID 机制支持零拷贝列增删改,旧行自动读为 NULL

4. 企业级并发: OCC 重试机制、条件提交处理器、分布式两阶段提交

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

6. 云原生: 深度对象存储集成,支持多种云厂商和 GooseFS 缓存层

潜在缺点与局限性

1. 格式版本锁定: 创建时选择的 data_storage_version 固定不可变,需重写数据集才能变更
2. 实验性功能风险: 2.2/2.3 版本编码可能变化,生产环境建议锁定 2.1

3. v8 破坏性变更:

4. API 稳定性: beta 版本每几天发布,需锁定 tag 而非跟踪 main
5. 语言绑定局限: Python/Java 绑定可能滞后于 Rust 核心功能

  • 移除 IndexSegmentBuilder API
  • Bitmap 索引构建方式完全改变
  • finish() 返回类型变更
  • describe_indices()/list_indices() 行为变更

适合人群

  • ML/AI 工程师: 需要高效向量存储和相似度搜索
  • 数据平台开发者: 构建 Lakehouse 架构,需要列式格式 + 对象存储
  • Rust 开发者: 直接使用 lance crate 构建数据系统
  • 多模态应用开发者: 需要统一存储图像、文本、向量、标量数据

常规风险

| 风险类型 | 说明 | 缓解建议 |
|----------|------|----------|
| 版本兼容性 | beta 版本间格式/编码可能变化 | 锁定 `v8.0.0-beta.14` tag,避免跟踪 main |
| 实验性功能 | 2.2/2.3 编码不稳定 | 生产使用 `stable`(2.1),显式设置版本 |
| 破坏性升级 | v7→v8 索引 API 重大变更 | 仔细迁移索引构建代码,测试 `create_index_uncommitted` 新流程 |
| OCC 冲突 | 高并发写入可能触发重试 | 合理设置 `CommitConfig.num_retries`(默认 20),考虑指数退避 |
| 对象存储一致性 | 最终一致性存储上的提交竞争 | 使用条件提交处理器或 DynamoDB 提交处理器 |

Lance vs LanceDB

关键区分: 本技能覆盖 Lance 格式和引擎(lance-format/lance),而非 LanceDB 数据库产品(lancedb/lancedb)。LanceDB 在 Lance 之上添加查询构建器、嵌入注册表、重排序器 API 和托管云服务。如果直接链接 lance crate,使用本技能;如果问题涉及 LanceDB 内部存储层,本技能仍是格式层面的权威参考。

lance-format 内容

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