Lance DuckDB 扩展把 Lance(面向 ML/AI 的现代列式数据格式)原生接入 DuckDB,使团队能在熟悉的 SQL 环境中直接对 .lance 数据集做查询、向量检索与全文检索。一、核心价值
- SQL 即用的向量搜索:在 DuckDB 中可调用
lance_vector_search(...)做向量检索,返回距离字段_distance,支持 top-k、索引优先等参数。对接向量化检索到现有分析/BI 流程中成本低。 - 原生全文检索(FTS)与混合检索:提供
lance_fts(...)(返回_score)和lance_hybrid_search(...)(向量+文本混合得分),便于把语义与关键词检索结合,适合问答/检索增强检索场景。 - 云对象存储友好:可直接查询
s3://.../dataset.lance等 URI,并支持通过 DuckDB Secrets 管理 S3 认证,便于把数据放在云端对象存储而非复制到本地。
二、典型场景
- 把 embedding 数据、元数据和文本一起存为 Lance 格式,供数据科学团队在 DuckDB 中做探索性分析 + 相似检索。
- 在快速原型或轻量化检索服务中,用现成的 SQL 接口替代搭建专门向量数据库的工程成本。
- 与现有分析/BI 管道(使用 DuckDB)无缝集成的向量强化检索或 RAG(retrieval-augmented generation)流水线。
快速上手(最小示例)
在 DuckDB 中安装并加载社区扩展后即可直接查询本地或 S3 的 Lance 数据集:
INSTALL lance FROM community;
LOAD lance;
SELECT * FROM 'path/to/dataset.lance' LIMIT 10;
-- 向量搜索示例
SELECT id, label, _distance
FROM lance_vector_search('path/to/dataset.lance', 'vec', [0.1,0.2,0.3,0.4]::FLOAT[], k=5)
ORDER BY _distance ASC;https://github.com/lance-format/lance-duckdb