lakehouse/21
已用本机实测说明:同一批 768 维向量,Parquet 随机取 100
行与全扫同量级,Lance take
低三个数量级。该篇把「专用向量引擎」留给本系列。本文回答:Lance
/ LanceDB 与 Milvus
差在哪一层,以及架构上如何并存。
本文是「向量检索引擎」系列第 16 篇(共 18 篇)。→ 系列目录
版本锚定:湖侧数字引用 lakehouse/21(PyArrow 24 / Lance 7.0.0 本机中位数);Lance 能力叙述对齐该文所引官方 File Format / Vector Search 文档(A 级)。不在此重跑实验,除非主版本跨越需更新 lakehouse/21。
一、三层不要混叫「向量库」
| 层 | 代表 | 解决什么 |
|---|---|---|
| 列式/向量友好格式 | Lance | 随机行寻址、可选 ANN 索引随数据集、版本 |
| 嵌入/本地库 | LanceDB 等 | 在格式之上提供检索 API,常同进程或轻量服务 |
| 专用分布式引擎 | Milvus(本系列)、Qdrant(第 15 篇) | 持续写入、一致性、多租户、集群生命周期 |
Lance 首先是 存储格式(可对标 Parquet 的定位差异),不是「另一个 Milvus」。LanceDB 把检索 API 叠在格式上,仍通常假设 数据以数据集文件为中心,而不是 Proxy–Worker–对象段状态机。
二、lakehouse/21 已钉住的结构性事实
环境与口径见原文;此处只复述结论骨架:
| 指标 | Parquet | Lance |
|---|---|---|
顺序扫 vec |
1283.7 ms | 430.0 ms |
| 随机 take 100 行 | 1258.5 ms | 1.2 ms |
原文要点:
- Lance 用稳定行寻址,使
take(row_ids)接近点查而非扫滤。 - 可原生挂 IVF-PQ / HNSW 等 ANN,索引随数据集管理。
- 自带 dataset versioning;与 Iceberg 主数据湖可并存,用 id + snapshot 对齐。
- 湖上 ANN 与表格式元数据如何统一 仍是开放问题(Iceberg Puffin 等装不下完整图索引)。
这些数字是 微基准、本地盘、随机向量,不代表生产对象存储吞吐;结构性差异(随机点取)由格式设计决定。
三、与 Milvus 引擎的边界
| 问题 | Lance / 湖侧 | Milvus 引擎 |
|---|---|---|
| 主数据是否已在湖上 | 天然契合 | 需 ETL/同步进 Collection |
| 在线 QPS、多租户、一致性级别 | 弱于专用引擎产品面 | 第 12–14 篇专长 |
| 持续高写入 + 实时可搜 | 取决于 LanceDB/服务封装 | Growing + WAL(第 5 篇) |
| 随机取训练样本 / 特征 | 强项 | 杀鸡用牛刀 |
| 十亿级在线检索 + 过滤 | 常仍要专用引擎或分层 | 本系列主线 |
架构上常见分层(lakehouse/21 已写):
Iceberg/Parquet:主表与特征
Lance:需随机访问 / 湖上 ANN 的向量子集
Milvus/Qdrant:在线低延迟检索与强过滤
用同一业务 id + snapshot 对齐版本
四、何时可以「不上向量集群」
同时满足时,优先考虑 Lance(± LanceDB)而不是先上 Milvus:
- 向量主要服务 训练、批推理、离线召回评测,不是高并发在线;
- 已有湖仓治理,要 同一 snapshot 复现;
- 访问模式以 按 id 取向量 或中小规模 ANN 为主;
- 团队运维预算不允许 etcd/对象段/多 Worker。
一旦出现:多租户在线 QPS、强 Session/Strong 可见性、独立建索队列与读写隔离——回到 Milvus/Qdrant(第 15、18 篇)。
五、开放问题
- Lance 索引与 Iceberg 事务提交如何原子对齐?
- 对象存储上 Lance 随机 take 的 API 次数与缓存策略(对照第 6 篇寻址代价)?
- 从 Lance 增量同步到 Milvus 的 exactly-once 边界?
六、小结
Lance 补的是 湖侧随机访问与可选 ANN;Milvus 补的是 在线引擎生命周期。实测口径以 lakehouse/21 为准。下一篇:生产排障。
参考资料
- lakehouse/21 湖上 AI 与向量(本机 Lance vs Parquet 实测)。
- Lance / LanceDB 官方 File Format 与 Vector Search(经 lakehouse/21 引用)。
- 本系列第 1、6 篇;系列 index。
返回 系列目录 | 上一篇:Qdrant 对照 | 下一篇:生产排障
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
【向量检索引擎】对象存储上的 Segment 布局:快照、索引与寻址代价
说明 Milvus 2.6.x 对象存储持久化的职责边界(日志快照、标量/向量索引、中间结果),Growing flush 后 Sealed 如何进共享存储,以及按字段拆分 binlog 与按段整合(StorageV2/Parquet)在对象存储 API 次数上的工程含义。
【向量检索引擎】选型与阅读地图:决策树、RAG 回链与开放问题
用决策树收束 Milvus、Qdrant、Lance/pgvector 的适用边界;回链 llm-infra RAG 与 db-frontier ANN;列出 GPU 索引、多向量、稀疏+稠密等开放问题,完成本系列阅读地图。
【向量检索引擎】向量引擎全景:算法、RAG 与专用引擎之间的一层
定位专用向量检索引擎相对 ANN 算法、RAG 应用与湖仓格式的分工;以 Milvus 2.6.x 四层架构给出本系列 18 篇地图,并交代从 SIGMOD 2021 系统论文到存算分离演进的谱系。
【向量检索引擎】ANN 算法工程接口:从 HNSW/IVF 到 Knowhere 契约
把 HNSW、IVF、DiskANN、Flat 收成引擎侧的索引类型与参数面;说明 Train/Build/Search 生命周期如何贴着 Segment,并与 db-frontier/08 的算法细节、第 8 篇 Knowhere 实现分层分工。