# Lance

> Lakehouse format for multimodal AI with fast random access

Lance is an open lakehouse format for multimodal AI data, claiming 100x faster random access than Parquet, with vector and full-text indexes in the format specification and versioning built in.

Website: https://lance.org

## Use it when

- The workload is machine learning over images, video, audio, text, or embeddings, where reads fetch scattered rows rather than scan columns.
- Queries mix vector similarity, full-text search, and SQL filters over one dataset; those indexes are part of the format itself.
- Feature engineering keeps adding derived columns to large datasets; schema evolution is zero-copy, metadata only.
- Training and serving pull random batches, the access pattern Parquet handles worst and Lance's headline claim (100x faster random access) targets.

## Think twice when

- The job is conventional analytics over tabular data; Iceberg or Delta over Parquet is the established fit with the wider engine reach.
- Your stack expects deep Spark, Trino, or warehouse support; Lance is Python- and Rust-first, with those integrations younger.
- Interoperability matters: there is no metadata bridge, so catalogs can hold Lance beside Iceberg but the data stays Lance.
- You need a long-proven spec; the design was published at VLDB 2025 and the format is still moving quickly.

## How it runs

Lance spans file format, table format, and catalog spec in one Rust core with Python bindings. Rows land in fragments on local disk or object storage; MVCC gives transactional commits, using conditional puts or DynamoDB on S3. You compact fragments, optimize indexes, and clean old versions, with configurable auto-cleanup. It plugs into pandas, Polars, Ray, PyTorch, DuckDB, and Spark, and LanceDB builds a vector database on top.

## Details

### General

| Attribute | Value |
| --- | --- |
| License | Open source (permissive) |
| SPDX identifier | Apache-2.0 |
| Deployment | Self-hosted, Managed |
| Operational complexity | Medium |
| Pricing | Free |
| Language | Rust |
| Repository | https://github.com/lance-format/lance |
| Documentation | https://lance.org/format |
| Stars | 7.1k |

### Table Formats

| Attribute | Value |
| --- | --- |
| Engine support | Python and Rust first; DuckDB, Spark, Ray, Trino |
| Catalog | Lance Namespace spec; also Polaris, Unity, Gravitino |
| Update model | MVCC transactional updates; add columns without rewrite |
| Partitioning | None: rows land in fragments, not partition columns |
| Schema evolution | Zero-copy: add, drop and reorder columns as metadata only |
| Concurrent writers | MVCC with retries: appends scale, updates conflict; S3 uses conditional put or DynamoDB |
| Indexes | The strength: IVF and HNSW vector, BTree, bitmap, label list, n-gram, inverted full-text |
| Maintenance | Compact fragments, optimize indexes, clean old versions; auto-cleanup configurable |
| Change feed | Version history and time travel; change feed in development |
| Cross-format reads | No metadata bridge: catalogs can hold Lance beside Iceberg, but the data stays Lance |

## Capabilities

- [Table Formats](https://matca.io/capabilities/table-format)

---

Source: https://matca.io/lance
Last updated: 2026-08-31T11:40:47.528Z
