> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lancedb.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Embedded vs Enterprise

> A feature-by-feature comparison between 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](https://docs.lancedb.com/enterprise/index.md) distributes query execution, indexing, maintenance and refresh work across
a cluster of many machines, outside your application. Both are built on the same [Lance](https://docs.lancedb.com/basics/lance.md) columnar
file format, so moving data from one edition to the other does not require a data conversion step. See
[Architecture](https://docs.lancedb.com/index.md#architecture) for how each one's components fit together.

## How they differ

| Dimension | LanceDB Embedded | LanceDB Enterprise | What the difference means |
| :- | :- | :- | :- |
| **Mode** | Single process | Distributed fleet | LanceDB Embedded runs on one host, so scale is limited to what it can provide. Enterprise spreads work across nodes, adds capacity by adding nodes, and keeps serving even if one node fails. |
| **Query serving** | Uses the resources of your application process | Adds independently scaled query compute | Size the Enterprise cluster for your workload and latency target. See the expected-performance sections on [vector search](https://docs.lancedb.com/search/vector-search.md#expected-performance) and [full-text search](https://docs.lancedb.com/search/full-text-search.md#expected-performance) for representative measurements. |
| **Cache** | In-process index and metadata caches | Adds a distributed NVMe data cache | LanceDB Embedded caches indexes and metadata in your application's memory. Enterprise also keeps hot table data near compute on NVMe and avoids repeated S3 calls -- see the [Data Page Cache](https://docs.lancedb.com/enterprise/data-page-cache.md). |
| **Indexing & compaction** | Manual | Platform-managed workflows | LanceDB Embedded requires application-managed maintenance; Enterprise schedules it in the background. See [Indexing in LanceDB](https://docs.lancedb.com/indexing.md). |
| **Data format** | Lance | Lance | Both use the same open table format. Plan catalog registration, access and transfer when moving existing data. |
| **Deployment** | Embedded in your code | BYOC or Managed | Enterprise adds deployment operations and support for shared workloads. |
| **SQL analytics** | Not available | Arrow Flight SQL | Enterprise runs joins, grouping, sampling and [curation](https://docs.lancedb.com/curation.md) over SQL. See [SQL reference](https://docs.lancedb.com/sql.md). |
| **Native vector dedup** | Not available | `dedupe()` / `duplicate_pairs()` | Index-partition deduplication as a SQL table function, with no full pairwise scan. See [DEDUPE](https://docs.lancedb.com/sql/dql/dedupe.md). |
| **Materialized views** | Not available | Server-side, distributed compute | Enterprise derives and refreshes a table from a query as a background job. See [Materialized views](https://docs.lancedb.com/feature-engineering/materialized-views.md). |

## Compare features

| Area | Feature | Embedded | Enterprise |
| - | - | :-: | :-: |
| **Data Ingestion** | [Insert data](https://docs.lancedb.com/ingestion/insert.md) | ✅ | ✅ |
| | [RTE Write (Upsert)](https://docs.lancedb.com/ingestion/realtime-write.md) | ✅ | ✅ |
| | [Distributed RTE Write](https://docs.lancedb.com/enterprise/distributed-real-time-write.md) | ❌ | ✅ |
| | [Attach Database](https://docs.lancedb.com/ingestion/migrate-from-embedded.md) | ❌ | ✅ |
| | [Import Datasets](https://docs.lancedb.com/ingestion/import.md) | ❌ | ✅ |
| | [Distributed Write](https://docs.lancedb.com/enterprise/distributed-write.md) | ❌ | ✅ |
| **Search** | [Vector search](https://docs.lancedb.com/search/vector-search.md) | ✅ | ✅ |
| | [Full-text search](https://docs.lancedb.com/search/full-text-search.md) | ✅ | ✅ |
| | [Hybrid search](https://docs.lancedb.com/search/hybrid-search.md) | ✅ | ✅ |
| | [Filtering](https://docs.lancedb.com/search/filtering.md) | ✅ | ✅ |
| | [Reranking](https://docs.lancedb.com/reranking.md) | ✅ | ✅ |
| | [Distributed Search](https://docs.lancedb.com/enterprise/distributed-search.md) | ❌ | ✅ |
| | [RTE Read](https://docs.lancedb.com/search/realtime-read.md) | ✅ | ✅ |
| | [Distributed RTE Read](https://docs.lancedb.com/enterprise/distributed-real-time-read.md) | ❌ | ✅ |
| | [Cache Prewarm](https://docs.lancedb.com/enterprise/cache-prewarm.md) | ❌ | ✅ |
| **Data Curation** | [Inspect Datasets](https://docs.lancedb.com/curation/inspect-datasets.md) | ❌ | ✅ |
| | [Statistical Sampling](https://docs.lancedb.com/curation/statistical-sampling.md) | ❌ | ✅ |
| | [Selective Sampling](https://docs.lancedb.com/curation/selective-sampling.md) | ✅ | ✅ |
| | [Aggregation and profiling](https://docs.lancedb.com/curation/aggregate.md) | ❌ | ✅ |
| | [Joins](https://docs.lancedb.com/curation/join.md) | ❌ | ✅ |
| | [Blob Late Materialization](https://docs.lancedb.com/curation/blob-late-materialization.md) | ❌ | ✅ |
| | [Ranking](https://docs.lancedb.com/curation/windowing.md) | ❌ | ✅ |
| | [Near-duplicate detection](https://docs.lancedb.com/curation/dedupe.md) | ❌ | ✅ |
| | [Chunking](https://docs.lancedb.com/curation/chunking.md) | ❌ | ✅ |
| | [Changes since a version](https://docs.lancedb.com/curation/changes.md) | ❌ | ✅ |
| **Feature Engineering** | [Computed columns](https://docs.lancedb.com/feature-engineering/add-computed-column.md) | ❌ | ✅ |
| | [Incremental Refresh](https://docs.lancedb.com/enterprise/incremental-refresh.md) | ❌ | ✅ |
| | [Auto Refresh](https://docs.lancedb.com/enterprise/auto-refresh.md) | ❌ | ✅ |
| | [Checkpointing](https://docs.lancedb.com/enterprise/checkpointing.md) | ❌ | ✅ |
| | [Adaptive Execution](https://docs.lancedb.com/enterprise/adaptive-execution.md) | ❌ | ✅ |
| | [Refresh Materialized View](https://docs.lancedb.com/feature-engineering/refresh-materialized-view.md) | ❌ | ✅ |
| | [Embedding registry](https://docs.lancedb.com/embedding.md) | ✅ | ✅ |
| **Training** | [PyTorch data loader](https://docs.lancedb.com/training/data-loading.md) | ✅ | ✅ |
| | [Training Cache](https://docs.lancedb.com/training/training-cache.md) | ❌ | ✅ |
| | [Permutations](https://docs.lancedb.com/training/permutation.md) | ✅ | ✅ |
| | [Distributed training](https://docs.lancedb.com/training/distributed-training.md) | ✅ | ✅ |
| | [Observability](https://docs.lancedb.com/training/observability.md) | ✅ | ✅ |
| | [Checkpointing](https://docs.lancedb.com/training/checkpointing.md) | ✅ | ✅ |
| | [Resuming](https://docs.lancedb.com/training/resuming.md) | ✅ | ✅ |
| **Management** | [Catalog](https://docs.lancedb.com/management/catalog.md) | ❌ | ✅ |
| | [Database](https://docs.lancedb.com/management/database.md) | ✅ | ✅ |
| | [Namespace](https://docs.lancedb.com/management/namespace.md) | ✅ | ✅ |
| | [Table](https://docs.lancedb.com/management/table.md) | ✅ | ✅ |
| | [View](https://docs.lancedb.com/management/view.md) | ❌ | ✅ |
| | [Materialized view](https://docs.lancedb.com/management/materialized-view.md) | ❌ | ✅ |
| | [Secret](https://docs.lancedb.com/management/secret.md) | ❌ | ✅ |
| | [Function](https://docs.lancedb.com/management/function.md) | ❌ | ✅ |
| | [Storage integration](https://docs.lancedb.com/management/storage-integration.md) | ❌ | ✅ |
| | [Console](https://docs.lancedb.com/enterprise/console.md) | ❌ | ✅ |
| **Maintenance** | [Intelligent Auto-Maintenance](https://docs.lancedb.com/enterprise/intelligent-auto-maintenance.md) | ❌ | ✅ |
| | [Vector Indexing](https://docs.lancedb.com/indexing/vector-index.md) | ✅ | ✅ |
| | [FTS Indexing](https://docs.lancedb.com/indexing/fts-index.md) | ✅ | ✅ |
| | [Scalar Indexing](https://docs.lancedb.com/indexing/scalar-index.md) | ✅ | ✅ |
| | [Incremental Indexing](https://docs.lancedb.com/indexing/incremental-indexing.md) | ✅ | ✅ |
| | [Distributed Indexing](https://docs.lancedb.com/enterprise/distributed-indexing.md) | ❌ | ✅ |
| | [GPU Indexing](https://docs.lancedb.com/indexing/gpu-indexing.md) | ✅ | ✅ |
| | [Compaction](https://docs.lancedb.com/maintenance/compaction.md) | ✅ | ✅ |
| | [RTE Compaction](https://docs.lancedb.com/enterprise/realtime-engine-compaction.md) | ❌ | ✅ |
| | [Garbage Collection](https://docs.lancedb.com/maintenance/cleanup.md) | ✅ | ✅ |
| | [Distributed Compaction](https://docs.lancedb.com/enterprise/distributed-compaction.md) | ❌ | ✅ |
| | [Advanced Conflict Resolution](https://docs.lancedb.com/enterprise/advanced-conflict-resolution.md) | ❌ | ✅ |
| **Security** | [Authentication](https://docs.lancedb.com/enterprise/authentication.md) | ❌ | ✅ |
| | [Authorization](https://docs.lancedb.com/governance/authorization.md) | ❌ | ✅ |
| | [Audit Log](https://docs.lancedb.com/governance/audit-log.md) | ❌ | ✅ |
| **Deployment** | [Horizontal Scaling](https://docs.lancedb.com/enterprise/horizontal-scaling.md) | ❌ | ✅ |
| | [OpenTelemetry](https://docs.lancedb.com/deployment/opentelemetry.md) | ✅ | ✅ |
| | [Kubernetes](https://docs.lancedb.com/enterprise/deployment/kubernetes.md) | ❌ | ✅ |
| | [Multicloud](https://docs.lancedb.com/deployment/multicloud.md) | ❌ | ✅ |
| | [Slurm](https://docs.lancedb.com/deployment/slurm.md) | ❌ | ✅ |

## Usage differences between Enterprise and Embedded

The [quickstart](https://docs.lancedb.com/quickstart.md) guide shows both LanceDB Embedded connections and Enterprise `db://...`
connections. Once connected to LanceDB, the table API is largely the same: create a table, search,
filter, evolve the schema, and store multimodal records. However, there are some semantic differences
worth understanding when your code is talking to LanceDB Enterprise.

### 1. Connection model

In LanceDB Enterprise, your app connects via a `db://...` URI and sends requests to the cluster API.
The cluster executes table operations on your behalf. Your code is coupled to a **managed service endpoint**,
whereas LanceDB Embedded is directly coupled to local or object-storage paths.

### 2. Returned table type

Connecting to an Enterprise table via `open_table(...)` returns a `RemoteTable`, unlike LanceDB Embedded,
which returns a `LanceTable`. `RemoteTable` is a catalog-backed table accessed through a server/cluster,
and does not support all the same methods as `LanceTable` (see below).

### 3. Materialization APIs

For Python users working with LanceDB Enterprise, `RemoteTable` does not support table-level
materialization methods like `table.to_arrow()` or `table.to_pandas()`. This protects users from
accidentally materializing tables that are too large to fit in memory.

Instead, materialize results through query/search builders, for example
`table.search(...).limit(...).to_pandas()` for a vector or full-text search, or
`table.search().where(...).limit(...).to_arrow()` for a filtered scan. For quick previews, use
`table.head()`.

### 4. Maintenance lifecycle

In LanceDB Embedded, you run maintenance yourself: `optimize()` compacts data files, adds new rows to
existing indexes, and removes old table versions. In Enterprise, the cluster runs this work -- along with
async write and reindexing workflows -- as background jobs, and the SDK's maintenance calls do not trigger
it. On an Enterprise table, the synchronous Python `optimize()`, `compact_files()`, and
`cleanup_old_versions()` only emit a warning, and the asynchronous Python, TypeScript, and Rust clients
reject `optimize()` as not supported.

That means maintenance is managed by platform behavior and cluster configuration, not by explicit
per-table maintenance calls in your application code.

### 5. Guardrails and limits

Enterprise can enforce platform-level guardrails, such as index/table limits and safety checks around
operations like `merge_insert` when too many rows are unindexed. LanceDB Embedded mostly exposes
storage/format-level behavior, and you tune many lifecycle tasks yourself.

This means an operation in LanceDB Enterprise can fail due to service-level policy, not just because
of local table shape or schema mismatch.

> [!NOTE]
>
> As a rule of thumb, all you need to remember is this: treat `db://...` as a network service boundary,
> use query builders to fetch results, and otherwise interact with your tables as you would in LanceDB
> Embedded.

## Which one should I use?

[It's very simple to get started with LanceDB Embedded](https://docs.lancedb.com/quickstart.md): Get started with `pip install lancedb` and begin ingesting
your data and vectors into LanceDB. LanceDB Embedded (open source) makes sense when your dataset fits on one machine, traffic is still
modest, and your team is comfortable handling maintenance tasks such as compaction or reindexing itself.

Move to LanceDB Enterprise when retrieval becomes shared infrastructure for your business: your data or traffic has
outgrown a single machine, you need private deployment options, or you want platform support for monitoring, security,
and large-scale feature workflows.

If these sound like your use cases, [reach out to us](https://www.lancedb.com/contact) and we can help you scope your workload and arrange an Enterprise proof of concept.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.