Files
lancedb/docs/web/basics/sdk.mdx
T
Jack Ye ddb318567a docs: complete SQL reference, enrich Functions drafts, rename OSS to Embedded (#4732)
## Summary

- Complete the SQL reference: `ATTACH DATABASE`, the `CHANGES` clause,
and
`dedupe()`/`duplicate_pairs()` (verified against current sophon source;
these were recently renamed from
`vector_dedup`/`vector_duplicate_pairs`).
  Fix the blob-column default-projection claim and add the previously
  undocumented `blob_descriptor()`.
- Enrich the gated Functions draft (still `.mintignore`'d, pre-release):
  chained Functions over blob outputs, GPU-produced blobs, Secrets,
  multi-input/output binding, `code=[module]` packaging.
- Upgrade the materialized-view and computed-column auto-refresh drafts
with
  precise, verified catch-up semantics, and add the missing `ALTER
  MATERIALIZED VIEW` / `CREATE ... WITH(...)` sections (also gated — the
  automatic-refresh scheduler is still dev/staging-only).
- Thread one running example (video frames → GPU extract/caption → dedup
→
auto-refreshing materialized view) through Functions, materialized
views,
and the LeRobotDataset integration guide instead of a separate tutorial.
- Rename "LanceDB OSS"/"OSS" to "LanceDB Embedded"/"Embedded" throughout
  (52 files); activate the existing availability-comparison mechanism on
  `basics/offerings.mdx` for a full feature-by-feature comparison table.
2026-10-29 10:16:03 -07:00

93 lines
4.3 KiB
Plaintext

---
title: "SDKs"
sidebarTitle: "SDKs"
description: "Choose a LanceDB SDK and find the API reference for your language."
icon: code-compare
keywords: ["python", "typescript", "rust", "java", "sdk", "rest", "api reference"]
---
Use a LanceDB SDK to create tables, add data, build indexes and run searches
from your application. Python, TypeScript and Rust work with both LanceDB
Embedded and LanceDB Enterprise. LanceDB Embedded runs in your application's
process; your data can live on local disk or in object storage. LanceDB
Enterprise runs LanceDB Distributed: query execution, indexing and maintenance
run on the Enterprise service, outside your application.
The [quickstart](/quickstart) includes installation instructions and complete
examples in all three languages. For connection settings, see
[Connect to LanceDB](/basics/catalog).
## Official SDKs {#supported-sdks}
| SDK | API reference |
| --- | --- |
| Python | [Python reference](https://lancedb.github.io/lancedb/python/python/) |
| TypeScript | [TypeScript reference](https://lancedb.github.io/lancedb/js/) |
| Rust | [Rust reference](https://docs.rs/lancedb/latest/lancedb/index.html) |
Guides show the available language examples together. Use the API reference for
method signatures and options; SDKs do not expose every feature through the same
methods. In Rust, enable the `remote` feature to connect to Enterprise.
For SQL joins, aggregations and window functions, use
[SQL](/basics/sql). Python provides a SQL client, and applications in other
languages can use a Flight SQL client. TypeScript's table query API does not
provide a SQL execution method.
## Lance Namespace SDKs {#lance-namespace-sdks}
LanceDB Enterprise's catalog and table operations follow
[Lance Namespace](https://lance.org/format/namespace), an open specification
for describing access to tables in a multimodal lakehouse, including its REST
Namespace Spec. LanceDB Enterprise exposes this as an HTTP API for catalog and
table operations -- the [REST API reference](/api-reference/rest) describes
its endpoints and request formats. Use it when integrating a language or tool
without a LanceDB SDK; for SQL queries, connect through
[Flight SQL](/basics/sql) instead. Any client that implements a Lance
Namespace REST client can integrate with LanceDB this way, not only the
official SDKs above.
| Language | Package | Used by |
| --- | --- | --- |
| Java | `org.lance:lance-namespace-core` | Spark, Flink, Kafka, Trino, Presto; also LanceDB's Java client |
| Python | `lance-namespace` | Core interface and connect functionality |
| Rust | `lance-namespace` | Core interface, in [lance-format/lance](https://github.com/lance-format/lance) |
LanceDB's Java client builds on this Lance Namespace Java core: table creation,
listing and most other catalog operations go through the generated
`LanceNamespace` interface talking to Enterprise's REST Namespace endpoint.
The [real time engine](/tables/realtime-engine) is the one area with its own,
LanceDB-specific Java client on top, since RTE's LSM write path is not part of
the Lance Namespace specification.
See [lance.org/format/namespace](https://lance.org/format/namespace) for the
full spec and its other catalog implementations (Directory, Apache Polaris,
Unity Catalog, Apache Hive Metastore, Apache Iceberg REST Catalog, and more).
## Community SDKs {#community-sdks}
These clients are maintained by the community. Check each project's supported
features, installation instructions and releases before choosing one.
| Language | Project |
| --- | --- |
| Go | [lancedb-go](https://pkg.go.dev/github.com/lancedb/lancedb-go/pkg/lancedb) |
| Ruby | [Lancelot](https://github.com/scientist-labs/lancelot) |
| Swift | [LanceDbSwiftKit](https://github.com/RyanLisse/LanceDbSwiftKit) |
| R | [lancedb](https://github.com/CathalByrneGit/lancedb) |
| Flutter | [flutter_lancedb](https://github.com/Alexcn/flutter_lancedb) |
## Related guides {#next}
<CardGroup cols={2}>
<Card title="SQL" icon="table-list" href="/basics/sql">
Query Enterprise tables with SQL from Python or a Flight SQL client.
</Card>
<Card title="PyTorch Data Loader" icon="fire" href="/training/data-loading">
Use LanceDB tables in a DataLoader, including multiple worker processes.
</Card>
<Card title="Agentic Skills" icon="robot" href="/basics/agentic-skills">
Use the LanceDB plugin to help a coding agent work with your data.
</Card>
</CardGroup>