[AI湖仓/多模态/向量存储] Lance + LanceDB = 面向多模态 AI 的开源湖仓格式 + 嵌入式向量数据库
0 序
调研日期:2026-09-09
调研方法:官方文档 / GitHub / PyPI / 公开报道交叉核验
定位:Lance 是一套"为多模态 AI 而生"的开源湖仓格式(文件格式 + 表格式 + 目录规范),LanceDB 是构建在 Lance 之上的多模态 AI 数据平台(嵌入式向量检索库 + 云端/企业版湖仓),二者共享同一存储格式,可无缝互操作。
报告速览
| 维度 | Lance(格式) | LanceDB(数据库/平台) |
|---|---|---|
| 仓库 | lance-format/lance(原 lancedb/lance) | lancedb/lancedb |
| 定位 | 开源湖仓格式(file + table + catalog spec) | 多模态 AI lakehouse / 嵌入式检索库 |
| 语言 | Rust 核心 + Python/Java 绑定 | Rust 核心 + Python/TypeScript/Rust SDK |
| 许可证 | Apache-2.0 | Apache-2.0 |
| 首次创建 | 2022-07-07 | 2023-02-28 |
| Star / Fork(2026-09-09) | 7,055 / 842 | 11,388 / 1,047 |
| 最新稳定版 | pylance 10.0.0(2026-08-08);Rust crate v12.x 线 | lancedb 0.37.1(2026-08-10),0.39.0-beta 线 |
| 官网 | https://lance.org | https://lancedb.com / https://docs.lancedb.com |
| 商业化 | 开放中立格式(LanceDB Inc. 主导维护) | OSS 免费 + LanceDB Cloud(公有测试版)+ LanceDB Enterprise |
1 概述
产品介绍
1.1.1 产品定位
- Lance 是 "The Open Lakehouse Format for Multimodal AI"——一套开源湖仓格式栈,包含文件格式(file format)、表格式(table format)和目录规范(catalog spec)三层,允许在对象存储之上构建完整的湖仓,支撑 AI 工作流:
混合检索(向量 + 全文 + SQL)、特征工程、模型训练、多模态数据(图片/视频/音频/文本/Embedding)管理。
README 的口号是:"Convert from Parquet in 2 lines of code for 100x faster random access, vector index, and data versioning"。
-
LanceDB 是 "The Multimodal AI Lakehouse"——定位为 AI 团队"一个数据层搞定全部 AI 数据生命周期"的平台:数据整理(curation)、特征工程(feature engineering)、检索(search & retrieval)、模型训练(training)围绕同一份数据展开。它既是嵌入式、无服务器(serverless)的向量检索库(进程内运行、直连本地磁盘或对象存储),也提供 LanceDB Cloud(托管服务)与 LanceDB Enterprise(分布式湖仓平台)。
-
两者关系:Lance 是格式/存储层,LanceDB 是数据平台/应用层。LanceDB 完全构建在 Lance 之上;任何写出的 Lance 数据都可被 Pandas、DuckDB、Spark、Ray 等生态直接读取。
1.1.2 诞生的背景与原因
- 传统格式不适配 AI/ML 工作负载:Parquet、Iceberg、Delta Lake 等湖仓格式为 SQL 分析而生,在向量检索、快速随机访问、多模态数据存储、特征工程(不重写全表的列演进)等 AI 场景上要么缺失要么低效;TFRecord、WebDataset、JSON/XML 则各自偏科。
- 创始人经验:CEO Chang She 是 pandas 库的核心贡献者(联合创作者之一),曾任流媒体公司 TubiTV 工程 VP(主导 ML 栈与实验平台),此前是 DataPad CTO/联合创始人、AQR 与 Barclays 量化背景;CTO Lei Xu 来自 Hadoop/Cloudera 生态。两人在构建 AI 数据管线时亲身经历了"传统数据栈在 AI 负载下崩溃"的问题,因此创立 LanceDB,试图把"向量数据库"扩展到真正的"多模态 AI 数据基础设施"。
- 核心理念:不只是又一个向量数据库,而是一套面向 AI 数据底座的 lakehouse format stack——让训练、检索、分析和 Agent 记忆围绕同一份数据展开("Search More; Manage Less")。
1.1.3 URLs
-
Lance
- 官网/文档:https://lance.org ;
- 格式规范:https://lance.org/format
- Lance GitHub:https://github.com/lance-format/lance
-
LanceDB
- 官网:https://lancedb.com ;
- 文档:https://docs.lancedb.com
- GitHub:https://github.com/lancedb/lancedb
- 社区:Discord(lance.gg/discord)、邮件组、博客 blog.lancedb.com
发展历程
| 时间 | 里程碑 |
|---|---|
| 2022-01~03 | 公司通过 Y Combinator W22 孵化(LanceDB Inc.,旧金山) |
| 2022-07-07 | Lance 仓库创建(lancedb/lance),Lance 格式开始开发 |
| 2023-02-28 | LanceDB 仓库创建,正式作为向量数据库对外 |
| 2023~2024 | 种子轮约 800 万美元(CRV、Essence VC、Swift Ventures 领投,YC 支持),累计约 1,100 万美元;2024-05 再获 1,100 万美元轮次 |
| 2024-11 前后 | Lance 格式 v2 重写完成,性能与可扩展性大幅提升(早期 commit "Versioning support with Appending and Overwrite Dataset" 等迭代) |
| 2025-06-24 | $30M A 轮融资(Theory Ventures 领投,CRV、Y Combinator、Databricks Ventures、Runway 参投),累计融资约 4,100 万美元;同日发布 Multimodal Lakehouse 产品套件(LanceDB Enterprise 四大能力:Search / EDA / Feature Engineering / Training);此时开源包累计下载超 2,000 万次 |
| 2025 年 | LanceDB Cloud 进入公开 Beta(无服务器托管、按用量计费) |
| 2025-09-03 | 官方案例:CodeRabbit 用 LanceDB 做 AI 代码评审上下文引擎 |
| 2025-10-03 | Lance 文件格式 2.1 转正稳定(压缩但不影响随机访问) |
| 2025-10 | 引入 IVF_RQ 索引类型、permutation views 等 |
| 2025 年 | Lance 研究论文发表于 VLDB 2025(同行评审) |
| 2026-01-12 | 发布 Lance × DuckDB 扩展,可在 DuckDB 中直接 SQL 查询 Lance |
| 2026-02 | RFC #5952:统一事务日志(Metadata V2)设计,推进原子提交/标签/索引一体化 |
| 2026-03-09 | Lance 文件格式 2.2:Blob V2、嵌套 Schema 演进、原生 Map 类型、压缩优化(官方基准:存储减半、速度不降) |
| 2026-04 | Lance 核心内嵌全文检索 tokenizer 栈(全文检索原生化);Lance 项目独立为 lance-format 组织,官网迁移至 lance.org |
| 2026-08-08 | pylance 10.0.0 发布(Python >=3.10,支持 Win/Linux/macOS 轮子) |
| 2026-08-28 | LanceDB Node SDK 要求 Node >= 22 |
| 2026-09-06 | LanceDB 0.39.0-beta.4;Lance Rust crate 依赖推进至 v12.0.0-beta.14;新增异步远程 SQL 查询 |
主要功能
Lance(格式层)
- 表达力强的混合检索(Expressive Hybrid Search):同一数据集上组合向量相似度搜索、全文搜索(BM25)与 SQL 分析,全部由规范内的二级索引加速。
- 闪电级随机访问:较 Parquet/Iceberg 随机访问快约 100 倍(
take/sample任意行),扫描性能不损失。 - 原生多模态数据:图片、视频、音频、文本、Embedding 存于单一统一格式,Blob 高效编码 + 惰性加载(
take_blobs按需取原始字节)。 - 数据演化(Data Evolution):新增列并可回填(backfill)数据,无需整表重写——对 ML 特征工程至关重要。
- 零拷贝版本管理:ACID 事务、时间旅行(time travel)、标签(tags)、分支(branches),无需额外基础设施。
- 丰富生态集成:Apache Arrow、Pandas、Polars、DuckDB、Apache Spark、Ray、Trino、Apache Flink,以及开放目录 Apache Polaris、Unity Catalog、Apache Gravitino、Hive Metastore。
LanceDB(平台层)
- 快速向量搜索:毫秒级检索数十亿向量(SOTA 索引)。
- 综合搜索:向量相似度 + 全文搜索 + SQL,支持混合检索(hybrid search)、过滤(filter)、重排(rerank/RRF)。
- 多模态支持:向量、元数据与多模态数据(文本/图像/视频/点云等)同表存储与查询,无需单独的对象存储存放原始素材。
- 高级能力:零拷贝自动版本管理;GPU 加速向量索引构建。
- 多形态产品:
- LanceDB OSS:100% 开源、嵌入式运行(进程内库),本地或云中运行,无厂商锁定;
- LanceDB Cloud:无服务器托管服务(公开 Beta),按存储与查询计费;
- LanceDB Enterprise:PB 级分布式多模态湖仓平台(分布式 Serving 引擎、UDF 特征工程、物化视图、SQL 数据探索)。
- 多 SDK 与生态:Python、TypeScript/JavaScript、Rust、REST API;集成 LangChain、LlamaIndex、Arrow、Pandas、Polars、DuckDB 等。
核心优势
- AI 工作负载一站式:一个格式/一张表同时服务检索、特征、训练,避免"存储 + 特征 + 检索 + 训练"多系统拼接。
- 随机访问与扫描兼得:无 row group 的列式大页设计 + 行寻址,随机访问 100x 优于 Parquet/Iceberg,同时保持分析扫描性能。
- 混合检索原生内置:向量 + BM25 全文 + SQL 谓词同一数据集、同一套索引体系,天然适合 RAG / Agent 记忆。
- 数据演化 = 元数据操作:加列回填不重写全表,特征工程成本低。
- 零拷贝版本化 + 对象存储直连:ACID、时间旅行、分支/标签开箱即用;完全文件化、无服务器架构,天然适配 S3/GCS/Azure/Tencent COS,冷数据成本低。
- 开放中立:Apache-2.0,规范公开(lance.org/format),有 VLDB 2025 同行评审论文背书;生态引擎(DuckDB/Spark/Ray/Trino/Flink)与开放目录广泛集成,无厂商锁定。
- 社区与资本双轮:pandas 作者创立、YC 背书、A 轮 4,100 万美元累计融资、Databricks Ventures 参投;下载量超 2,000 万次(2025-06 口径),Star 增长快(详见发展趋势)。
主要短板
- API 仍处 0.x/快速演进期:LanceDB Python 包稳定版仍在 0.37.x,社区反馈"每次升级可能有破坏性变更",生产选型需锁版本。
- OSS 无独立服务进程:嵌入式模式下多服务共享需依赖共享文件系统/对象存储,跨进程并发与权限管理不如服务型向量库(如 Milvus/Qdrant)开箱即用。
- 小/中数据甜区:第三方测评显示其强项在 10 万~百万级、<=1,000 万向量场景;超大集群能力主要落在 Enterprise/Cloud 付费形态。
- 检索质量 vs 建索引速度的取舍:2026-08 arXiv 基准显示 LanceDB 以"更快的索引构建"换取部分检索质量(recall),纯检索延迟/召回并非全项第一。
- 版本线混乱风险:Lance(格式)与 LanceDB(数据库)各自发版节奏不同,格式演进(2.0→2.1→2.2→2.3)与 SDK 版本需对照 migration guide 管理。
- 文档/中文化:官方文档英文为主,中文社区资料多为二手转述。
局限性
- 不是通用 OLTP/高并发事务数据库:定位是 AI 数据湖仓 + 检索,不适合替代 MySQL/PostgreSQL 做高频小事务。
- SQL 能力有限:Lance 本身不是查询引擎;SQL 依赖 DuckDB 扩展、DataFusion/Spark 等外部引擎,复杂 SQL 分析需拼接生态。
- 全文检索生态迁移:早期依赖 Tantivy,2026 年起改为 Lance 内嵌原生 tokenizer,个别老接口(如 legacy tantivy FTS)已移除,升级需注意兼容。
- 对象存储直连的性能依赖:云端远程对象存储上的随机访问性能受网络/缓存影响,官方文档也提示需根据延迟/规模选存储后端。
- 格式兼容约定:稳定版
data_storage_version是长期兼容契约,但"新格式版本对旧 SDK 不可见"——混用版本需显式 pin 版本,next别名格式严禁用于生产。 - LLM 幻觉边界:任何数据库/格式都无法替代模型本身质量;检索再快也不保证生成正确。
适用场景
- RAG / 混合检索:语义搜索 + 关键词(BM25)+ 结构化过滤组合检索(文档、代码、商品、内容推荐)。
- Agent 记忆(Agent Memory):会话记忆、长程任务上下文、可分支/版本化的评估数据集(可复现 RAG 评测)。
- 多模态数据管理:图像、视频、音频、点云与 Embedding 同库存储检索(内容平台、医学影像、自动驾驶数据等)。
- 特征仓库(Feature Store)与数据演化:增量加特征列、回填 Embedding,供模型训练与在线检索共用。
- 训练数据管线:GPU 喂数前的采样、洗牌、按列投影、随机访问(PyTorch 数据集、permutation views)。
- 数据整理/质检(Curation):训练集筛选、质量标签、train/eval 划分、版本回溯。
- 嵌入式/边缘/桌面 AI 应用:无需数据库服务器的本地应用(Chrome 插件、CLI、桌面工具)。
- 对象存储上的低成本向量检索:直接把 S3/GCS 当数据库用(如 AWS 官方博客的 10 亿向量蛋白序列检索方案)。
- 代码评审/工程智能(如 CodeRabbit)、多模态内容发现(如 SemanticDotArt)等垂直应用。
同类竞品
格式层面
| 格式 | 定位 | 与 Lance 对比 |
|---|---|---|
| Parquet / ORC | 列式分析格式 | 分析强、生态最广;无原生向量/全文索引、随机访问慢、无版本管理 |
| Apache Iceberg / Delta Lake | 湖仓表格式 | SQL 湖仓事实标准、表管理完善;AI 能力(向量检索/多模态/随机访问)需外部系统补齐 |
| Apache Arrow | 内存列式格式 | 是 Lance 的底层数据模型(零拷贝互操作),但本身非持久化存储格式 |
| TFRecord / WebDataset / HDF5 | ML 训练数据格式 | 训练顺序读强;无检索、无 SQL、生态弱 |
| JSON / XML | 通用半结构化 | 灵活;分析/训练都慢,无索引 |
数据库/检索层面
| 产品 | 形态 | 与 LanceDB 对比 |
|---|---|---|
| Chroma | 嵌入式向量库 | 上手最易、零配置;并发与大数据量性能弱、功能较薄 |
| Milvus / Zilliz Cloud | 分布式向量库 | 规模与特性全(Tantivy 全文、DiskANN、GPU);部署/运维重 |
| Qdrant | Rust 向量库 | 纯检索延迟优秀、过滤能力强;需自管服务/集群 |
| Weaviate | 向量库+图 | 开箱召回率佳;功能面广但体量偏重 |
| Pinecone | 纯托管向量库 | 托管省心、生态成熟;闭源、成本高、无自托管 |
| pgvector | PostgreSQL 扩展 | 与现有 PG 栈融合;大数据量 ANN 性能与功能受限 |
| Turbopuffer | 对象存储向量库 | 同为"对象存储即数据库"路线;LanceDB 多一层开放格式与生态 |
| FAISS | 向量索引库 | 极致性能;非数据库,无持久化/版本/事务等管理能力 |
| Elasticsearch/OpenSearch | 全文+向量 | 文本检索极强;向量/HNSW 场景适合已用 ES 的团队 |
第三方基准参考(arXiv 2608.12812,2026-08,SIFT1M):FAISS 单节点吞吐最高(866 QPS);Qdrant 在完整数据库中延迟最优(中位 4.55ms);Weaviate 开箱召回率最优(>99%);LanceDB 以显著更快的索引构建换取部分检索质量。
发展趋势
开源社区活跃趋势
2026-09-09 GitHub API 实测
| 指标 | lance-format/lance | lancedb/lancedb |
|---|---|---|
| Stars | 7,055(2026-05 约 6.4k → 2026-08-30 约 6,999) | 11,388(2025 年约 5k+ → 2026-08 约 10.5~11.2k) |
| Forks | 842 | 1,047 |
| 提交数 | 3,845 | 2,952 |
| Open Issues | 1,086 | 620 |
| 最近 Push | 2026-09-09 | 2026-09-09 |
两个仓库均保持高频开发(近 24 小时内仍有提交),发版节奏约 2 周一个稳定版;Lance 曾入选 GitHub Trending 与"AI 开源趋势"榜单。Star 走势整体呈加速增长,LanceDB 已突破 1.1 万 Star,Lance 稳定在 7k 附近,属于 AI 基础设施方向头部开源项目。
生态与产品趋势
- 格式独立中立化:Lance 迁出到独立组织
lance-format,官网 lance.org,强调"开放湖仓格式"而非"某公司的私有格式"(Rerun 等公司已有官方 fork)。 - AI 数据全生命周期平台化:从"向量数据库"演进为"多模态湖仓"(OSS + Cloud + Enterprise 三形态),向训练数据管线(PyTorch 加载、permutation views)与 Agent 记忆延伸。
- 格式版本持续演进:2.1(压缩)→ 2.2(Blob V2/复杂类型)→ 2.3 及 Metadata V2(统一事务日志)路线图,压缩比与复杂类型支持持续增强。
- 生态绑定加深:DuckDB 扩展、Spark/Ray/Trino/Flink 集成、开放目录(Polaris/Unity/Gravitino)接入,向"AI 时代的标准湖仓格式"目标推进。
- 商业闭环:Cloud 公开 Beta + Enterprise 私有化部署 + 4,100 万美元融资,开源获客 → 托管/企业付费的模式成型。
总结
Lance/LanceDB 正从"最快的多模态向量检索库"成长为"AI 数据基础设施事实标准候选":格式中立开放 + 嵌入式零运维 + 云/企业商业化三线并进;
短期看是 RAG 与 Agent 记忆的首选轻量底座;
中期目标是成为【多模态 AI 湖仓】的 Parquet/ Iceberg 级标准。
2 工作原理与架构
概念术语
| 术语 | 含义 |
|---|---|
| Lance 文件格式(File Format) | 面向对象存储与随机访问的列式容器:无 row group、按列大页、结构编码(structural encoding),统计信息与搜索结构独立为索引 |
| Lance 表格式(Table Format) | 管理 fragment、manifest、删除、Schema 演进与 ACID 提交的表组织方式 |
| Manifest | 描述数据集某个版本的不可变清单:完整 Schema(含嵌套字段)、该版本包含的 data fragment 列表、单调递增版本号、索引元数据引用 |
| Fragment | 行的水平分区;一个 fragment 可含多个数据文件,各文件贡献部分列 |
| DataFile | fragment 内的物理数据文件 |
| Deletion File | 记录已删除行(墓碑),实现高效删除而不重写数据 |
| 索引格式(Index Formats) | 标量索引、向量索引、全文索引、系统索引等冗余搜索结构,作为表的一等公民对象版本化、事务化 |
| 目录规范(Catalog Specs) | 表的发现/注册/协调:Directory Catalog(V1 目录列举 / V2 Manifest 表)+ REST Catalog |
| Namespace Client Spec | 引擎与任意 catalog 实现交互的统一接口 |
| MVCC(多版本并发控制) | 通过不可变 manifest + 事务文件实现快照隔离读写 |
| 数据演化(Schema Evolution / Data Evolution) | 加列、回填等元数据级操作,不重写全表 |
| data_storage_version | 数据集写入时固定的存储格式版本(如 2.0/2.1/2.2/2.3),稳定版本是长期兼容契约 |
| Blob / Blob V2 | 大二进制对象(图/视频/音频)的存储编码,支持惰性加载与随机取用 |
| 向量索引 | IVF-PQ、IVF-PQ_RQ、IVF-SQ、IVF-HNSW-PQ、IVF-RQ、HNSW、DiskANN 式磁盘索引等 |
| 标量索引 | B-Tree、BITMAP、ROW-ID、LABEL_LIST 等过滤加速索引 |
| 全文索引(FTS) | BM25 倒排索引(Lance 内嵌 tokenizer 原生实现) |
| Embedded / Serverless | LanceDB 以进程内库运行,无独立服务进程,直连本地目录或对象存储 |
| RemoteTable / db:// | LanceDB Enterprise/Cloud 的远端表连接方式 |
架构与运行原理
2.2.1 Lance 分层规格栈
Lance 不是"单一文件格式",而是一组可独立演进的规格栈,各层解耦以避免锁定:
各层职责:
- 文件格式:只关心"列数据如何落盘/解码"。按列独立写大页(page),达到 page size 后刷盘,避免 Parquet 式 row group 的扫描-随机访问耦合;统计信息与搜索结构不进文件格式,留给索引层独立演进。
- 表格式:两维组织——行按 fragment 水平分区,每个 fragment 可含多个只写部分列的数据文件。于是加列 = 只写新文件 + 更新 manifest,成为元数据操作而非数据重写(这就是"数据演化"的机制来源)。每次提交(commit)通过事务文件产生新 manifest,实现版本化、时间旅行与 ACID。
- 索引格式:索引是表的一等对象,随 manifest 事务化、版本化;文件编码与索引格式相互解耦,可独立升级。
- 目录规范:Directory Catalog V1 靠目录列举发现表;V2 用一张
__manifest的 Lance 表跟踪嵌套命名空间,规模化更好;REST Catalog 提供企业级 API 并可作外部 manifest 存储。 - Namespace Client Spec:给引擎统一入口,屏蔽底层 catalog 实现差异。
2.2.2 LanceDB 运行时架构
运行原理要点:
- 嵌入式无服务器:LanceDB OSS 是进程内库,
connect("本地目录")即可用,无独立服务、无网络延迟、无运维负担;数据以 Lance 文件形式直接落在存储上,索引即存储(vector、metadata、原始 payload 以不可变 fragment 形式共存于同一对象存储桶)。 - 存储计算分离:
connect("s3://... / gs://... / az://...")直连云端对象存储;存储层模块化设计(磁盘优先组件),可跑在本地 NVMe、EBS、EFS 或任意 S3 兼容 API 上。云端随机访问性能受网络/缓存影响,文档要求按延迟、规模、成本目标选后端。 - 检索执行:向量搜索走 ANN 索引(IVF-PQ / HNSW / IVF-RQ / DiskANN 式等),标量过滤走二级索引(B-Tree/BITMAP 等),全文走 BM25 倒排;混合检索可组合向量 + 全文 + SQL 谓词,支持 RRF 重排。2026 年起支持异步远程 SQL 查询。
- 版本与并发:所有写操作(插入/删除/更新/加列/建索引)产生新版本,MVCC 保证快照一致;表可分支(branch)用于可复现实验,可时间旅行回溯。
- 规模化路径:OSS 单进程共享应用 CPU 池,并发查询会竞争 CPU → 需要更大规模时切 LanceDB Enterprise(分布式集群分离 routing/query execution/后台任务,按节点扩容)或使用 Cloud 托管。
3 使用指南
安装部署(Windows / Linux / macOS)
Lance 与 LanceDB 均提供预编译轮子/包,Windows、Linux、macOS 三平台均可直接安装,无需本地 Rust 工具链。
LanceDB(Python)
# Windows / Linux / macOS
pip install lancedb
# 或使用 uv
uv add lancedb
# 安装最新预览版(约每 2 周一个稳定版,预览版保留至少 6 个月)
pip install --pre --extra-index-url https://pypi.fury.io/lancedb/ lancedb
# 旧 CPU(无 AVX2,如 Sandy Bridge/Ivy Bridge/Westmere、AMD Bulldozer 等)需装兼容包
pip install lancedb-compat
- 要求 Python >= 3.10;默认轮子面向 x86-64-haswell(AVX2+FMA),
lancedb与lancedb-compat不可共存,切换需先卸载。 - 可用
lance.simd_info()查看实际 SIMD 档位。
Lance 格式(Python,包名 pylance)
pip install pylance
# 预览版
pip install --pre --extra-index-url https://pypi.fury.io/lance-format pylance
TypeScript / Node.js
npm install @lancedb/lancedb
2026-08 起要求 Node >= 22。
Rust
cargo add lancedb
DuckDB 扩展(SQL 查询 Lance)
INSTALL lance;
LOAD lance;
源码编译(贡献者模式)
需 Rust 工具链(rustup)、Python 3.10+、protoc(>= 3.20);核心为 Rust crate(lance),Python 绑定用 PyO3/maturin,Java 绑定用 JNI。
最简示例(必读)
"""
@env
pip install pylance -i https://mirrors.aliyun.com/pypi/simple/
@links
[1] Lance 中的全文搜索 - https://lance.net.cn/quickstart/full-text-search/
"""
import lance
import pyarrow as pa
table = pa.table(
{
"id": [1, 2, 3],
"text": [
"I left my umbrella on the morning train to Boston",
"This ramen recipe simmers the broth for three hours with dried mushrooms.",
"This train is scheduled to leave for Edinburgh at 9:30 AM",
],
"category": ["travel", "food", "travel"],
}
)
# Temp write dataset
lance.write_dataset(table, "./fts_test_with_metadata.lance", mode="overwrite")
ds = lance.dataset("./fts_test_with_metadata.lance")
# Create FTS index
ds.create_scalar_index(
column="text",
index_type="INVERTED",
)
# Run FTS query with metadata filter
query_result = ds.to_table(
full_text_query="three hours",
filter='category = "food"',
)
print(f"{query_result}")
# Returns
# id: [[2]]
# text: [["This ramen recipe simmers the broth for three hours with dried mushrooms."]]
# category: [["food"]]

关键操作
1. 连接数据库
import lancedb
db = lancedb.connect("ex_lancedb") # 本地目录(嵌入式)
db = lancedb.connect("s3://bucket/path") # 对象存储直连(gs://、az:// 同理)
# db:// 为 Enterprise/Cloud 远端连接(需 api_key / region / host_override)
2. 建表(含向量、元数据、结构化字段一行同存)
data = [
{"id": "1", "name": "King Arthur", "role": "King", "stats": {"strength": 4, "magic": 1}, "vector": [0.7, 0.1, 0.9, 0.7]},
{"id": "2", "name": "Merlin", "role": "Wizard", "stats": {"strength": 2, "magic": 5}, "vector": [0.2, 0.9, 0.4, 0.9]},
]
table = db.create_table("characters", data=data, mode="overwrite")
3. 向量 / 混合搜索
# 向量搜索 + 列投影
table.search([0.2, 0.8, 0.4, 0.9]).select(["name", "role", "_distance"]).limit(2).to_pandas()
# 加过滤(curation 常用:按质量标签 / 数值字段 / 时间窗过滤)
table.search(query_vector).where("stats.magic >= 4").limit(2).to_pandas()
# 全文 / 混合搜索(Lance 层示例)
import lance
ds = lance.dataset("s3://my-bucket/docs")
ds.to_table(full_text_query="machine learning")
ds.to_table(nearest={"column": "embedding", "q": query_vec, "k": 10}, filter="year > 2020")
4. 数据演化(加列,不重写全表)
table.add_columns({"power_score": "cast(((stats.strength + stats.magic) / 2.0) as float)"})
5. 多模态数据存取
# Lance 层:按行取大对象原始字节(Blob 惰性加载)
blobs = ds.take_blobs("video", ids=[2, 51])
6. Parquet → Lance 转换(1 行代码)
import lance, pyarrow as pa, pyarrow.dataset
tbl = pa.Table.from_pandas(df)
lance.write_dataset(pa.dataset.dataset("/tmp/x.parquet", format="parquet"), "/tmp/x.lance")
# 读取即 Arrow Dataset,可直连 Pandas / DuckDB / Polars
7. 构建向量索引
ds.create_index("vector", index_type="IVF_PQ", num_partitions=256, num_sub_vectors=16)
# 也可选 HNSW / IVF-RQ / IVF-SQ / DiskANN 式等;支持 GPU 构建
8. DuckDB SQL 查询 Lance
INSTALL lance; LOAD lance;
SELECT * FROM lance_scan('/path/to/data.lance') LIMIT 10;
Z FAQ for Lance/LanceDB
Q: Lance 和 LanceDB 到底是什么关系?我该用哪个?
Lance 是存储格式(文件+表+目录规范),LanceDB 是数据库/平台(基于 Lance 构建)。纯数据工程/训练场景可以只用 Lance(pylance)写读文件;要做检索(RAG、Agent 记忆、推荐)用 LanceDB;两者数据完全互通,LanceDB 表就是 Lance 数据集。
Q: 需要自己部署服务器吗?
OSS 不需要——嵌入式进程内运行,pip install lancedb 后连个目录就能用;数据可放本地或对象存储。需要共享/大规模/托管时再用 LanceDB Cloud(托管)或 Enterprise(私有化分布式)。
Q: 支持哪些存储后端?
本地磁盘、AWS S3 及兼容对象存储(含腾讯 COS)、Azure Blob Storage、Google Cloud Storage;URI 前缀 s3://、gs://、az:// 自动选择后端,db:// 连 Enterprise。
Q: 支持全文检索和 SQL 吗?
支持。BM25 全文搜索原生内置(Lance 内嵌 tokenizer);SQL 通过 DuckDB 扩展(INSTALL lance; LOAD lance;)或 Spark/Trino/Flink 等引擎;还可向量 + 全文 + SQL 混合检索并 RRF 重排。
Q: 数据量多大合适?性能如何?
官方与第三方观点:百万级以下开箱即用(第三方称 1,000 万向量内亚毫秒级);SIFT 100 万×128 维平均查询 <1ms(官方 2023 M2 MacBook Air 基准);随机访问较 Parquet/Iceberg 快约 100 倍。数十亿向量建议走 Cloud/Enterprise(AWS 官方博客有 10 亿向量 S3 方案)。注意 2026-08 arXiv 基准提示其召回率非顶尖,以快建索引换检索质量。
Q: 版本兼容性怎么保证?
Lance 数据集写入时固定 data_storage_version(2.0~2.3),稳定版本是长期兼容契约;SDK 变更遵循语义化版本并走 migration guide;next 别名格式仅供实验,禁用于生产。生产请锁稳定版(如 pylance 10.0.0 / lancedb 0.37.1)。
Q: 与 Chroma / Milvus / Qdrant / Pinecone 怎么选?*
- 快速起步、嵌入式、中小规模、多模态 + 混合检索 → LanceDB;
- 极简原型、纯小规模 → Chroma;
- 需要分布式、GPU、完整运维特性(数十亿级)→ Milvus/Zilliz 或 Qdrant 集群;
- 全托管省心、预算充足 → Pinecone;
- 已有 PostgreSQL 栈、规模不大 → pgvector。
Q: 谁在用 / 商业可持续吗?
公开案例:CodeRabbit(AI 代码评审);AWS 官方博客(10 亿向量蛋白序列检索方案)。公司累计融资约 4,100 万美元(A 轮由 Theory Ventures 领投,YC、Databricks Ventures、Runway 参投),Cloud 已公测,Enterprise 面向私有化大客户。开源免费 + 云/企业付费模式。
Q: 新手学习路径?
官方 Quickstart(docs.lancedb.com/quickstart)→ Lance 格式规范(lance.org/format)→ vectordb-recipes 教程仓库 → VLDB 2025 论文 → Discord 社区。
Y 推荐文献
- Lance 官方文档 / 格式规范 - lance.org
- LanceDB 官方文档 / Quickstart - docs.lancedb.com
- Lance: A High-Performance Multimodal Lakehouse Format(VLDB 2025 论文,见 lance.org 首页) - VLDB
- LanceDB GitHub 仓库(README / 案例 / 发行说明) - GitHub
- Lance GitHub 仓库(README / 基准 / 规范源码) - GitHub
- LanceDB 官方博客(格式演进、案例、产品发布) - blog.lancedb.com
- Lance File Format 2.2: Taming Complex Data - LanceDB 博客
- From BI to AI: A Modern Lakehouse Stack with Lance and Iceberg - LanceDB 博客
- Case Study: How CodeRabbit Leverages LanceDB - LanceDB 博客
- A scalable, elastic database and search solution for 1B+ vectors built on LanceDB and Amazon S3 - AWS Architecture Blog
X 参考文献
- Lance - GitHub(lance-format/lance)
- LanceDB - GitHub(lancedb/lancedb)
- Lance 官网 / 格式规范 - lance.org
- LanceDB 官网 - lancedb.com
- LanceDB 文档(Quickstart / Storage / Enterprise) - docs.lancedb.com
- pylance - PyPI
- lancedb - PyPI
- LanceDB - Y Combinator 公司页
- LanceDB - AI Wiki(融资与指标汇总)
- LanceDB Raises $30M(Reuters 转引) - TheOutpost.AI
- June 2025 Newsletter: $30M Series A, Multimodal Lakehouse Launch - LanceDB 博客
- What is the LanceDB Multimodal Lakehouse? - LanceDB 博客
- Lance File 2.1 is Now Stable - LanceDB 博客
- Lance File Format 2.2: Taming Complex Data - LanceDB 博客
- Lance Format v2.2 Benchmarks - LanceDB 博客
- Lance × DuckDB: SQL for Retrieval - LanceDB 博客
- Lance Directory Catalog - lance.org
- Lance Table Format - lance.org
- Lance File Format - lance.org
- Lance Migration Guides - lance.org
- Lance Extension(DuckDB) - lance.org
- Storage Architecture in LanceDB - docs.lancedb.com
- Configuring Cloud Storage in LanceDB - docs.lancedb.com
- A Comprehensive Empirical Evaluation of Vector Database Systems for ANN Search - arXiv 2608.12812
- Case Study: CodeRabbit - LanceDB 博客
- 1B+ vectors on LanceDB and Amazon S3 - AWS Architecture Blog
- The S3 Vector Database Landscape - llms3.com
- Star History: lance-format/lance
- Star History: lancedb/lancedb
- LanceDB - hvtracker(Star/Fork 统计)
- Lance Storage Format v1→v2 演进分析(社区文章,供参考) - CSDN
- Lance vs Parquet:牛津宠物数据集性能对比(社区复现,供参考) - CSDN
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!

浙公网安备 33010602011771号