外观
SDK
选一门语言的 LanceDB SDK,并找到对应的 API 参考。
用 LanceDB SDK,你就能在应用里建表、写入数据、构建索引并执行检索。Python、TypeScript 与 Rust 三种 SDK 同时支持 LanceDB Embedded 与 LanceDB Enterprise。LanceDB Embedded 跑在你的应用进程里,数据可以落在本地磁盘或对象存储;LanceDB Enterprise 则把查询执行、索引、维护与刷新这些工作分散到应用之外的服务里完成。
快速开始里有三种语言的安装说明与完整示例。连接配置见连接 LanceDB。
官方 SDK
| SDK | API 参考 |
|---|---|
| Python | Python 参考 |
| TypeScript | TypeScript 参考 |
| Rust | Rust 参考 |
指南会把各语言的示例并列展示。方法签名和参数请查 API 参考——不同 SDK 并不会用同名方法暴露全部特性。在 Rust 里要连 Enterprise,需要开启 remote feature。
SQL 连接、聚合与窗口函数请用 SQL。Python 自带一个 SQL 客户端,其他语言的应用可以用 Flight SQL 客户端。TypeScript 的表查询 API 不提供执行 SQL 的方法。
Lance Namespace SDK
LanceDB Enterprise 的 catalog 与表操作遵循 Lance Namespace Client SDK 规范——一份描述如何访问多模态 Lakehouse 中表的开放规范。任何实现了该规范的客户端都能以这种方式对接 LanceDB,不限于上面的官方 SDK,这对那些还没有 LanceDB SDK 的语言或工具很有用。SQL 查询请改走 Flight SQL。
| 语言 | 包 | 使用者 |
|---|---|---|
| Java | org.lance:lance-namespace-core | Spark、Flink、Kafka、Trino、Presto;以及 LanceDB 的 Java 客户端 |
| Python | lance-namespace | 核心接口与连接能力 |
| Rust | lance-namespace | 核心接口,位于 lance-format/lance |
LanceDB 的 Java 客户端就构建在这个 Lance Namespace Java 核心之上:建表、列表以及大多数 catalog 操作,都通过生成的 LanceNamespace 接口去访问 Enterprise 的 Namespace endpoint。 唯一的例外是实时引擎:因为 RTE 的 LSM 写入路径不属于 Lance Namespace Client SDK 规范,它在这一层之上有自己的 LanceDB 专用 Java 客户端。
完整规范以及它支持的其他 catalog 实现(Directory、Apache Polaris、Unity Catalog、Apache Hive Metastore、Apache Iceberg REST Catalog 等)见 lance.org/format/namespace。
社区 SDK
下面这些客户端由社区维护。选择之前,请先确认各项目支持的特性、安装方式与发布状态。
| 语言 | 项目 |
|---|---|
| Go | lancedb-go |
| Ruby | Lancelot |
| Swift | LanceDbSwiftKit |
| R | lancedb |
| Flutter | flutter_lancedb |