LanceDB 向量数据库手册

向量数据库手册 01-专用向量数据库 17.5 KB 原文

LanceDB 向量数据库手册

适用版本:lancedb 0.41.0(PyPI / GitHub v0.41.0,2026-10-29,使用 Lance 14.0.2,核实于 2026-11) 许可与形态:Apache 2.0(OSS)、LanceDB Enterprise 为商业版(db://);嵌入式 in-process 库,无独立服务端进程 一句话定位:把向量表当成进程内列式数据集来读写的嵌入式向量库,无服务端但可直接读写 s3:// / gs:// 对象存储 约定:$ 普通用户、# root 或 sudo、<xxx> 为占位符;标 ⚠️ 的是高危操作。 更新时间:2026-11(版本与 API 变化快,执行前请以官方文档复核)


目录

  1. 它是什么、什么时候选它
  2. 版本、许可与官方入口
  3. 安装与启动
  4. 核心概念与数据模型
  5. 快速上手:完整 CRUD 示例
  6. 索引与检索进阶
  7. 生产部署与运维
  8. 高频故障与排障
  9. 常见坑与避坑清单
  10. 速查表
  11. 参考与延伸

1. 它是什么、什么时候选它

1.1 定位与架构

LanceDB OSS 是嵌入式 in-process 库:它不作为守护进程运行,而是被应用进程以 import lancedb 直接加载,向量表以 Lance 列式格式落在本地目录或对象存储上。理解这一点,就能解释它和另外两类形态的所有差别:

维度 LanceDB(OSS) Chroma(对比) Vespa(对比)
进程模型 嵌入式、无 server 进程 嵌入式 或 client-server 或 Cloud 独立服务进程 + schema 部署
接入方式 库函数调用 lancedb.connect(uri) 客户端对象 + 可选 HTTP 服务 HTTP /search/ + YQL
数据落点 本地路径 / s3:// / gs:// / az:// 本地目录 / 服务端目录 / 云端 服务节点本地 + 分发
是否有监听端口 无 client-server 有(8000) 有(8080 / 19071)
健康检查端点 无(无服务端) 有 heartbeat 有部署就绪检查

⚠️ 形态要点:OSS 无独立服务端进程、无 HTTP 健康检查端点;关于是否存在官方 Docker 镜像,官方未给出明确声明(官方资料标为未核实,见第 11 章),不要照搬第三方「LanceDB 官方镜像」的说法,以官方文档为准。嵌入式不等于「只能读本地」——它可直接读写对象存储 s3:// / gs:// / az://。

1.2 与同类产品的本质差别

与「先起服务再连」的分布式库不同,LanceDB 没有服务端进程、没有端口、没有集群控制面;它把可靠性交给底层存储(本地文件系统 / 对象存储),把并发与生命周期交给宿主应用。代价是:多进程共享、鉴权、限流、监控都要在应用层或存储层解决。Cloud 形态由 LanceDB Enterprise 以 db:// URI 提供。

版本差异:Python SDK / Node / Rust / Lance 格式 版本号分属不同线,不可混用;写锁定脚本时只固定 lancedb 的 pip 版本,别把 Lance 格式版本当 SDK 版本。

1.3 适合 / 不适合

适合:① 单机 / 少进程、想要零服务运维的 RAG、检索脚本与边缘应用;② 数据已在 S3 / GCS 等对象存储、希望库直接读写而不搬数据;③ 多模态 / 大宽表(列式存储、向量与标量同表);④ 需要版本化数据集、与 Arrow / Pandas 生态紧密结合的流水线;⑤ 原型到中等规模、能接受在应用层做并发与鉴权。

不适合:① 需要独立服务端、HTTP/gRPC 接口、集中鉴权与多租户配额的多客户端在线服务;② 需要成熟 Prometheus 端点 / 官方 Helm chart 直接交付 K8s(本篇多处标为以官方文档为准);③ 强依赖服务端自动管理索引、期望「追加即入索引」且不愿处理刷新逻辑的团队(OSS 需 refresh,见第 5、9 章);④ 老旧 x86_64 CPU 无 AVX2 且不便换 lancedb-compat 的环境。

1.4 规模参考(经验值,非官方承诺)

单表十万 ~ 百万级向量常用于原型与中小规模;维度常见 768 / 1024 / 1536;QPS 受对象存储延迟、IVF_PQ 参数、是否走索引影响。以上均为经验值,官方未给承诺数值,须以自身数据压测为准。

1.5 在链路中的位置

文档切片 → Embedding 模型 → [LanceDB 表: vector + text + subject 列] → table.search(qv).where(...).limit(k) → Top-K → 重排 / LLM 生成。以图搜图同理,把图片 embedding 与标签写成同表列,where 用 SQL 表达式过滤。若数据本来就在 S3,可直接 lancedb.connect("s3://<bucket>/<path>") 省去数据搬迁。


2. 版本、许可与官方入口

2.1 版本状态表

版本 / 线 时间 状态 备注
lancedb 0.41.0(PyPI) 核实于 2026-11 当前 pip 稳定版 requires_python >=3.10,依赖 pylance>=14.0.2
GitHub v0.41.0 2026-10-29 稳定 tag 使用 Lance 14.0.2
v0.42.0-beta.4 预发布 勿用于生产 约每 2 周发布一次
LanceDB Enterprise 滚动 商业版 db:// URI,索引自动管理

版本差异:Python SDK / Node / Rust / Lance 格式 四条版本线不同;lancedb-compat 与标准包冲突,二选一;v0.42.0-beta.4 是预发布,勿写进生产锁定文件。

2.2 许可证与商业版边界

范围 许可 / 模式 边界
OSS(嵌入式) Apache 2.0 可自建、商用、改源码;索引刷新需自行处理
LanceDB Enterprise 商业(db://) 托管能力,追加行自动入索引(OSS 需 refresh)

2.3 官方 URL 表

用途 URL
官网 https://lancedb.com
文档 https://docs.lancedb.com
GitHub https://github.com/lancedb/lancedb
PyPI https://pypi.org/project/lancedb
LICENSE https://raw.githubusercontent.com/lancedb/lancedb/main/LICENSE
Releases https://github.com/lancedb/lancedb/releases
Quickstart https://docs.lancedb.com/quickstart.md
向量索引文档 https://docs.lancedb.com/indexing/vector-index.md

2.4 版本识别命令

$ python3 -m pip show lancedb pylance
$ python3 -c "import lancedb; print(lancedb.__version__)"
$ node -e "console.log(require('@lancedb/lancedb/package.json').version)"

2.5 近两年重要变更与弃用提醒

  1. metric 显式化:建索引省略 metric 默认按 l2,非 l2 场景会退化为 flat(见第 5、9 章)。
  2. 索引异步化:create_index() 异步;追加行不会自动入索引,OSS 需 refresh,Enterprise 自动(可用 wait_for_index(...))。
  3. AVX2 依赖:默认 wheel 需 AVX2;老 CPU import lancedb 会 Illegal instruction,改用 lancedb-compat。
  4. 版本线分离:Python SDK / Node / Rust / Lance 格式不可混用版本号。

3. 安装与启动

3.1 依赖与前置条件

Python >=3.10、依赖 pylance>=14.0.2;默认 wheel 需要 AVX2 指令集;对象存储形态需对应 SDK / 凭证(如 S3 的 IAM 权限);嵌入式无需起服务、无需监听端口、无需容器。

3.2 方式一:Python(pip,主路径)

$ python3 -m pip install lancedb
# 老 x86_64 CPU 无 AVX2 时用 compat 包(与标准包冲突,二选一,不要同时装)
$ python3 -m pip install lancedb-compat

3.3 方式二:Node.js / Rust

$ npm install @lancedb/lancedb
$ cargo add lancedb

3.4 启动 / 连接(无服务端,等价于「打开数据库」)

嵌入式没有「启动服务」这一步,connect(uri) 即打开 / 创建数据集:

import lancedb
db = lancedb.connect("ex_lancedb")                 # 本地目录
# db = lancedb.connect("s3://<bucket>/<path>")    # 直读 S3
# db = lancedb.connect("gs://<bucket>/<path>")    # 直读 GCS

3.5 目录与端口表

项 值 说明
监听端口 不适用 无服务端进程,不监听任何端口
健康检查端点 无 无 HTTP 服务,验证靠 connect + 打开表
本地数据目录 connect("ex_lancedb") 指定 相对 / 绝对路径均可
对象存储 s3:// gs:// az:// 直接读写,无需搬运
Enterprise db:// 商业托管 URI

⚠️ 形态要点:官方 Docker 镜像 / 健康检查端点这类「服务端才有」的概念,在 OSS 嵌入式形态下不适用;其中是否存在官方 Docker 镜像,官方未明确声明(未核实,见第 11 章),请以官方文档为准,勿假定有镜像或 chart。

3.6 启动后健康检查与连通性验证

import lancedb
db = lancedb.connect("ex_lancedb")
print(db.table_names())          # 能列出表名即连通;无服务端可 curl

3.7 生产最小配置建议

项 建议
CPU 指令集 先确认 AVX2;老机器改用 lancedb-compat 且与标准包二选一
数据落点 生产优先对象存储(s3://)+ 生命周期 / 版本控制,本地目录须独立卷
凭证 S3/GCS 凭证走 IAM Role / 环境变量,不写进代码库
版本固定 锁定 lancedb==0.41.0 与 pylance 版本;.0-beta.* 不进生产
并发 多进程写同一表须在应用层协调;无服务端限流 / 鉴权
索引刷新 追加数据后规划 refresh + wait_for_index(...),否则新行不进索引

4. 核心概念与数据模型

4.1 术语对照表

LanceDB 术语 通用术语 关系型类比
connect(uri) 打开数据库 建立连接(但无网络服务)
Table 向量表 / 数据集 一张表
vector 列 稠密向量列 定长浮点数组列
where("...") 标量过滤 WHERE(SQL 表达式字符串)
search(qv) 相似度检索 ORDER BY 距离 LIMIT k
create_index 建 ANN 索引 CREATE INDEX
Lance 格式 底层列式存储格式 存储引擎

4.2 数据模型层级

Database(connect(uri))→ Table(列式 Lance 数据集)→ Row: 各命名列(含一个向量列)。表由 data 推断 schema(列式,向量是固定长度 list[float]),标量列与向量列同表存放,天然支持 SQL 表达式过滤。

4.3 字段与向量类型

字段 形态 说明
主键类列 如 id: int 示例用业务 id,用于 where 定位
向量列 固定长度 list[float] 示例用 3 维,实际常见 768 / 1024 / 1536
标量列 text / subject 等 用于 where("subject = 'history'")
维度 由首行数据推断 追加行维度必须一致

4.4 距离度量与方向

metric 说明 方向
l2(默认) 欧氏距离 距离越小越相似
cosine 余弦 距离越小越相似
dot 内积 符号 / 换算以官方文档为准

经验性表述:距离类度量(l2 / cosine)通常值越小越相似;dot 的返回符号约定官方资料未逐字确认,以官方文档为准。查询度量必须与建索引一致,否则会退化为 flat(全表精确扫描)。

4.5 索引类型与关键参数

索引类型 说明
IVF_PQ IVF 分区 + 乘积量化
IVF_RQ RaBitQ,压缩约 1/32
IVF_HNSW_SQ / IVF_HNSW_FLAT / IVF_HNSW_PQ IVF 分区内用 HNSW 子结构

HNSW 只作 IVF 分区内子结构,不是独立顶层索引。官方警告:带 where 过滤时优先 IVF_RQ / IVF_PQ(HNSW 系延迟方差大)。

create_index 关键参数(官方 Quickstart 逐字):metric、index_type、vector_column_name。

4.6 写入 → 建索引 → 可检索的生命周期

  1. create_table(..., data=...) 建表并立即写入,未建索引时走精确 / flat 扫描;2. create_index(metric=..., index_type=..., vector_column_name=...) 异步提交;3. 可用 wait_for_index(...) 等待索引就绪;4. 追加行不会自动入索引——OSS 需 refresh,Enterprise 自动;5. 一致性模型:嵌入式基于 Lance 数据集快照,多进程并发写的一致性由应用层 / 存储层保证,官方资料未给出官方承诺。

5. 快速上手:完整 CRUD 示例

以下基于官方 Quickstart 当前写法,import 齐全、变量均有定义、可整体复制运行。示例用 3 维向量(实际常见 768 / 1024 / 1536)。

import lancedb

# 1) 连接:嵌入式,uri 为本地目录(也可 s3:// / gs://)
db = lancedb.connect("ex_lancedb")

# 示例用 3 维;实际常见 768 / 1024 / 1536 维
data = [
    {"id": 1, "vector": [1.0, 0.0, 0.0], "text": "第一章 向量检索导论", "subject": "history"},
    {"id": 2, "vector": [0.0, 1.0, 0.0], "text": "第二章 索引结构", "subject": "history"},
    {"id": 3, "vector": [0.0, 0.0, 1.0], "text": "第三章 生产运维", "subject": "ops"},
]

# 2) 创建表:data 非空即从数据推断 schema
table = db.create_table("my_table", data=data)

# 3) 插入(追加行)
table.add([{"id": 4, "vector": [0.9, 0.1, 0.0], "text": "第四章 容量规划", "subject": "ops"}])

query_vec = [1.0, 0.0, 0.0]

# 4) 相似度检索(未建索引时走 flat 精确扫描)
print("== 纯向量检索 ==")
print(table.search(query_vec).limit(2).to_list())

# 5) 带标量过滤检索:SQL 表达式字符串
print("== 带过滤检索 ==")
print(table.search(query_vec).where("subject = 'history'").limit(2).to_pandas())

# 6) 建向量索引:必须显式 metric,否则默认 l2 会让 cosine 场景退化
table.create_index(metric="cosine", index_type="IVF_PQ", vector_column_name="vector")

# 7) 更新:按条件改写列值
table.update(where="id = 1", values={"subject": "intro"})

# 8) 删除:按条件
table.delete(where="id = 3")

# 9) 读回校验
print("== 读回校验 ==")
print(table.to_pandas())

# 10) 清理:删表
db.drop_table("my_table")

旧教程会写成什么:① table.create_index(index_type="IVF_PQ", vector_column_name="vector") ——省略 metric,默认按 l2 建索引;若查询用 cosine / dot,会退化为 flat(全表精确扫描),延迟暴涨。当前写法必须显式 metric="cosine"。② 旧文常以为 create_index() 是同步的、且追加行会自动入索引——实际 create_index() 异步、追加行不会自动入索引(OSS 需 refresh,Enterprise 自动),可用 wait_for_index(...) 等待。③ 旧 SDK 省略 metric 默认发 l2,是历史高发坑。

补充说明:连接 / 建表 / search / where / create_index 的签名以官方 Quickstart 逐字写法为准;上例的 update / delete / to_pandas / drop_table update / delete 等方法请以官方 API 参考为准,参数细节以官方文档为准。

输出怎么读:to_list() 返回 dict 列表,to_pandas() 返回 DataFrame。

字段 / 列 含义 读法
_distance 与查询向量的距离 距离类度量下值越小越相似;dot 约定以官方文档为准
vector / text / subject 原表列 与命中行同序,用于展示与二次过滤
id 业务主键 用于回查与更新定位

第 4 步 limit(2) 取 Top-2;第 5 步叠加 where("subject = 'history'") 后候选收敛,结果可能少于 2 条——属过滤收敛而非故障。第 6 步建索引后,若查询度量与 metric 不一致会退化为 flat,须显式保持一致。

REST / cURL 等价示例:不适用。LanceDB 是嵌入式库、无服务端、无 HTTP 接口,因此不存在 cURL 等价写法;等价的「跨环境切换」是换 connect 的 URI:

db_s3 = lancedb.connect("s3://<bucket>/<path>")    # 直读对象存储
db_gs = lancedb.connect("gs://<bucket>/<path>")

6. 索引与检索进阶

6.1 索引参数调优表

参数 默认值 影响 建议范围
metric l2 必须与查询度量一致,否则退化 flat 显式写 l2 / cosine / dot
index_type 以官方文档为准 决定召回 / 延迟 / 内存 IVF_PQ / IVF_RQ 优先(带 where 时)
vector_column_name 必填 指定向量列 与表 schema 列名一致
limit(k) 调用时必填 返回条数 结合 Top-K,通常 5~100
where 无 过滤越严格候选越少 优先收敛再取 Top-K

除上述 Quickstart 逐字参数外的 IVF / PQ 细分参数(分区数、量化位宽等)官方资料官方未明确,本表不列默认值;以官方索引文档为准。

6.2 召回率 recall 与延迟的取舍

近似 IVF 索引以少量召回损失换低延迟。经验做法:先用未建索引的 flat 结果做基线,对比建索引后的 Top-K 交集测 recall;先固定 limit(k) 与 metric,再调 index_type。官方明确带 where 过滤时优先 IVF_RQ / IVF_PQ(HNSW 系延迟方差大)。

6.3 标量过滤的 pre / post-filter 行为

where 用 SQL 表达式字符串。官方资料未明确其 pre/post-filter 实现细节;经验性表述:过滤越严格候选越少、结果可能少于 limit(k);若「过滤后召回明显偏低」,先用 table.to_pandas() / 计数核对满足条件的基数,再判断是数据问题还是检索行为,勿假定索引损坏。

6.4 混合检索、多向量 / 稀疏向量 / 重排

官方资料未提供 LanceDB 的 BM25 / RRF / 多向量 / 稀疏向量 / 重排的官方条目,本篇不臆造方法名;如需混合检索,以官方文档确认能力,或在上层框架做两路召回再融合(经验做法)。量化方面,IVF_RQ(RaBitQ)压缩约 1/32、IVF_PQ 为乘积量化,二者是降低内存占用的主要手段。

6.5 内存与磁盘容量估算(经验公式)

公式:向量大小 ≈ N × D × 4B(float32);IVF_PQ / IVF_RQ 索引 ≈ 量化后码本 + 分区结构,远小于原始向量;总占用 ≈ 向量 + 索引 + 标量列 + Lance 元数据/版本快照。示例:N=100 万、D=768 → 原始向量约 1e6 × 768 × 4B ≈ 2.86 GiB,PQ / RQ 量化后索引显著更小,但对象存储会保留多版本快照,容量按实测为准。此为经验估算,非官方承诺。


7. 生产部署与运维

7.1 形态选择决定运维模型(重点)

形态 高可用 监控 运维主体
OSS 嵌入式(本地) 无服务端 HA,靠宿主与存储 无监控端点,靠宿主应用 应用自身
OSS + 对象存储 s3:// / gs:// 靠对象存储持久性 / 多进程各自打开 靠宿主应用 + 云监控 应用 + 云
Enterprise db:// 厂商托管 厂商控制台 厂商

版本差异:再强调——OSS 无独立服务端、无监听端口、无 HTTP 健康检查端点;关于官方 Docker 镜像 / Helm chart,官方未明确声明(未核实,见第 11 章)。排障时先确认「是不是在找本不存在的服务端」——很多「连不上 / 健康检查 404」根因是把嵌入式当服务用。

7.2 高可用 / 集群 / 分片 / 副本

OSS 无服务端控制面:水平扩展 = 多个应用进程各自 connect 同一对象存储路径;分片 / 副本由应用或对象存储承担。写入并发须应用层协调(无服务端锁 / 限流)。Enterprise 的 HA 能力以厂商文档为准。

7.3 备份与恢复(含索引是否需重建)

形态 备份对象 恢复要点
本地目录 数据目录(Lance 数据集 + 版本快照) 停写后拷贝,同版本打开
对象存储 bucket / prefix 的数据与清单 用对象存储版本控制 / 跨区复制
Enterprise 厂商侧备份 以厂商文档为准

⚠️ 危险:Lance 格式版本与 SDK 版本分属不同线,跨大版本不要直接复用旧数据集目录当升级手段;先导出再导入。备份时须包含索引文件,否则恢复后可能需重建索引并重新 wait_for_index(...)。

7.4 监控端点与关键指标、告警阈值建议

OSS 没有 Prometheus 端点 / 健康检查端点(无服务端)。建议自建监控:宿主进程存活、对象存储请求错误率与延迟、磁盘 / bucket 使用率(>80% 预警)、查询 P99 延迟、索引刷新滞后(未入索引行数)。阈值为经验建议,按自身 SLA 调整。

7.5 容量规划与扩缩容

按 6.5 估算;扩缩容 = 扩应用进程 / 换机型 / 扩对象存储,无需扩「数据库集群」。单表瓶颈优先「显式 metric + 合适 index_type + 减 limit(k) + 加 where 收敛」。

7.6 升级与跨版本迁移

① 用 pip show lancedb pylance 锁定当前版本;② 备份数据集(含索引);③ 升级 SDK,用新会话 connect 打开并跑抽样检索;④ 因索引可能需重建,规划 create_index + wait_for_index(...) 的停机 / 双写窗口;⑤ 校验条数与抽样结果一致后切流。

7.7 安全基线

项 建议
认证 / 鉴权 嵌入式库内无认证,靠对象存储 IAM / 应用侧鉴权
TLS 对象存储访问走 HTTPS;db:// 走厂商通道
网络暴露面 无监听端口,不暴露服务;仅暴露应用自身
凭证 S3 / GCS / db:// 凭证走 IAM Role / 密钥管理,不写进代码库
日志位置 无独立服务日志;日志由宿主应用输出,用应用日志采集链路

8. 高频故障与排障

症状 可能原因 定位命令 / 方法 处置
import lancedb 报 Illegal instruction 老 CPU 无 AVX2,默认 wheel 不支持 grep -o avx2 /proc/cpuinfo | head -1 改装 lancedb-compat,且与标准包二选一
连不上 / 健康检查 404 把嵌入式当服务用、去找服务端端口 确认代码里是 lancedb.connect(uri) 去掉 curl / 端口假设,改用打开表验证
写入失败 追加行维度 / schema 与首行不一致 打印 table.schema 与新行 len(vector) 对齐列与维度
查不到 / 召回低 查询度量与建索引 metric 不一致,退化 flat 核对 create_index(metric=...) 显式指定并保持 metric 一致
查询慢 未建索引 / 退化为 flat / limit 过大 检查是否已 create_index、是否显式 metric 重建索引、收敛 limit、加 where
OOM 数据量大 / 未量化 按 6.5 估算 选 IVF_PQ / IVF_RQ 量化,扩内存
磁盘 / bucket 满 对象存储多版本快照累积 查 bucket 用量与版本数 配置生命周期 / 清理旧快照
索引不生效 create_index() 异步未完成 / 追加行未入索引 wait_for_index(...) 后复测 等待索引、OSS 执行 refresh
版本升级后报错 SDK 与 Lance 格式版本线混用 pip show lancedb pylance 固定配套版本,导出 / 导入迁移
过滤结果变少 where 收敛候选 用 to_pandas() 数满足条件的行 属预期行为,调条件或提升候选
对象存储访问被拒 IAM 权限 / 凭证缺失 云侧审计日志、connect 报错 补 IAM 授权、凭证走环境变量

9. 常见坑与避坑清单

  1. 现象:建了索引却越来越慢。原因:create_index 省略 metric,默认 l2,与 cosine 查询不一致退化为 flat。怎么做:建索引显式写 metric="cosine" 并与查询保持一致。
  2. 现象:新写入的行检索不到(走索引时)。原因:追加行不会自动入索引。怎么做:OSS 定期 refresh;Enterprise 自动;用 wait_for_index(...) 等待索引就绪。
  3. 现象:以为 create_index() 返回即索引可用。原因:该调用异步。怎么做:wait_for_index(...) 后再压测 / 切流。
  4. 现象:老机器 import 直接崩。原因:默认 wheel 需 AVX2。怎么做:换 lancedb-compat,且与标准包二选一,别同时装。
  5. 现象:带 where 过滤时延迟忽高忽低。原因:用了 HNSW 系索引,官方提示延迟方差大。怎么做:带过滤优先 IVF_RQ / IVF_PQ。
  6. 现象:把 HNSW 当独立索引类型选。原因:HNSW 只是 IVF 分区内子结构。怎么做:顶层选 IVF_* 类型。
  7. 现象:找健康检查端点 / Docker 镜像找不到。原因:OSS 无服务端;官方 Docker 镜像是否存在未明确声明。怎么做:不臆造端点与镜像,以官方文档为准。
  8. 现象:多进程同时写出现冲突。原因:无服务端并发控制。怎么做:应用层协调写入,或改用对象存储 + 单写多读。
  9. 现象:升级后数据集打不开。原因:SDK / Lance 格式版本线混用。怎么做:固定配套版本,走导出 / 导入。
  10. 现象:照第三方配 Prometheus 端点 404。原因:嵌入式无监控端点。怎么做:监控做在宿主应用与云监控侧。
  11. 现象:dot 度量排序方向判断错。原因:dot 返回符号约定官方未明确。怎么做:以官方文档为准,先用小样本验证再上生产。
  12. 现象:对象存储费用 / 容量超预期。原因:Lance 多版本快照累积。怎么做:配置生命周期规则清理旧版本。

⚠️ 危险:db.drop_table("my_table") 与删除对象存储 prefix 都不可逆;执行前确认已备份、且连的是测试 / 目标环境而非生产数据集。

⚠️ 危险:跨大版本直接复用旧数据集目录、或在不重建索引的情况下切流,可能导致索引与数据不一致、检索结果静默错误;升级须走备份 + 重建索引 + 抽样校验。


10. 速查表

10.1 命令 / API 速查

操作 命令 / 代码 说明
安装 Python SDK pip install lancedb 需 AVX2、Python >=3.10
老 CPU 兼容包 pip install lancedb-compat 与标准包冲突,二选一
安装 Node SDK npm install @lancedb/lancedb Node 版本线独立
安装 Rust crate cargo add lancedb Rust 版本线独立
看版本 python3 -m pip show lancedb pylance 版本识别
连接本地 db = lancedb.connect("ex_lancedb") 本地目录
连接 S3 db = lancedb.connect("s3://<bucket>/<path>") 直读对象存储
连接 GCS db = lancedb.connect("gs://<bucket>/<path>") 直读对象存储
Enterprise db = lancedb.connect("db://...") 商业托管
列所有表 db.table_names() 连通性验证
建表 db.create_table("t", data=data) 从 data 推断 schema
追加行 table.add(rows) 不会自动入索引
相似度检索 table.search(qv).limit(2).to_list() 返回 dict 列表
带过滤检索 table.search(qv).where("subject = 'history'").limit(2).to_pandas() SQL 表达式
建索引 table.create_index(metric="cosine", index_type="IVF_PQ", vector_column_name="vector") 异步、显式 metric
等索引 table.wait_for_index(...) 等待异步索引
更新 table.update(where="id = 1", values={"subject":"intro"}) 按条件
删除行 table.delete(where="id = 3") 按条件
删表 db.drop_table("t") ⚠️ 不可逆
读全表 table.to_pandas() 校验 / 计数

10.2 常用端口与路径

项 值
监听端口 不适用(无服务端进程)
健康检查端点 无
本地数据目录 connect("ex_lancedb") 指定
对象存储 s3:// / gs:// / az://
Enterprise db://

11. 参考与延伸

11.1 官方文档链接清单

用途 URL
官网 https://lancedb.com
文档 / Quickstart https://docs.lancedb.com | https://docs.lancedb.com/quickstart.md
向量索引文档 https://docs.lancedb.com/indexing/vector-index.md
GitHub / Releases https://github.com/lancedb/lancedb | https://github.com/lancedb/lancedb/releases
PyPI https://pypi.org/project/lancedb
LICENSE https://raw.githubusercontent.com/lancedb/lancedb/main/LICENSE

11.2 与同册其他产品的关系

需要独立服务端 / HTTP 接口:见同目录 Chroma.md(client-server 形态)或 Vespa.md(服务化);schema-first + YQL + 滚动发布见 Vespa.md;融合到现有 PostgreSQL 见 ../02-融合型向量能力/pgvector.md(若已存在);纯索引库(非数据库)见 ../03-向量索引库/。

11.3 进阶阅读方向

① 官方 Quickstart 与「Vector Index」文档:create_index 全量参数、IVF_PQ / IVF_RQ 调优;② 对象存储(s3:// / gs://)直读的凭证与一致性模型;③ Lance 格式版本与多版本快照 / 生命周期管理;④ 混合检索与重排能力以官方文档确认后再接入。

11.4 本篇「未核实 / 以官方为准」事项(官方资料明确标注)

以下条目官方资料标为「未核实」,正文未写作确定事实,执行前必须以官方文档复核:

  1. LanceDB OSS 无 Docker 镜像的官方明确声明——官方资料未取得官方原文,正文仅说明「OSS 为嵌入式库、无独立服务端;是否存在官方 Docker 镜像以官方文档为准」,不得写成「官方明确声明无镜像」或臆造镜像仓库地址。

补充:OSS 无独立服务端 / 无监听端口 / 无 HTTP 健康检查端点、s3:// gs:// az:// 直读、metric 默认 l2、索引异步、追加行不自动入索引、AVX2 与 lancedb-compat、版本线分离均属已核实事实;但 IVF / PQ 细分参数、dot 返回符号约定、混合检索 / 多向量 / 稀疏向量能力、Enterprise 具体规格等细节仍以官方文档为准。

LanceDB 向量数据库手册 - 知识库 - 起航社区