Skip to main content

LanceDB Python SDK

A Python library for LanceDB.

Installation

pip install lancedb

If no wheel is published for your platform, pip builds lancedb from the source distribution. That build needs a Rust toolchain and protoc (the Protocol Buffers compiler) on your PATH, and can take a while.

Pre-Haswell x86_64 hosts: lancedb-compat

The default lancedb wheel targets x86-64-haswell (AVX2 + FMA + F16C) for full performance on modern hardware. Pre-Haswell hosts — Intel Sandy Bridge / Ivy Bridge / Westmere; AMD Bulldozer / Piledriver / Steamroller — don't have AVX2 and crash with Illegal instruction at import lancedb.

For those hosts, install the lancedb-compat package instead:

pip install lancedb-compat

Same Python API (import lancedb works as usual). The compat wheel is compiled at the x86-64-v2 baseline (Nehalem-class) and uses runtime SIMD dispatch in the embedded lance crate to pick the right kernel tier (scalar / AVX / AVX+FMA / AVX2+FMA / AVX-512) at load time, so it still goes fast on modern hardware while running cleanly on the pre-Haswell silicon. Use lance.simd_info() from Python to verify which tier was selected.

lancedb and lancedb-compat install to the same lancedb/ namespace and conflict at install time. Pick one. To switch, pip uninstall lancedb first, then pip install lancedb-compat (or vice-versa).

If you need a custom baseline (or lancedb-compat isn't yet published for your platform), build from source with the override:

RUSTFLAGS="-C target-cpu=x86-64-v2" maturin build --release
pip install ./target/wheels/lancedb-*.whl

Preview Releases

Stable releases are created about every 2 weeks. For the latest features and bug fixes, you can install the preview release. These releases receive the same level of testing as stable releases, but are not guaranteed to be available for more than 6 months after they are released. Once your application is stable, we recommend switching to stable releases.

pip install --pre --extra-index-url https://pypi.fury.io/lancedb/ lancedb

If you also need the optional lance Python API, install the pylance extra and include the Lance preview index:

pip install --pre \
  --extra-index-url https://pypi.fury.io/lancedb/ \
  --extra-index-url https://pypi.fury.io/lance-format/ \
  "lancedb[pylance]"

With uv, also select the best matching version across the indexes:

uv pip install --prerelease allow \
  --index https://pypi.fury.io/lancedb/ \
  --index https://pypi.fury.io/lance-format/ \
  --index-strategy unsafe-best-match \
  "lancedb[pylance]"

The LanceDB preview index contains old pylance releases; current Lance previews are published to the lance-format index. By default, uv only considers versions from the first index containing a package, which can select an old pylance or backtrack to an older LanceDB release. unsafe-best-match searches all configured indexes, like pip; use it only with indexes you trust. Install the extra rather than an unconstrained pylance so LanceDB's minimum supported version is enforced.

Threading in CPU-limited containers

LanceDB uses separate pools for compute work and storage I/O. On a container with two visible CPUs, current releases intentionally use one compute worker by default; no manual configuration is needed. If every query logs an I/O core reservation warning on a two-CPU container, upgrade from LanceDB 0.21.1 or earlier.

The two commonly tuned environment variables control different resources:

  • LANCE_CPU_THREADS overrides the number of compute workers. One worker is the appropriate setting for a two-CPU container when an explicit override is needed.
  • LANCE_IO_THREADS controls concurrent storage operations, not reserved CPU cores. Its default can be greater than the number of CPUs because I/O workers spend much of their time waiting for storage.

Keep the defaults unless measurements show that the workload benefits from an override. See the Lance threading model for the current defaults and tuning guidance.

Usage

Basic Example

import lancedb
db = lancedb.connect('<PATH_TO_LANCEDB_DATASET>')
table = db.open_table('my_table')
results = table.search([0.1, 0.3]).limit(20).to_list()
print(results)

Development

See CONTRIBUTING.md for information on how to contribute to LanceDB.

Opening SQL blob descriptors

A SQL blob_descriptor(video) result keeps the Blob V2 storage metadata and a source struct containing its table URI, version, commit timestamp, branch, column and row identity. This example uses a remote SQL connection whose SQL service produces those source-bearing descriptors. Open the reference on the source table to read incrementally:

rows = db.execute_query("""
    SELECT f.timestamp, blob_descriptor(v.video) AS video
    FROM videos v JOIN frames f ON v.id = f.video_id
""").read_all()

videos = db.open_table("videos")
for row in rows.to_pylist():
    if row["video"] is not None:
        with videos.open_blob_file(row["video"]) as video:
            frame = extract_frame(video, row["timestamp"])

open_blob_file accepts the dictionary or an Arrow struct scalar directly. It keeps the query's version and branch without changing the table handle's checkout. Payload bytes load on reads. An external blob with an unspecified size may need a metadata-only HEAD request to open.

videos.open_blob_files(rows["video"]) returns an iterator over the same handles, preserving order, duplicates and nulls (None). It accepts Arrow arrays/chunked arrays or another iterable and opens each handle as iteration advances. Close each non-null handle after use. Async tables offer await videos.open_blob_file(...) and async for video in videos.open_blob_files(...).

for video in videos.open_blob_files(rows["video"]):
    if video is not None:
        with video:
            header = video.read(4096)

To extract a frame while retaining each row's timestamp, iterate over the handles and rows together:

for row, video in zip(rows.to_pylist(), videos.open_blob_files(rows["video"])):
    if video is not None:
        with video:
            frame = extract_frame(video, row["timestamp"])

Metadata

Release files for lancedb 0.41.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lancedb 0.41.0
File Size Uploaded Provenance Actions
lancedb-0.41.0.tar.gz 2.1 MB With provenance Details for lancedb-0.41.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for lancedb 0.41.0
File Actions
lancedb-0.41.0-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details for lancedb-0.41.0-cp310-abi3-win_amd64.whl
lancedb-0.41.0-cp310-abi3-manylinux_2_28_x86_64.whl CPython 3.10 abi3 Linux glibc 2.28+ x86-64 Details for lancedb-0.41.0-cp310-abi3-manylinux_2_28_x86_64.whl
lancedb-0.41.0-cp310-abi3-manylinux_2_28_aarch64.whl CPython 3.10 abi3 Linux glibc 2.28+ ARM64 Details for lancedb-0.41.0-cp310-abi3-manylinux_2_28_aarch64.whl
lancedb-0.41.0-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details for lancedb-0.41.0-cp310-abi3-macosx_11_0_arm64.whl

Total release size: 306.8 MB

Release files / lancedb-0.41.0.tar.gz

Download URL lancedb-0.41.0.tar.gz
Size 2.1 MB
Tags Source
SHA-256 checksum
How to use checksums
ca0b0418eaaa5c2aa8e9ff1e98a475b14d4517af3b9face22300213871bd1ebc
BLAKE2b-256 checksum
How to use checksums
97974349246239687e01690af02cf0d3b58e26da70794644ae48417acc0909d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / lancedb-0.41.0-cp310-abi3-win_amd64.whl

Download URL lancedb-0.41.0-cp310-abi3-win_amd64.whl
Size 85.6 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
c00ba59f0f880c2581566851a6018c00ef5c49be56ac4484c600e5129135f059
BLAKE2b-256 checksum
How to use checksums
140534ded5ae87fc632bed8c95370df082bc01ab5bac1a599727c10b07315d12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / lancedb-0.41.0-cp310-abi3-manylinux_2_28_x86_64.whl

Download URL lancedb-0.41.0-cp310-abi3-manylinux_2_28_x86_64.whl
Size 76.9 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
e3da8fbde2c916d41fc324a91a25b3f57a7b8ac5eb2981d5fb8fd0914901c44e
BLAKE2b-256 checksum
How to use checksums
aef6a0da90921905febaf19bf05c5301cef004d5fb83d41175a28a6b9b6e1d0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / lancedb-0.41.0-cp310-abi3-manylinux_2_28_aarch64.whl

Download URL lancedb-0.41.0-cp310-abi3-manylinux_2_28_aarch64.whl
Size 73.2 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
984d97c50169face1539ccaa802a2002ebc7b50a445c3e7e8cd24513569c1aab
BLAKE2b-256 checksum
How to use checksums
0432b6b8a41ce5e255078e52405ca0340fc579c378dca0b1cc1fbfb2bcdf1fb2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / lancedb-0.41.0-cp310-abi3-macosx_11_0_arm64.whl

Download URL lancedb-0.41.0-cp310-abi3-macosx_11_0_arm64.whl
Size 69.0 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b8892ff52eb32224c0414feb6f57357c4b79edeed0c2a4afe6d7f6f538dc12d0
BLAKE2b-256 checksum
How to use checksums
2e17c77b33e6af5c8da320843ead3d2988adbb71b26b731b2fe20d38b1116f5d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Security for lancedb 0.41.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 5 files in this release have been uploaded with provenance metadata.

Select from 5 files

Attestation for lancedb-0.41.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.41.0 This release

5 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page