把向量检索、全文检索和 SQL 分析放在同一份数据集上,是 Lance 这门开源湖仓格式的核心设计。它由 lance-format 组织维护,采用 Apache-2.0 许可,GitHub star 数约 7k,最新稳定版本 v11.0.0 于 2026 年 8 月 30 日发布。对正在搭建 AI 数据管线的团队来说,它提供了一个把「AI 能力直接做进存储格式」的选项。
传统湖仓格式在 AI 工作负载上的缺口
Parquet、Iceberg、Delta Lake 这些格式都是为 SQL 分析设计的。它们处理扫描和聚合很高效,但 AI 工作负载常见的需求——按向量相似度检索、按 ID 随机取样本、在同一个数据集里同时做向量搜索和全文搜索——它们都需要额外接一套专用系统才能完成。
Lance 的做法是把这些能力收进格式本身:数据集就是索引,不需要再维护一份独立的向量库或检索服务。
五项核心能力
Lance 的 README 明确列出了它的关键特性:
- 混合检索:向量相似度搜索、BM25 全文检索、SQL 分析可以作用于同一份数据,配合加速二级索引;
- 快速随机访问:官方宣称随机访问比 Parquet 或 Iceberg 快约 100 倍,扫描性能不牺牲;
- 原生多模态存储:图像、视频、音频、文本和 embedding 以统一格式存储,采用 blob 编码和惰性加载;
- 数据演进:新增列支持回填,不需要全表重写,适合机器学习特征工程;
- 零拷贝版本管理:自带 ACID 事务、time travel、标签和分支,不需要额外基础设施。
基准数据
项目公开了两组可复现的基准。在 SIFT 数据集(100 万条 128 维向量)上,100 条随机查询向量的平均响应时间小于 1ms,测试环境是 2023 款 M2 MacBook Air。与 Parquet 的对比测试使用 Oxford Pet 数据集:批量随机访问比 Parquet 和原始文件快约 100 倍,分析类查询比直接读原始元数据快 50 到 100 倍。
生态与集成
Lance 的核心实现是 Rust(占代码量 78.8%),提供 Python 和 Java 绑定,安装方式为 pip install pylance。它兼容 Apache Arrow、Pandas、Polars、DuckDB、Spark、Ray、Trino 和 Flink,并支持 Polaris、Unity Catalog、Gravitino 等开放目录。项目已有 5085 次提交、277 位贡献者,约 6.7k 个仓库依赖它,累计发布 609 个 release。
格式稳定性承诺
Lance 版本发布频繁,但文件格式本身由数据集内存储的 data_storage_version 标识。官方承诺:数据集一旦以稳定存储版本写入,后续版本会持续支持读取。混用新旧版本时,建议固定 data_storage_version 以保证写入一致;SDK 的 API 兼容性则独立按语义化版本管理。
什么场景适合选 Lance
如果你的数据包含图像、视频、文本或 embedding,并且检索模式是「向量搜索 + 全文搜索 + 分析查询」混合出现,Lance 把这三者统一在一份数据上的设计能减少一套独立的向量检索系统。反过来,如果工作负载是纯 SQL 分析,传统格式依然是成熟稳妥的选择。Lance 的定位很明确:它服务的是 AI 数据管线,而不是通用数仓。