docs: use Enterprise terminology across website and SDK documentation (#4787)

Use “LanceDB Enterprise” throughout the staged website guides, SDK
reference sources, generated API pages, and user-facing SDK messages. A
separate branded “LanceDB Distributed” name adds terminology without
clarifying behavior; describe where operations run directly.

- Update `docs/web`, including the architecture diagram title and alt
text. Use Enterprise in headings, table labels, and prose; simplify
redundant product/execution-model wording and name the product only once
in the diagram alt text.
- Update Python docstrings and the Python/Java reference pages,
TypeScript comments and native declaration comments, and Rust API
documentation. Regenerate the TypeScript reference, including 24
replacements across six pages.
- Update SDK warnings/errors and existing test expectations to match,
along with contributor guidance and Vale rules. Remove the obsolete rule
distinguishing Enterprise from Distributed.
- Keep lowercase “distributed” for technical descriptions. API
identifiers, anchors, asset paths, and execution behavior are unchanged.
No branded-name exceptions are proposed.

Validation:
- Python and Node native builds succeeded; focused Python tests passed
(36 passed, 4 skipped), and focused Node tests passed (14).
- TypeDoc generation and the complete MkDocs reference build passed.
MkDocs retains an existing unresolved
`lancedb.functions.SecretReference` cross-reference.
- Rust formatting, Node lint/format, changed-file Python lint/format, 32
Vale tests, and whitespace checks passed. Repository-wide Python lint
has 48 existing findings in six untouched files.
- Combined documentation assembly passed. Mintlify validation and
link/anchor/redirect checks previously passed for both site builds; no
code snippets changed.

Companion PRs: [saved editions, terminology guide, and shared
rules](https://github.com/lancedb/docs/pull/413), [Enterprise overview
and writing rules](https://github.com/lancedb/sophon/pull/9511).

---------

Co-authored-by: Brendan Clement <brendan.clement@lancedb.com>
This commit is contained in:
Taylor
2026-11-02 10:25:14 -08:00
committed by GitHub
co-authored by Brendan Clement
parent 2d86532de9
commit 9e65bd2c27
59 changed files with 301 additions and 311 deletions
+3 -2
View File
@@ -4,10 +4,11 @@
come from the `LanceDB.zip` asset of `lancedb/docs` release
`vale-lancedb-v0.1.0`, whose archive SHA-256 is
`0730a43e919774121068811d5687c61dfc7a0421cff78e1393f5e565b622cb0f`.
`ProductNames` no longer swaps in "LanceDB OSS".
`ProductNames` no longer swaps in "LanceDB OSS" and now recommends
"LanceDB Enterprise" for the retired "LanceDB Distributed" name.
The product-terminology rules were added here: `EmbeddedName`,
`RemoteExecution`, `OSSProduct`, `DistributedEnterprise`, `InternalNames`
`RemoteExecution`, `OSSProduct`, `InternalNames`
(warnings) and `LegacyCloud` (suggestion). They enforce the names in the
docs repository's `STYLE.md#names`. Run every rule's tests from
`.github/vale` with `vale test --coverage styles`.
@@ -1,19 +0,0 @@
extends: existence
message: "'%s' reads as two products. LanceDB Enterprise provides LanceDB Distributed: name the product or the execution model, not both."
link: https://github.com/lancedb/docs/blob/main/STYLE.md#names
level: warning
ignorecase: false
tokens:
- 'Distributed(?:\s+(?:and|or)\s+|\s*/\s*)(?:LanceDB\s+)?Enterprise'
- 'Enterprise(?:\s+(?:and|or)\s+|\s*/\s*)(?:LanceDB\s+)?Distributed'
tests:
- name: flags Distributed and Enterprise side by side
input: Choose Distributed or Enterprise. LanceDB Enterprise and LanceDB Distributed differ, and so does Distributed/Enterprise.
want: |
1:8:LanceDB.DistributedEnterprise:'Distributed or Enterprise' reads as two products. LanceDB Enterprise provides LanceDB Distributed: name the product or the execution model, not both.
1:43:LanceDB.DistributedEnterprise:'Enterprise and LanceDB Distributed' reads as two products. LanceDB Enterprise provides LanceDB Distributed: name the product or the execution model, not both.
1:98:LanceDB.DistributedEnterprise:'Distributed/Enterprise' reads as two products. LanceDB Enterprise provides LanceDB Distributed: name the product or the execution model, not both.
- name: leaves the defining sentence and the Embedded pair alone
input: |
LanceDB Enterprise runs LanceDB Distributed. Compare Embedded and Distributed execution. Distributed search and enterprise teams are fine.
want: ''
+3 -3
View File
@@ -1,5 +1,5 @@
extends: existence
message: "'%s' is the legacy hosted service. Unless the text is specific to it, write 'LanceDB Enterprise' or 'LanceDB Distributed'."
message: "'%s' is the legacy hosted service. Unless the text is specific to it, write 'LanceDB Enterprise'."
link: https://github.com/lancedb/docs/blob/main/STYLE.md#names
level: suggestion
ignorecase: false
@@ -13,8 +13,8 @@ tests:
- name: suggests checking each LanceDB Cloud mention
input: Connect to LanceDB Cloud with an API key. Cloud/Enterprise users get the cache.
want: |
1:12:LanceDB.LegacyCloud:'LanceDB Cloud' is the legacy hosted service. Unless the text is specific to it, write 'LanceDB Enterprise' or 'LanceDB Distributed'.
1:43:LanceDB.LegacyCloud:'Cloud/Enterprise' is the legacy hosted service. Unless the text is specific to it, write 'LanceDB Enterprise' or 'LanceDB Distributed'.
1:12:LanceDB.LegacyCloud:'LanceDB Cloud' is the legacy hosted service. Unless the text is specific to it, write 'LanceDB Enterprise'.
1:43:LanceDB.LegacyCloud:'Cloud/Enterprise' is the legacy hosted service. Unless the text is specific to it, write 'LanceDB Enterprise'.
- name: leaves other clouds and code alone
input: |
Deploy into your own cloud account on Google Cloud. Pass `LanceDB Cloud` as a literal.
@@ -9,6 +9,7 @@ swap:
'(?:Lancedb|LanceDb|lanceDB|LANCEDB|Lance DB)': LanceDB
'LanceDB (?:cloud|CLOUD)': LanceDB Cloud
'LanceDB (?:enterprise|ENTERPRISE)': LanceDB Enterprise
'LanceDB\s+Distributed': LanceDB Enterprise
'(?:HuggingFace|Huggingface|Hugging face)': Hugging Face
Langchain: LangChain
Typescript: TypeScript
@@ -31,3 +32,11 @@ tests:
input: |
The lancedb package exposes `HuggingFaceEmbeddings` and LanceDBConnection; see `Typescript` in code.
want: ''
- name: uses Enterprise for the product and its execution model
input: Connect to LanceDB Distributed.
want: |
1:12:LanceDB.ProductNames:Use 'LanceDB Enterprise' instead of 'LanceDB Distributed'.
- name: keeps technical descriptions and API identifiers
input: |
LanceDB Enterprise supports distributed search. Compare Embedded and Enterprise. Distributed training uses workers. `LanceDB Distributed` and `RemoteTable` are literal code.
want: ''
@@ -1,5 +1,5 @@
extends: existence
message: "Avoid '%s'. Write 'LanceDB Distributed' for the execution model or 'LanceDB Enterprise' for the product."
message: "Avoid '%s'. Write 'LanceDB Enterprise' and describe where the operation runs directly."
link: https://github.com/lancedb/docs/blob/main/STYLE.md#names
level: warning
ignorecase: false
@@ -11,18 +11,18 @@ tests:
- name: flags remote as the execution model
input: In remote mode, a remote table is opened through a remote connection.
want: |
1:4:LanceDB.RemoteExecution:Avoid 'remote mode'. Write 'LanceDB Distributed' for the execution model or 'LanceDB Enterprise' for the product.
1:19:LanceDB.RemoteExecution:Avoid 'remote table'. Write 'LanceDB Distributed' for the execution model or 'LanceDB Enterprise' for the product.
1:52:LanceDB.RemoteExecution:Avoid 'remote connection'. Write 'LanceDB Distributed' for the execution model or 'LanceDB Enterprise' for the product.
1:4:LanceDB.RemoteExecution:Avoid 'remote mode'. Write 'LanceDB Enterprise' and describe where the operation runs directly.
1:19:LanceDB.RemoteExecution:Avoid 'remote table'. Write 'LanceDB Enterprise' and describe where the operation runs directly.
1:52:LanceDB.RemoteExecution:Avoid 'remote connection'. Write 'LanceDB Enterprise' and describe where the operation runs directly.
- name: flags plurals and a heading
input: |
## Remote tables
Remote databases hold remote tables.
want: |
1:4:LanceDB.RemoteExecution:Avoid 'Remote tables'. Write 'LanceDB Distributed' for the execution model or 'LanceDB Enterprise' for the product.
3:1:LanceDB.RemoteExecution:Avoid 'Remote databases'. Write 'LanceDB Distributed' for the execution model or 'LanceDB Enterprise' for the product.
3:23:LanceDB.RemoteExecution:Avoid 'remote tables'. Write 'LanceDB Distributed' for the execution model or 'LanceDB Enterprise' for the product.
1:4:LanceDB.RemoteExecution:Avoid 'Remote tables'. Write 'LanceDB Enterprise' and describe where the operation runs directly.
3:1:LanceDB.RemoteExecution:Avoid 'Remote databases'. Write 'LanceDB Enterprise' and describe where the operation runs directly.
3:23:LanceDB.RemoteExecution:Avoid 'remote tables'. Write 'LanceDB Enterprise' and describe where the operation runs directly.
- name: leaves other remotes and code alone
input: |
Push to the git remote, read remote storage and fetch a remote URL. `open_table` returns a `RemoteTable`; see `remote table` in the API.
+3 -3
View File
@@ -72,7 +72,7 @@ are wrappers around the Rust library.
* `node`: **Deprecated** Typescript package source code
* `java`: Java package source code
* `docs/src`: SDK reference, built with mkdocs
* `docs/web`: website guides for LanceDB Embedded and the APIs used by both Embedded and Distributed
* `docs/web`: website guides for LanceDB Embedded and the APIs used by both Embedded and Enterprise
* `docs/web-tests`: the tests the documentation's code examples are extracted from
## Documentation
@@ -84,13 +84,13 @@ it is ready for readers.
### Choose the right place
- `docs/web/` holds website guides for LanceDB Embedded and the APIs used by both
Embedded and Distributed.
Embedded and Enterprise.
- `docs/src/` holds the SDK reference. See [docs/README.md](docs/README.md) for
its build and API-generation instructions.
- `docs/web-tests/` and `rust/lancedb/tests/` hold tests used to generate the
website's code examples.
Document SDK APIs here, and explain which operations work in Embedded and Distributed.
Document SDK APIs here, and explain which operations work in Embedded and Enterprise.
Put Enterprise-specific deployment and operating instructions in the Enterprise
documentation.
+1 -1
View File
@@ -3,7 +3,7 @@
The LanceDB Java SDK provides a convenient way to interact with LanceDB Enterprise deployments using the Lance REST Namespace API.
!!! note
The Java SDK currently only works with LanceDB Distributed, connecting to LanceDB Enterprise or LanceDB Cloud (legacy).
The Java SDK currently only connects to LanceDB Enterprise or LanceDB Cloud (legacy).
LanceDB Embedded support is a work in progress. Check [LANCEDB-2848](https://github.com/lancedb/lancedb/issues/2848) for the latest progress.
## Installation
+2 -2
View File
@@ -182,7 +182,7 @@ Define a materialized view named `name` over the table `source`.
LanceDB Embedded creation and refresh require a source build with the
`experimental-functions` Cargo feature, disabled in published packages.
LanceDB Distributed operations do not require this feature.
LanceDB Enterprise operations do not require this feature.
The view is populated before creation returns. Set `withNoData` to create
only its definition and empty backing table. The view is a normal table:
@@ -826,7 +826,7 @@ abstract renameTable(
Rename a table.
Supported in LanceDB Distributed and by namespace backends that implement
Supported in LanceDB Enterprise and by namespace backends that implement
renaming. Directory namespaces support renaming tables resolved through their
manifest, including tables within or across child namespaces. LanceDB Embedded
connections and directory-listing root tables reject with a "not supported" error.
+8 -8
View File
@@ -71,7 +71,7 @@ Add new columns with defined values.
LanceDB Embedded computed-column declaration and refresh require a source
build with the `experimental-functions` Cargo feature. Published packages
disable it; LanceDB Distributed operations remain available.
disable it; LanceDB Enterprise operations remain available.
The `{ computed }` form stores the expression rather than evaluating it
now: the column is committed with no values, and rows get them from
@@ -83,7 +83,7 @@ computed, so a mutated input is reflected by the next refresh. While a
declaration reads a column, that column cannot be renamed, retyped or
dropped.
In LanceDB Distributed the expression is planned by the
In LanceDB Enterprise the expression is planned by the
server, and the refresh runs as a server job -- see
[Table#refreshColumnAsync](Table.md#refreshcolumnasync).
@@ -686,7 +686,7 @@ The per-row errors Function refreshes recorded on this table.
A refresh running under a skip policy records each row it skipped with
the input that failed and the error. This lists those records, newest
job first, plus a summary for any fragment whose per-row detail was
capped. LanceDB Distributed only; reading errors needs read
capped. LanceDB Enterprise only; reading errors needs read
access to the table, since a message carries the value that failed.
#### Parameters
@@ -939,7 +939,7 @@ Prewarm one or more columns of data in the table.
Prewarming is generally useful for columns used in filters or projections.
Large columns (e.g. high-dimensional vectors or binary data) may not be
practical to prewarm.
This feature is currently only supported in LanceDB Distributed.
This feature is currently only supported in LanceDB Enterprise.
#### Returns
@@ -1051,7 +1051,7 @@ Local refresh requires a source build with `experimental-functions`.
Rows appended since the last refresh are filled by the next one, and
rows whose inputs changed since they were computed are recomputed;
everything else is left as it is. LanceDB Embedded only: in LanceDB
Distributed a refresh runs as a server job, through [Table#refreshColumnAsync](Table.md#refreshcolumnasync).
Enterprise a refresh runs as a server job, through [Table#refreshColumnAsync](Table.md#refreshcolumnasync).
#### Parameters
@@ -1076,14 +1076,14 @@ abstract refreshColumnAsync(column): Promise<Job>
Like [Table#refreshColumn](Table.md#refreshcolumn), but returns a handle to the refresh
job instead of blocking until it completes.
LanceDB Embedded refresh requires a source build with
`experimental-functions`. LanceDB Distributed jobs do not require this
`experimental-functions`. LanceDB Enterprise jobs do not require this
feature.
The job may already be complete when returned; callers must not assume
the column is filled until [Job.wait](Job.md#wait) resolves. Invalid input --
an unknown column, or one that is not computed -- rejects here rather
than failing the job. In LanceDB Embedded the job runs in-process; in
LanceDB Distributed it is the server's backfill job.
LanceDB Enterprise it is the server's backfill job.
#### Parameters
@@ -1312,7 +1312,7 @@ Tokenize a full-text search query using the tokenizer configured on an FTS index
Specify exactly one of `column` or `indexName`.
Model-backed tokenizers such as `jieba/*` and `lindera/*` are rebuilt in
the client process from index metadata. In LanceDB Distributed, this means the
the client process from index metadata. In LanceDB Enterprise, this means the
same tokenizer model files must also exist locally (under
`LANCE_LANGUAGE_MODEL_HOME`) and must match the files the server uses. A
mismatch cannot be detected: the returned tokens may differ from what the
+1 -1
View File
@@ -19,7 +19,7 @@ optional allowExternalBlobOutsideBases: boolean;
Whether blob URIs outside registered external bases may be written.
Defaults to `false`. This option is supported only in LanceDB Embedded;
LanceDB Distributed returns an error when it is enabled. An enabled write
LanceDB Enterprise returns an error when it is enabled. An enabled write
stores the absolute URI reference without registering a base or copying
the external object into the database. The object must remain accessible
when the blob is read later.
+9 -9
View File
@@ -31,7 +31,7 @@ optional createdAt: Date;
When the index was created.
`undefined` in LanceDB Distributed or indices created before timestamps were tracked.
`undefined` in LanceDB Enterprise or indices created before timestamps were tracked.
***
@@ -44,7 +44,7 @@ optional indexDetails: any;
Index-type-specific details parsed as a JavaScript object.
Falls back to a raw string if JSON parsing fails. `undefined` in
LanceDB Distributed or when details are unavailable.
LanceDB Enterprise or when details are unavailable.
***
@@ -66,7 +66,7 @@ optional indexUuid: string;
The UUID of the first segment of the index.
`undefined` in LanceDB Distributed, which does not yet surface this.
`undefined` in LanceDB Enterprise, which does not yet surface this.
***
@@ -78,7 +78,7 @@ optional indexVersion: number;
The on-disk index format version.
`undefined` in LanceDB Distributed.
`undefined` in LanceDB Enterprise.
***
@@ -100,7 +100,7 @@ optional numIndexedRows: number;
The number of rows indexed, across all segments.
May be `undefined` in LanceDB Distributed if the server does not report it.
May be `undefined` in LanceDB Enterprise if the server does not report it.
***
@@ -112,7 +112,7 @@ optional numSegments: number;
The number of segments that make up the index.
`undefined` in LanceDB Distributed.
`undefined` in LanceDB Enterprise.
***
@@ -124,7 +124,7 @@ optional numUnindexedRows: number;
The number of rows not yet covered by this index.
May be `undefined` in LanceDB Distributed if the server does not report it.
May be `undefined` in LanceDB Enterprise if the server does not report it.
***
@@ -136,7 +136,7 @@ optional sizeBytes: number;
The total size in bytes of all index files across all segments.
`undefined` in LanceDB Distributed or indices without size tracking.
`undefined` in LanceDB Enterprise or indices without size tracking.
***
@@ -148,4 +148,4 @@ optional typeUrl: string;
The protobuf type URL, a precise type identifier for the index.
`undefined` in LanceDB Distributed.
`undefined` in LanceDB Enterprise.
@@ -14,7 +14,7 @@
optional mode: string;
```
How the view was brought up to date: "rebuild", or absent for LanceDB Distributed SQL refreshes.
How the view was brought up to date: "rebuild", or absent for LanceDB Enterprise SQL refreshes.
***
@@ -24,7 +24,7 @@ How the view was brought up to date: "rebuild", or absent for LanceDB Distribute
optional rowsWritten: number;
```
Rows written by this refresh, or absent for LanceDB Distributed SQL refreshes.
Rows written by this refresh, or absent for LanceDB Enterprise SQL refreshes.
***
@@ -34,7 +34,7 @@ Rows written by this refresh, or absent for LanceDB Distributed SQL refreshes.
optional sourceVersion: number;
```
Source version refreshed to, or absent for LanceDB Distributed SQL refreshes.
Source version refreshed to, or absent for LanceDB Enterprise SQL refreshes.
***
+1 -1
View File
@@ -21,4 +21,4 @@ optional signal: AbortSignal;
```
Cancels the read. The call rejects with `signal.reason`, and the native
read stops, including in-flight requests to a LanceDB Distributed table.
read stops, including in-flight requests to a LanceDB Enterprise table.
+11 -11
View File
@@ -27,7 +27,7 @@ connect, per-table storage and write options on create, and `index_cache_size`,
Omit these options to use server-managed storage and caching. Connection-level
`storage_options` supported by an Enterprise deployment remain available.
The synchronous LanceDB Distributed `create_table` uses the same positional order as the
The synchronous LanceDB Enterprise `create_table` uses the same positional order as the
LanceDB Embedded API: `name, data, schema, mode, exist_ok, on_bad_vectors, fill_value,
embedding_functions`. Prefer keyword arguments for optional parameters.
@@ -259,7 +259,7 @@ async for entry in catalog.authz.list_acls(subject=Subject.role("reader")):
## Remote SQL
Submit SQL against a LanceDB Distributed database through the connection.
Submit SQL against a LanceDB Enterprise database through the connection.
The connected database and `default_namespace_path=["public"]` are used for
unqualified tables. Fully qualified references can still query other databases
and namespaces available to the same deployment. `execute_query` returns a
@@ -340,24 +340,24 @@ listing a storage directory.
## Tables (Synchronous)
LanceDB Embedded and LanceDB Distributed tables use the same arguments for index creation, deletion,
LanceDB Embedded and LanceDB Enterprise tables use the same arguments for index creation, deletion,
index statistics, and search. For example, `table.delete(where="id = 1")`,
`table.create_index("cosine", 2)` (the deprecated vector API), and
`table.search([1.0, 1.0], fast_search=True)` work with either backend.
`fast_search=True` excludes rows that have not been indexed.
`create_scalar_index` defaults to `replace=True` on both backends. Both scalar
and full-text index creation accept `wait_timeout`. LanceDB Distributed maintenance methods
and full-text index creation accept `wait_timeout`. LanceDB Enterprise maintenance methods
accept the LanceDB Embedded options: cleanup and compaction warn that they are no-ops,
while `optimize` reports an unsupported operation. Removed Tantivy options
produce the same explanatory errors on both backends.
The old LanceDB Distributed keyword names `predicate` for `delete`, `index_name` for
The old LanceDB Enterprise keyword names `predicate` for `delete`, `index_name` for
`drop_index`, `index_uuid` for `index_stats`, and `column` for `create_fts_index`
remain available with deprecation warnings. Use `where`, `name`, `index_name`,
and `field_names`, respectively. For positional calls, use the argument order
documented by `Table` below; specify index options by keyword when migrating
code that used the former LanceDB Distributed-only argument order.
code that used the former LanceDB Enterprise-only argument order.
::: lancedb.table.Table
@@ -466,11 +466,11 @@ scoped to each invocation and support `read`, `readinto`, `seek`, `tell`,
In the 0.41 SDK release, LanceDB Embedded materialized-view creation and refresh require a
source build with the `experimental-functions` Cargo feature. Published Python
packages leave it disabled. Opening, reading, listing and dropping existing views
remain available, as do LanceDB Distributed operations. The same feature
remain available, as do LanceDB Enterprise operations. The same feature
requirement applies to LanceDB Embedded SQL computed-column declaration and refresh; ordinary
eager `add_columns` transforms remain available.
In LanceDB Distributed, creation accepts `auto_refresh_enabled` and
In LanceDB Enterprise, creation accepts `auto_refresh_enabled` and
`auto_refresh_interval_seconds`:
```python
@@ -676,7 +676,7 @@ For external blob references, construct the descriptor struct described by
[blob][lancedb.schema.blob], then wrap it with `pa.ExtensionArray.from_storage`.
Inline `data` and external `uri` representations are mutually exclusive.
LanceDB Distributed SQL returns blob bytes by default. Select `blob_descriptor(video)` to
LanceDB Enterprise SQL returns blob bytes by default. Select `blob_descriptor(video)` to
return an openable reference instead, then use
[`open_blob_file`][lancedb.table.Table.open_blob_file] or the lazy iterable
[`open_blob_files`][lancedb.table.Table.open_blob_files]:
@@ -693,7 +693,7 @@ for row in rows.to_pylist():
frame = extract_frame(video, row["timestamp"])
```
This example uses a LanceDB Distributed SQL connection that produces source-bearing
This example uses a LanceDB Enterprise SQL connection that produces source-bearing
descriptors. The descriptor contains `kind`, `position`, `size`, `blob_id`,
`blob_uri`, and a `source` struct with `uri`, `version`, `committed_at_micros`,
`branch`, `column`, `row_reference`, and `row_is_address`. The opener verifies
@@ -725,7 +725,7 @@ async for video in async_videos.open_blob_files(rows["video"]):
```
Payload bytes load on reads. Opening an external blob with unspecified size
can issue a metadata-only HEAD request. LanceDB Distributed reads use authenticated range
can issue a metadata-only HEAD request. LanceDB Enterprise reads use authenticated range
requests that validate the captured URI and commit timestamp.
Blobs inside lists can be written and queried as descriptors. They are omitted
+1 -1
View File
@@ -189,7 +189,7 @@ def test_function_version_binds_a_column(tmp_path):
table = lancedb.connect(tmp_path).create_table("t", [{"value": 1.0}])
with pytest.raises(
NotImplementedError,
match="Function columns are supported only in LanceDB Distributed",
match="Function columns are supported only in LanceDB Enterprise",
):
table.add_columns({"doubled": application})
+2 -2
View File
@@ -97,10 +97,10 @@ Event responses have [row limits](/basics/limits#jobs). An explicit limit can
request more than the default, but it does not guarantee a complete event
history.
## Embedded and Distributed execution {#in-process}
## Embedded and Enterprise execution {#in-process}
The following table describes LanceDB Embedded operations and registry jobs on
LanceDB Distributed (provided by LanceDB Enterprise).
LanceDB Enterprise.
SQL-backed job handles follow the query lifecycle described below.
| | Embedded | Enterprise registry job |
+3 -3
View File
@@ -9,9 +9,9 @@ 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.
process; your data can live on local disk or in object storage. In LanceDB
Enterprise, query execution, indexing and maintenance run on the service,
outside your application.
The [quickstart](/quickstart) includes installation instructions and complete
examples in all three languages. For connection settings, see
+1 -1
View File
@@ -102,7 +102,7 @@ and background work sized and scaled as separate components. A control plane gov
and cluster lifecycle, separately from the data-plane components in the diagram below. See
[Distributed search](/enterprise/distributed-search) for how query nodes and plan executors divide a request.
![LanceDB Distributed: the LanceDB SDK connects to LanceDB Enterprise, where a query fleet, executor and cache fleets, the realtime engine, and a jobs fleet run on top of the Lance format and object storage.](/static/assets/images/overview/lancedb-distributed.png)
![The LanceDB SDK connects to LanceDB Enterprise, where a query fleet, executor and cache fleets, the realtime engine, and a jobs fleet run on top of the Lance format and object storage.](/static/assets/images/overview/lancedb-distributed.png)
Teams choose Enterprise to:
+1 -1
View File
@@ -21,7 +21,7 @@ objects, and configure how your application reaches the data.
| --- | --- | --- |
| `./.lancedb` | LanceDB Embedded, with local storage | In your application |
| `s3://bucket/path`, `gs://bucket/path`, `az://container/path` | LanceDB Embedded, with object storage | In your application |
| `db://my-database` | LanceDB Enterprise | On the Enterprise service (LanceDB Distributed) |
| `db://my-database` | LanceDB Enterprise | On the Enterprise service |
[Connect to LanceDB](/basics/catalog) has examples for each connection type.
A connection to object storage still uses the embedded library: your process
Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 1.3 MiB

+3 -3
View File
@@ -27,7 +27,7 @@ In **LanceDB Embedded**, a table handle sees its own committed writes. By defaul
not automatically check for changes made through other handles or processes.
Use a read consistency interval or `checkout_latest()` to pick up those changes.
In **LanceDB Distributed** (provided by LanceDB Enterprise), readers use the
In **LanceDB Enterprise**, readers use the
service's configured freshness policy.
A connection can request fresher data. When a read must include a completed
write, use a zero interval or call `checkout_latest()` after the write, with a
@@ -38,13 +38,13 @@ client and server that support these freshness controls.
Set `read_consistency_interval` when connecting. This controls when reads
pick up newer table versions; it does not change how writes commit.
| Setting | Embedded | Distributed |
| Setting | Embedded | Enterprise |
| --- | --- | --- |
| **Unset** | Keep the open table version until explicitly refreshed or changed by that handle. | Use the service's configured freshness policy. |
| **Zero** | Check for the latest committed version on every read. | Request the latest committed version on every read. |
| **Non-zero interval** | Check for updates on a read once the interval since the last check has elapsed. | Request data no older than the interval allows; the service may return fresher data. |
`checkout_latest()` explicitly refreshes an Embedded table handle. On Distributed it
`checkout_latest()` explicitly refreshes an Embedded table handle. On Enterprise it
asks subsequent reads on that handle to reflect data at least as recent as the
refresh request. To read a fixed historical version instead, use
[table versioning](/management/table#versioning).
+4 -4
View File
@@ -115,14 +115,14 @@ describe("remote connection", () => {
...options,
mode: "overwrite",
}),
).rejects.toThrow(/write_options.*LanceDB Distributed/);
).rejects.toThrow(/write_options.*LanceDB Enterprise/);
await expect(
db.createEmptyTable(
"test",
new Schema([new Field("value", new Int64(), true)]),
options,
),
).rejects.toThrow(/write_options.*LanceDB Distributed/);
).rejects.toThrow(/write_options.*LanceDB Enterprise/);
},
);
expect(requests).toEqual([]);
@@ -141,7 +141,7 @@ describe("remote connection", () => {
await expect(
db.openTable("test", undefined, options),
).rejects.toThrow(
/not supported for table access in LanceDB Distributed/,
/not supported for table access in LanceDB Enterprise/,
);
},
);
@@ -318,7 +318,7 @@ describe("remote connection", () => {
],
];
for (const [run, operation] of cases) {
let message = `LanceDBError: not supported: ${operation} is not supported in LanceDB Distributed.`;
let message = `LanceDBError: not supported: ${operation} is not supported in LanceDB Enterprise.`;
if (operation === "IVF_HNSW_PQ") {
message += " Please use IVF_HNSW_SQ instead.";
}
+4 -4
View File
@@ -4559,14 +4559,14 @@ describe.each(arrowVersions)(
];
const table = await db.createTable("prewarm_data_test", data);
// prewarmData is only supported in LanceDB Distributed. We verify the call
// prewarmData is only supported in LanceDB Enterprise. We verify the call
// is wired through napi and surfaces the expected error for both
// arg shapes (undefined and string[]).
await expect(table.prewarmData()).rejects.toThrow(
"prewarm_data is currently only supported in LanceDB Distributed",
"prewarm_data is currently only supported in LanceDB Enterprise",
);
await expect(table.prewarmData(["text"])).rejects.toThrow(
"prewarm_data is currently only supported in LanceDB Distributed",
"prewarm_data is currently only supported in LanceDB Enterprise",
);
});
@@ -5577,7 +5577,7 @@ describe("computed columns", () => {
const db = await connect(tmpDir.name);
const table = await db.createTable("errors_local", [{ x: 1 }]);
await expect(table.functionErrors()).rejects.toThrow(
"recorded only in LanceDB Distributed",
"recorded only in LanceDB Enterprise",
);
});
+1 -1
View File
@@ -274,7 +274,7 @@ export class BlobFile {
export type BlobReadOptions = {
/**
* Cancels the read. The call rejects with `signal.reason`, and the native
* read stops, including in-flight requests to a LanceDB Distributed table.
* read stops, including in-flight requests to a LanceDB Enterprise table.
*/
signal?: AbortSignal;
};
+2 -2
View File
@@ -272,7 +272,7 @@ export abstract class Connection {
*
* LanceDB Embedded creation and refresh require a source build with the
* `experimental-functions` Cargo feature, disabled in published packages.
* LanceDB Distributed operations do not require this feature.
* LanceDB Enterprise operations do not require this feature.
*
* The view is populated before creation returns. Set `withNoData` to create
* only its definition and empty backing table. The view is a normal table:
@@ -558,7 +558,7 @@ export abstract class Connection {
/**
* Rename a table.
*
* Supported in LanceDB Distributed and by namespace backends that implement
* Supported in LanceDB Enterprise and by namespace backends that implement
* renaming. Directory namespaces support renaming tables resolved through their
* manifest, including tables within or across child namespaces. LanceDB Embedded
* connections and directory-listing root tables reject with a "not supported" error.
+9 -9
View File
@@ -129,7 +129,7 @@ export interface AddDataOptions {
* Whether blob URIs outside registered external bases may be written.
*
* Defaults to `false`. This option is supported only in LanceDB Embedded;
* LanceDB Distributed returns an error when it is enabled. An enabled write
* LanceDB Enterprise returns an error when it is enabled. An enabled write
* stores the absolute URI reference without registering a base or copying
* the external object into the database. The object must remain accessible
* when the blob is read later.
@@ -443,7 +443,7 @@ export abstract class Table {
* Large columns (e.g. high-dimensional vectors or binary data) may not be
* practical to prewarm.
*
* This feature is currently only supported in LanceDB Distributed.
* This feature is currently only supported in LanceDB Enterprise.
*/
abstract prewarmData(columns?: string[]): Promise<void>;
@@ -601,7 +601,7 @@ export abstract class Table {
*
* LanceDB Embedded computed-column declaration and refresh require a source
* build with the `experimental-functions` Cargo feature. Published packages
* disable it; LanceDB Distributed operations remain available.
* disable it; LanceDB Enterprise operations remain available.
*
* The `{ computed }` form stores the expression rather than evaluating it
* now: the column is committed with no values, and rows get them from
@@ -613,7 +613,7 @@ export abstract class Table {
* declaration reads a column, that column cannot be renamed, retyped or
* dropped.
*
* In LanceDB Distributed the expression is planned by the
* In LanceDB Enterprise the expression is planned by the
* server, and the refresh runs as a server job -- see
* {@link Table#refreshColumnAsync}.
* @param {AddColumnsSql[] | Field | Field[] | Schema} newColumnTransforms Either:
@@ -646,7 +646,7 @@ export abstract class Table {
* Rows appended since the last refresh are filled by the next one, and
* rows whose inputs changed since they were computed are recomputed;
* everything else is left as it is. LanceDB Embedded only: in LanceDB
* Distributed a refresh runs as a server job, through {@link Table#refreshColumnAsync}.
* Enterprise a refresh runs as a server job, through {@link Table#refreshColumnAsync}.
* @param {string} column The name of the computed column to fill.
* @returns {Promise<RefreshColumnResult>} A promise that resolves to the
* number of rows filled and the new version number of the table.
@@ -657,14 +657,14 @@ export abstract class Table {
* Like {@link Table#refreshColumn}, but returns a handle to the refresh
* job instead of blocking until it completes.
* LanceDB Embedded refresh requires a source build with
* `experimental-functions`. LanceDB Distributed jobs do not require this
* `experimental-functions`. LanceDB Enterprise jobs do not require this
* feature.
*
* The job may already be complete when returned; callers must not assume
* the column is filled until {@link Job.wait} resolves. Invalid input --
* an unknown column, or one that is not computed -- rejects here rather
* than failing the job. In LanceDB Embedded the job runs in-process; in
* LanceDB Distributed it is the server's backfill job.
* LanceDB Enterprise it is the server's backfill job.
* @param {string} column The name of the computed column to fill.
* @example
* ```ts
@@ -681,7 +681,7 @@ export abstract class Table {
* A refresh running under a skip policy records each row it skipped with
* the input that failed and the error. This lists those records, newest
* job first, plus a summary for any fragment whose per-row detail was
* capped. LanceDB Distributed only; reading errors needs read
* capped. LanceDB Enterprise only; reading errors needs read
* access to the table, since a message carries the value that failed.
* @param {FunctionErrorsOptions} options Optional filters: `jobId`,
* `column`, and `limit` (server default 10000, cap 100000).
@@ -1000,7 +1000,7 @@ export abstract class Table {
* Specify exactly one of `column` or `indexName`.
*
* Model-backed tokenizers such as `jieba/*` and `lindera/*` are rebuilt in
* the client process from index metadata. In LanceDB Distributed, this means the
* the client process from index metadata. In LanceDB Enterprise, this means the
* same tokenizer model files must also exist locally (under
* `LANCE_LANGUAGE_MODEL_HOME`) and must match the files the server uses. A
* mismatch cannot be detected: the returned tokens may differ from what the
+14 -15
View File
@@ -831,7 +831,7 @@ impl Table {
self.inner_ref()?
.as_native()
.ok_or_else(|| lancedb::Error::NotSupported {
message: "uses_v2_manifest_paths is not supported in LanceDB Distributed.".into(),
message: "uses_v2_manifest_paths is not supported in LanceDB Enterprise.".into(),
})
.default_error()?
.uses_v2_manifest_paths()
@@ -844,8 +844,7 @@ impl Table {
self.inner_ref()?
.as_native()
.ok_or_else(|| lancedb::Error::NotSupported {
message: "migrate_manifest_paths_v2 is not supported in LanceDB Distributed."
.into(),
message: "migrate_manifest_paths_v2 is not supported in LanceDB Enterprise.".into(),
})
.default_error()?
.migrate_manifest_paths_v2()
@@ -868,40 +867,40 @@ pub struct IndexConfig {
pub columns: Vec<String>,
/// The UUID of the first segment of the index.
///
/// `undefined` in LanceDB Distributed, which does not yet surface this.
/// `undefined` in LanceDB Enterprise, which does not yet surface this.
pub index_uuid: Option<String>,
/// The protobuf type URL, a precise type identifier for the index.
///
/// `undefined` in LanceDB Distributed.
/// `undefined` in LanceDB Enterprise.
pub type_url: Option<String>,
/// When the index was created.
///
/// `undefined` in LanceDB Distributed or indices created before timestamps were tracked.
/// `undefined` in LanceDB Enterprise or indices created before timestamps were tracked.
pub created_at: Option<DateTime<Utc>>,
/// The number of rows indexed, across all segments.
///
/// May be `undefined` in LanceDB Distributed if the server does not report it.
/// May be `undefined` in LanceDB Enterprise if the server does not report it.
pub num_indexed_rows: Option<i64>,
/// The number of rows not yet covered by this index.
///
/// May be `undefined` in LanceDB Distributed if the server does not report it.
/// May be `undefined` in LanceDB Enterprise if the server does not report it.
pub num_unindexed_rows: Option<i64>,
/// The total size in bytes of all index files across all segments.
///
/// `undefined` in LanceDB Distributed or indices without size tracking.
/// `undefined` in LanceDB Enterprise or indices without size tracking.
pub size_bytes: Option<i64>,
/// The number of segments that make up the index.
///
/// `undefined` in LanceDB Distributed.
/// `undefined` in LanceDB Enterprise.
pub num_segments: Option<i32>,
/// The on-disk index format version.
///
/// `undefined` in LanceDB Distributed.
/// `undefined` in LanceDB Enterprise.
pub index_version: Option<i32>,
/// Index-type-specific details parsed as a JavaScript object.
///
/// Falls back to a raw string if JSON parsing fails. `undefined` in
/// LanceDB Distributed or when details are unavailable.
/// LanceDB Enterprise or when details are unavailable.
pub index_details: Option<serde_json::Value>,
}
@@ -1617,11 +1616,11 @@ impl From<lancedb::function::FunctionErrors> for FunctionErrors {
#[napi(object)]
pub struct RefreshMaterializedViewResult {
/// How the view was brought up to date: "rebuild", or absent for LanceDB Distributed SQL refreshes.
/// How the view was brought up to date: "rebuild", or absent for LanceDB Enterprise SQL refreshes.
pub mode: Option<String>,
/// Rows written by this refresh, or absent for LanceDB Distributed SQL refreshes.
/// Rows written by this refresh, or absent for LanceDB Enterprise SQL refreshes.
pub rows_written: Option<i64>,
/// Source version refreshed to, or absent for LanceDB Distributed SQL refreshes.
/// Source version refreshed to, or absent for LanceDB Enterprise SQL refreshes.
pub source_version: Option<i64>,
pub version: i64,
}
+2 -2
View File
@@ -300,11 +300,11 @@ def connect(
raise ValueError(f"Unknown keyword arguments: {unknown_kwargs}")
if session is not None:
raise NotImplementedError(
"session is not supported for LanceDB Distributed connections"
"session is not supported for LanceDB Enterprise connections"
)
if manifest_enabled:
raise NotImplementedError(
"manifest_enabled is not supported for LanceDB Distributed connections"
"manifest_enabled is not supported for LanceDB Enterprise connections"
)
if api_key is None:
api_key = os.environ.get("LANCEDB_API_KEY")
+15 -15
View File
@@ -682,7 +682,7 @@ class DBConnection(EnforceOverrides):
LanceDB Embedded creation and refresh require a source build with the
``experimental-functions`` Cargo feature. Published packages leave it
disabled; LanceDB Distributed operations remain available.
disabled; LanceDB Enterprise operations remain available.
The view is populated before creation returns. Pass
``with_no_data=True`` to create only its definition and empty backing
@@ -706,11 +706,11 @@ class DBConnection(EnforceOverrides):
with_no_data: bool, default False
Skip the initial refresh and leave the backing table empty.
auto_refresh_enabled: bool, optional
Enable or disable automatic refresh in LanceDB Distributed.
Enable or disable automatic refresh in LanceDB Enterprise.
When omitted, the server determines whether automatic refresh is enabled.
LanceDB Embedded does not support automatic refresh.
auto_refresh_interval_seconds: float, optional
Positive, finite refresh interval in seconds in LanceDB Distributed.
Positive, finite refresh interval in seconds in LanceDB Enterprise.
When omitted, the server determines when to refresh.
Returns
@@ -736,7 +736,7 @@ class DBConnection(EnforceOverrides):
"""Submit materialized-view creation and return its job.
The job may already be complete in LanceDB Embedded. In LanceDB
Distributed, creation
Enterprise, creation
submits CREATE MATERIALIZED VIEW through the SQL server. Its job has
``job_type == "query"`` and ``id`` identifies the connection-scoped
query. Registry event history is unavailable.
@@ -776,7 +776,7 @@ class DBConnection(EnforceOverrides):
) -> None:
"""Drop a materialized view.
In LanceDB Distributed, drops wait for the SQL command to remove the
In LanceDB Enterprise, drops wait for the SQL command to remove the
catalog binding.
Physical cleanup continues in the background.
"""
@@ -790,7 +790,7 @@ class DBConnection(EnforceOverrides):
"""Start dropping a materialized view and return its job.
The job may already be complete in LanceDB Embedded. In LanceDB
Distributed, jobs have
Enterprise, jobs have
type ``query`` and use the SQL query ID as ``id``. Waiting confirms
catalog removal; physical cleanup continues in the background.
"""
@@ -1356,7 +1356,7 @@ class DBConnection(EnforceOverrides):
memory, per-worker GPU limit, and CPU, memory, and ephemeral-storage
limits. This describes configured hardware, not current free capacity.
LanceDB Distributed only; the principal needs System Usage permission.
LanceDB Enterprise only; the principal needs System Usage permission.
Raises ``NotImplementedError`` when the server predates
``GET /v1/gpu/classes``.
"""
@@ -1937,7 +1937,7 @@ class LanceDBConnection(DBConnection):
LanceDB Embedded creation and refresh require a source build with the
``experimental-functions`` Cargo feature. Published packages leave it
disabled; LanceDB Distributed operations remain available.
disabled; LanceDB Enterprise operations remain available.
See
[DBConnection.create_materialized_view][lancedb.DBConnection.create_materialized_view].
@@ -2557,12 +2557,12 @@ class AsyncConnection(object):
To obtain a connection you can use the [connect_async][lancedb.connect_async]
function.
This could be a LanceDB Embedded connection (using lance) or a LanceDB Distributed
connection (e.g. for connecting to LanceDB Enterprise)
This could be a LanceDB Embedded connection (using Lance) or a connection
to LanceDB Enterprise.
Embedded connections do not currently hold any open resources but they may do so in
the future (for example, for shared cache or connections to catalog services)
Distributed connections represent an open connection to the server. The
Enterprise connections represent an open connection to the server. The
[close][lancedb.db.AsyncConnection.close] method can be used to release any
underlying resources eagerly. The connection can also be used as a context manager.
@@ -3199,7 +3199,7 @@ class AsyncConnection(object):
LanceDB Embedded creation and refresh require a source build with the
``experimental-functions`` Cargo feature. Published packages leave it
disabled; LanceDB Distributed operations remain available.
disabled; LanceDB Enterprise operations remain available.
See
[DBConnection.create_materialized_view][lancedb.DBConnection.create_materialized_view].
"""
@@ -3234,7 +3234,7 @@ class AsyncConnection(object):
"""Submit materialized-view creation and return its job.
Wait for the returned job before opening or querying the view. In LanceDB
Distributed, creation uses SQL; ``job_type`` is ``"query"`` and ``id``
Enterprise, creation uses SQL; ``job_type`` is ``"query"`` and ``id``
identifies that query on this connection.
"""
source, native_options = await self._materialized_view_source(
@@ -3288,7 +3288,7 @@ class AsyncConnection(object):
) -> None:
"""Drop a materialized view.
In LanceDB Distributed, drops wait for the SQL command to remove the
In LanceDB Enterprise, drops wait for the SQL command to remove the
catalog binding.
Physical cleanup continues in the background.
"""
@@ -3304,7 +3304,7 @@ class AsyncConnection(object):
) -> AsyncJob[None]:
"""Start dropping a materialized view and return its job.
In LanceDB Distributed, the job has type ``query`` and its ID identifies
In LanceDB Enterprise, the job has type ``query`` and its ID identifies
the SQL query. Await :meth:`AsyncJob.wait` for catalog removal; physical
cleanup continues in the background.
"""
+1 -1
View File
@@ -691,7 +691,7 @@ class FunctionBinding(_RemoteValue):
class RefreshColumnResult(_RemoteValue):
"""Terminal result of an expression-backed or Function-backed refresh Job.
LanceDB Embedded jobs produce this value in process. LanceDB Distributed
LanceDB Embedded jobs produce this value in process. LanceDB Enterprise
decodes the same value from the durable server-job terminal payload.
"""
+3 -3
View File
@@ -167,7 +167,7 @@ class FTS:
Lance tokenizer can panic on malformed triples; see
https://github.com/lance-format/lance/issues/8812.
LanceDB Distributed uses the same ``FTS()`` configuration and requires a
LanceDB Enterprise uses the same ``FTS()`` configuration and requires a
server that supports JSON FTS. Wait for ``table.wait_for_index(["doc_idx"])``
before searching a newly created index there with its default name.
@@ -236,12 +236,12 @@ class FTS:
memory_limit : int, optional
The total memory limit in MiB for the local FTS build stage. The limit
is divided evenly among indexing workers. This build-only setting is
not persisted with the index and does not apply to LanceDB Distributed.
not persisted with the index and does not apply to LanceDB Enterprise.
num_workers : int, optional
The number of workers for a local FTS build. By default Lance uses
roughly half of the available CPU cores. The effective value is
limited by the available compute capacity. This build-only setting is
not persisted with the index and does not apply to LanceDB Distributed.
not persisted with the index and does not apply to LanceDB Enterprise.
document_granularity : DocumentGranularity, default ROW
``ROW`` treats the selected text in one table row as one document.
``LIST_ELEMENT`` treats each element of the deepest list on the indexed
+5 -5
View File
@@ -6,7 +6,7 @@ maintained by refresh. See ``DBConnection.create_materialized_view``.
LanceDB Embedded creation and refresh require the ``experimental-functions``
Cargo feature in a source build. Published packages disable it. Opening, reading,
listing and dropping existing views and LanceDB Distributed operations remain
listing and dropping existing views and LanceDB Enterprise operations remain
available.
"""
@@ -189,12 +189,12 @@ class AsyncMaterializedView:
) -> "RefreshMaterializedViewResult":
"""Recompute the view from its source.
In LanceDB Distributed, ``full=True`` forces a rebuild; otherwise the
In LanceDB Enterprise, ``full=True`` forces a rebuild; otherwise the
server chooses the refresh mode. LanceDB Embedded views always rebuild,
and ``source_version`` selects a source version instead of the latest.
LanceDB Distributed SQL refreshes do not support source-version pinning.
LanceDB Enterprise SQL refreshes do not support source-version pinning.
LanceDB Distributed results leave ``mode``, ``rows_written``, and
LanceDB Enterprise results leave ``mode``, ``rows_written``, and
``source_version`` as ``None`` because the SQL job adapter does not expose
these metrics.
"""
@@ -208,7 +208,7 @@ class AsyncMaterializedView:
"""Submit a refresh and return its job without waiting.
The job may already be complete in LanceDB Embedded. In LanceDB
Distributed, refreshes are submitted through the SQL service. Options and
Enterprise, refreshes are submitted through the SQL service. Options and
result metrics follow
[refresh][lancedb.materialized_view.AsyncMaterializedView.refresh].
"""
+1 -1
View File
@@ -548,7 +548,7 @@ class Permutation:
picklable classes implementing ``__call__``. Lambdas and closures over
local variables don't pickle with the default protocol.
A factory is optional for normal LanceDB Embedded and Distributed connections:
A factory is optional for normal LanceDB Embedded and Enterprise connections:
if not set, ``__getstate__`` captures the table's own picklable reopen
state. Use a factory when that default state is not enough, for example
when credentials should be loaded from the worker environment instead
+5 -5
View File
@@ -204,7 +204,7 @@ def _supports_local_blob_fetch(
def _blob_bytes_without_snapshot_error() -> NotImplementedError:
return NotImplementedError(
"blob_mode='bytes' cannot safely materialize blob columns without a "
"stable table snapshot. LanceDB Distributed and namespace QueryTable pushdown "
"stable table snapshot. LanceDB Enterprise and namespace QueryTable pushdown "
"run the query on a server, so the blob fetch could read another table "
"version. Use blob_mode='descriptions'."
)
@@ -1263,7 +1263,7 @@ class LanceQueryBuilder(ABC):
mode and for legacy blob columns. Other local blob v2
queries return descriptors in ``"lazy"`` and ``"descriptions"``
modes, or payloads in ``"bytes"`` mode, through :meth:`to_arrow`.
LanceDB Distributed blob queries support only ``"descriptions"`` until a
LanceDB Enterprise blob queries support only ``"descriptions"`` until a
stable
table snapshot can bind the query and blob fetches.
**kwargs
@@ -3603,7 +3603,7 @@ class AsyncQueryBase(object):
``fetch_blobs`` reads. ``"descriptions"`` returns them without it.
``"bytes"`` returns payload bytes and raises for legacy blob columns
and blobs inside lists.
LanceDB Distributed and namespace query pushdown refuse ``"bytes"``.
LanceDB Enterprise and namespace query pushdown refuse ``"bytes"``.
"""
blob_sources = await self._validated_blob_sources(blob_mode)
batch_iter = await self.to_batches(timeout=timeout)
@@ -3682,7 +3682,7 @@ class AsyncQueryBase(object):
mode and for legacy blob columns. Other local blob v2
queries return descriptors in ``"lazy"`` and ``"descriptions"``
modes, or payloads in ``"bytes"`` mode, through :meth:`to_arrow`.
LanceDB Distributed blob queries support only ``"descriptions"`` until a
LanceDB Enterprise blob queries support only ``"descriptions"`` until a
stable
table snapshot can bind the query and blob fetches.
**kwargs
@@ -4331,7 +4331,7 @@ class AsyncVectorQueryBase:
you the desired recall.
LanceDB retains this as `nprobes` through LanceDB Embedded and LanceDB
Distributed request construction. Lance sets both probe bounds to this
Enterprise request construction. Lance sets both probe bounds to this
value. Explicit minimum or maximum settings can override their respective
bounds.
"""
+10 -10
View File
@@ -104,7 +104,7 @@ def _tls_config_to_dict(config: Optional[TlsConfig]) -> Optional[dict[str, Any]]
def _client_config_to_dict(config: ClientConfig) -> dict[str, Any]:
if config.header_provider is not None:
raise ValueError(
"Cannot serialize a LanceDB Distributed connection with a header_provider. "
"Cannot serialize a LanceDB Enterprise connection with a header_provider. "
"Use static api_key/extra_headers or provide a worker-side "
"connection factory instead."
)
@@ -249,16 +249,16 @@ class RemoteDBConnection(DBConnection):
@property
def session(self) -> Optional["Session"]:
"""LanceDB Distributed connections do not expose a local cache session."""
"""LanceDB Enterprise connections do not expose a local cache session."""
raise NotImplementedError(
"session is not supported by LanceDB Distributed connections"
"session is not supported by LanceDB Enterprise connections"
)
@property
def read_consistency_interval(self) -> Optional[timedelta]:
"""LanceDB Distributed connections do not expose a read consistency interval."""
"""LanceDB Enterprise connections do not expose a read consistency interval."""
raise NotImplementedError(
"read_consistency_interval is not supported by LanceDB Distributed "
"read_consistency_interval is not supported by LanceDB Enterprise "
"connections"
)
@@ -667,11 +667,11 @@ class RemoteDBConnection(DBConnection):
The embedding functions to store in the table schema and use to
generate vectors when creating the table or adding data.
storage_options: dict, optional
Not supported in LanceDB Distributed. Raises NotImplementedError.
Not supported in LanceDB Enterprise. Raises NotImplementedError.
data_storage_version: str, optional
Not supported in LanceDB Distributed. Raises NotImplementedError.
Not supported in LanceDB Enterprise. Raises NotImplementedError.
enable_v2_manifest_paths: bool, optional
Not supported in LanceDB Distributed. Raises NotImplementedError.
Not supported in LanceDB Enterprise. Raises NotImplementedError.
Returns
-------
@@ -745,7 +745,7 @@ class RemoteDBConnection(DBConnection):
if value is not None:
raise NotImplementedError(
f"{option} is not supported for table creation in "
"LanceDB Distributed"
"LanceDB Enterprise"
)
if exist_ok:
if mode == "create":
@@ -1313,7 +1313,7 @@ class RemoteDBConnection(DBConnection):
default_namespace_path: Optional[List[str]] = None,
parameters: Optional[QueryParameters] = None,
) -> SqlQuery:
"""Start executing SQL through this LanceDB Distributed connection.
"""Start executing SQL through this LanceDB Enterprise connection.
Unqualified tables use this connection's database and the
``["public"]`` namespace by default. Fully qualified table names may
+18 -18
View File
@@ -126,7 +126,7 @@ class RemoteTable(Table):
def _serialized_connection_state(self) -> str:
if self._connection_state is None:
raise RuntimeError(
"Cannot reopen this LanceDB Distributed table because it does not "
"Cannot reopen this LanceDB Enterprise table because it does not "
"carry serialized connection state"
)
if callable(self._connection_state):
@@ -273,23 +273,23 @@ class RemoteTable(Table):
return LOOP.run(self._table.list_versions())
def to_arrow(self, *, blob_mode: BlobMode = "lazy") -> pa.Table:
"""to_arrow() is not supported in LanceDB Distributed."""
"""to_arrow() is not supported in LanceDB Enterprise."""
validate_blob_mode(blob_mode)
raise NotImplementedError(
"to_arrow() is not supported in LanceDB Distributed. "
"to_arrow() is not supported in LanceDB Enterprise. "
"Use table.search().to_arrow() instead."
)
def to_pandas(self, blob_mode: BlobMode = "lazy", **kwargs):
"""to_pandas() is not supported in LanceDB Distributed."""
"""to_pandas() is not supported in LanceDB Enterprise."""
validate_blob_mode(blob_mode)
raise NotImplementedError(
"to_pandas() is not supported in LanceDB Distributed. "
"to_pandas() is not supported in LanceDB Enterprise. "
"Use table.search().to_pandas() instead."
)
def to_lance(self, **kwargs) -> "lance.LanceDataset":
"""Direct Lance dataset access is not supported in LanceDB Distributed.
"""Direct Lance dataset access is not supported in LanceDB Enterprise.
Use ``table.search().to_arrow()`` to read query results through the server.
"""
@@ -298,7 +298,7 @@ class RemoteTable(Table):
def to_polars(self, batch_size=None) -> "pl.LazyFrame":
"""Use ``table.search().to_polars()`` to read query results."""
raise NotImplementedError(
"to_polars() is not supported in LanceDB Distributed. "
"to_polars() is not supported in LanceDB Enterprise. "
"Use table.search().to_polars() instead."
)
@@ -331,7 +331,7 @@ class RemoteTable(Table):
"""Tokenize a query using the tokenizer configured on an FTS index.
Model-backed tokenizers such as ``jieba/*`` and ``lindera/*`` are
rebuilt in the client process from index metadata. In LanceDB Distributed,
rebuilt in the client process from index metadata. In LanceDB Enterprise,
this means the same tokenizer model files must also exist locally
(under ``LANCE_LANGUAGE_MODEL_HOME``) and must match the files the
server uses. A mismatch cannot be detected: the returned tokens may
@@ -638,7 +638,7 @@ class RemoteTable(Table):
if accelerator is not None:
logging.warning(
"GPU accelerator is not supported in LanceDB Distributed "
"GPU accelerator is not supported in LanceDB Enterprise "
"and will be ignored."
)
@@ -743,7 +743,7 @@ class RemoteTable(Table):
capped at the number of CPU cores. Lower this if bulk ingestion is
using too much memory.
allow_external_blob_outside_bases: bool, default False
Not supported in LanceDB Distributed. Setting this raises.
Not supported in LanceDB Enterprise. Setting this raises.
Returns
-------
@@ -1048,20 +1048,20 @@ class RemoteTable(Table):
delete_unverified: bool = False,
):
"""
cleanup_old_versions() is a no-op in LanceDB Distributed.
cleanup_old_versions() is a no-op in LanceDB Enterprise.
"""
warnings.warn(
"cleanup_old_versions() is a no-op in LanceDB Distributed.",
"cleanup_old_versions() is a no-op in LanceDB Enterprise.",
stacklevel=2,
)
pass
def compact_files(self, *args, **kwargs):
"""
compact_files() is a no-op in LanceDB Distributed.
compact_files() is a no-op in LanceDB Enterprise.
"""
warnings.warn(
"compact_files() is a no-op in LanceDB Distributed.",
"compact_files() is a no-op in LanceDB Enterprise.",
stacklevel=2,
)
pass
@@ -1074,7 +1074,7 @@ class RemoteTable(Table):
retrain: bool = False,
compaction_options: Optional[CompactionOptions] = None,
):
"""optimize() is not supported in LanceDB Distributed."""
"""optimize() is not supported in LanceDB Enterprise."""
return LOOP.run(
self._table.optimize(
cleanup_older_than=cleanup_older_than,
@@ -1226,7 +1226,7 @@ class RemoteTable(Table):
)
def close_rte_writers(self) -> None:
"""No-op in LanceDB Distributed (no local shard writers)."""
"""No-op in LanceDB Enterprise (no local shard writers)."""
return LOOP.run(self._table.close_rte_writers())
@_deprecated_keyword("index_name", "name")
@@ -1255,7 +1255,7 @@ class RemoteTable(Table):
This is a hint to the database that the given columns will be accessed
in the future and the database should prefetch the data if possible.
Currently only supported in LanceDB Distributed.
Currently only supported in LanceDB Enterprise.
This call initiates prewarming and returns once the request is accepted.
It is idempotent and safe to call from multiple clients concurrently.
@@ -1284,7 +1284,7 @@ class RemoteTable(Table):
def uri(self) -> str:
"""The table URI (storage location).
In LanceDB Distributed, this fetches the location from the server via describe.
In LanceDB Enterprise, this fetches the location from the server via describe.
"""
return LOOP.run(self._table.uri())
+1 -1
View File
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: Copyright The LanceDB Authors
"""Handles to SQL queries running on a LanceDB Distributed database."""
"""Handles to SQL queries running on a LanceDB Enterprise database."""
from typing import Any, Mapping, Optional, Sequence, Union
from uuid import UUID
+33 -33
View File
@@ -1577,7 +1577,7 @@ class Table(ABC):
def to_lance(self, **kwargs) -> lance.LanceDataset:
"""Return a LanceDB Embedded table as a lance.LanceDataset.
LanceDB Distributed tables cannot be opened as Lance datasets by the
LanceDB Enterprise tables cannot be opened as Lance datasets by the
client. Use
``table.search().to_arrow()`` to read them through the server.
@@ -1590,7 +1590,7 @@ class Table(ABC):
def to_polars(self, batch_size=None) -> "pl.LazyFrame":
"""Return the table as a Polars LazyFrame.
In LanceDB Distributed, use ``table.search().to_polars()`` to convert query
In LanceDB Enterprise, use ``table.search().to_polars()`` to convert query
results to a Polars DataFrame.
Parameters
@@ -2571,7 +2571,7 @@ class Table(ABC):
Blobs inside lists cannot be fetched by row id yet.
LanceDB Distributed limits each request to 1024 row IDs and 64 MiB of blob
LanceDB Enterprise limits each request to 1024 row IDs and 64 MiB of blob
bytes. The client splits requests automatically and reads an individual
larger blob through the Range route. This method still materializes all
bytes in memory; for large values use :meth:`fetch_blob_files`.
@@ -2598,7 +2598,7 @@ class Table(ABC):
results are returned.
Row IDs can be obtained from a query with ``with_row_id(True)``.
LanceDB Distributed reads the requested ranges through version-pinned blob
LanceDB Enterprise reads the requested ranges through version-pinned blob
handles using HTTP byte-range requests.
"""
@@ -2615,7 +2615,7 @@ class Table(ABC):
a ``list[int]``, an integer Arrow array or chunked array, or a query
``pyarrow.Table`` carrying row identity via ``_rowid`` or a
``_lance_row_id`` field on the blob descriptor. Null blob values return
``None``. LanceDB Distributed requires server version 0.5.0 or newer.
``None``. LanceDB Enterprise requires server version 0.5.0 or newer.
``_rowid`` values stay valid after compaction when the table has stable
row ids.
@@ -2852,7 +2852,7 @@ class Table(ABC):
Notes
-----
This function is not available in LanceDB Distributed, which manages
This function is not available in LanceDB Enterprise, which manages
cleanup for you automatically.
"""
@@ -2874,7 +2874,7 @@ class Table(ABC):
Notes
-----
This function is not available in LanceDB Distributed, which manages
This function is not available in LanceDB Enterprise, which manages
compaction for you automatically.
"""
@@ -2961,7 +2961,7 @@ class Table(ABC):
Specify exactly one of ``column`` or ``index_name``.
Model-backed tokenizers such as ``jieba/*`` and ``lindera/*`` are
rebuilt in the client process from index metadata. In LanceDB Distributed,
rebuilt in the client process from index metadata. In LanceDB Enterprise,
this means the same tokenizer model files must also exist locally
(under ``LANCE_LANGUAGE_MODEL_HOME``) and must match the files the
server uses. A mismatch cannot be detected: the returned tokens may
@@ -3018,11 +3018,11 @@ class Table(ABC):
named-struct application expands its ordered result fields as one
atomic binding; aliases come from ``rename(columns=...)``.
Function columns are supported only in LanceDB
Distributed.
Enterprise.
computed: Dict[str, str], optional
LanceDB Embedded declaration and refresh require a source build with the
``experimental-functions`` Cargo feature, which published packages
do not enable. LanceDB Distributed operations remain available.
do not enable. LanceDB Enterprise operations remain available.
A mapping from output column names to SQL expressions derives each
output field from its expression. A direct projection of a Blob v2
@@ -3041,7 +3041,7 @@ class Table(ABC):
While a declaration reads a column, that column cannot be renamed,
retyped or dropped.
In LanceDB Distributed the expression is planned by the
In LanceDB Enterprise the expression is planned by the
server, and the refresh runs as a server job -- see
[`refresh_column_async`][lancedb.table.Table.refresh_column_async].
Cannot be combined with ``transforms``.
@@ -3112,10 +3112,10 @@ class Table(ABC):
GPU class for Function workers. Must be a lowercase name of 1-63
letters, digits, or hyphens, without a leading or trailing hyphen.
None keeps the Function's registered class or the deployment
default. LanceDB Distributed only.
default. LanceDB Enterprise only.
gpu_count: int, optional
Positive aggregate GPU budget for Function workers. None leaves
the server's configured budget unchanged. LanceDB Distributed
the server's configured budget unchanged. LanceDB Enterprise
only.
Returns
@@ -3160,10 +3160,10 @@ class Table(ABC):
GPU class for Function workers. Must be a lowercase name of 1-63
letters, digits, or hyphens, without a leading or trailing hyphen.
None keeps the Function's registered class or the deployment
default. LanceDB Distributed only.
default. LanceDB Enterprise only.
gpu_count: int, optional
Positive aggregate GPU budget for Function workers. None leaves
the server's configured budget unchanged. LanceDB Distributed
the server's configured budget unchanged. LanceDB Enterprise
only.
Returns
@@ -3200,7 +3200,7 @@ class Table(ABC):
A refresh running under a skip policy records each row it skipped
with the input that failed and the error. This lists those records,
newest job first, plus a summary for any fragment whose per-row
detail was capped. LanceDB Distributed only; reading errors
detail was capped. LanceDB Enterprise only; reading errors
needs read access to the table, since a message carries the value
that failed.
@@ -4287,7 +4287,7 @@ class LanceTable(Table):
This is a hint to the database that the given columns will be accessed
in the future and the database should prefetch the data if possible.
Currently only supported in LanceDB Distributed.
Currently only supported in LanceDB Enterprise.
This call initiates prewarming and returns once the request is accepted.
It is idempotent and safe to call from multiple clients concurrently.
@@ -5178,7 +5178,7 @@ class LanceTable(Table):
Specify exactly one of ``column`` or ``index_name``.
Model-backed tokenizers such as ``jieba/*`` and ``lindera/*`` are
rebuilt in the client process from index metadata. In LanceDB Distributed,
rebuilt in the client process from index metadata. In LanceDB Enterprise,
this means the same tokenizer model files must also exist locally
(under ``LANCE_LANGUAGE_MODEL_HOME``) and must match the files the
server uses. A mismatch cannot be detected: the returned tokens may
@@ -6266,7 +6266,7 @@ class AsyncTable:
async def to_lance(self, **kwargs) -> lance.LanceDataset:
"""Return the Lance dataset backing a LanceDB Embedded table.
LanceDB Distributed tables cannot be opened as Lance datasets by the
LanceDB Enterprise tables cannot be opened as Lance datasets by the
client. Use
[to_arrow][lancedb.table.AsyncTable.to_arrow] or
[query][lancedb.table.AsyncTable.query] to read them through the server.
@@ -6288,7 +6288,7 @@ class AsyncTable:
"""
if not self._inner._is_native():
raise NotImplementedError(
"to_lance() is not supported in LanceDB Distributed; "
"to_lance() is not supported in LanceDB Enterprise; "
"query the server instead"
)
@@ -6321,7 +6321,7 @@ class AsyncTable:
Parameters
----------
blob_mode: str, default "lazy"
Controls how Lance blob columns are returned. LanceDB Distributed supports
Controls how Lance blob columns are returned. LanceDB Enterprise supports
"descriptions"; "bytes" and "lazy" are not yet supported.
**kwargs
Forwarded to PyArrow / Lance pandas conversion.
@@ -6568,7 +6568,7 @@ class AsyncTable:
This is a hint to the database that the given columns will be accessed
in the future and the database should prefetch the data if possible.
Currently only supported in LanceDB Distributed.
Currently only supported in LanceDB Enterprise.
This call initiates prewarming and returns once the request is accepted.
It is idempotent and safe to call from multiple clients concurrently.
@@ -6612,7 +6612,7 @@ class AsyncTable:
"""
Get the table URI (storage location).
In LanceDB Distributed, this fetches the location from the server via describe.
In LanceDB Enterprise, this fetches the location from the server via describe.
In LanceDB Embedded, this returns the dataset URI.
Returns
@@ -7405,11 +7405,11 @@ class AsyncTable:
named-struct application expands its ordered result fields as one
atomic binding; aliases come from ``rename(columns=...)``.
Function columns are supported only in LanceDB
Distributed.
Enterprise.
computed: Dict[str, str], optional
LanceDB Embedded declaration and refresh require a source build with the
``experimental-functions`` Cargo feature, which published packages
do not enable. LanceDB Distributed operations remain available.
do not enable. LanceDB Enterprise operations remain available.
A mapping from output column names to SQL expressions derives each
output field from its expression. A direct projection of a Blob v2
@@ -7427,13 +7427,13 @@ class AsyncTable:
While a declaration reads a column, that column cannot be renamed,
retyped or dropped.
In LanceDB Distributed the expression is planned by
In LanceDB Enterprise the expression is planned by
the server. Cannot be combined with ``transforms``.
auto_refresh_enabled: bool, optional
Enable automatic refresh for each computed output declared by this
call. Defaults to True. LanceDB Embedded stores the setting; automatic
scheduling requires LanceDB Distributed.
scheduling requires LanceDB Enterprise.
auto_refresh_interval_seconds: int, optional
Positive minimum seconds after a successful refresh before another
automatic refresh is eligible. When omitted, the server determines when
@@ -7561,10 +7561,10 @@ class AsyncTable:
GPU class for Function workers. Must be a lowercase name of 1-63
letters, digits, or hyphens, without a leading or trailing hyphen.
None keeps the Function's registered class or the deployment
default. LanceDB Distributed only.
default. LanceDB Enterprise only.
gpu_count: int, optional
Positive aggregate GPU budget for Function workers. None leaves
the server's configured budget unchanged. LanceDB Distributed
the server's configured budget unchanged. LanceDB Enterprise
only.
Returns
@@ -7591,7 +7591,7 @@ class AsyncTable:
A refresh running under a skip policy records each row it skipped
with the input that failed and the error. This lists those records,
newest job first, plus a summary for any fragment whose per-row
detail was capped. LanceDB Distributed only; reading errors
detail was capped. LanceDB Enterprise only; reading errors
needs read access to the table, since a message carries the value
that failed.
@@ -7680,10 +7680,10 @@ class AsyncTable:
GPU class for Function workers. Must be a lowercase name of 1-63
letters, digits, or hyphens, without a leading or trailing hyphen.
None keeps the Function's registered class or the deployment
default. LanceDB Distributed only.
default. LanceDB Enterprise only.
gpu_count: int, optional
Positive aggregate GPU budget for Function workers. None leaves
the server's configured budget unchanged. LanceDB Distributed
the server's configured budget unchanged. LanceDB Enterprise
only.
Returns
@@ -8110,7 +8110,7 @@ class AsyncTable:
Specify exactly one of ``column`` or ``index_name``.
Model-backed tokenizers such as ``jieba/*`` and ``lindera/*`` are
rebuilt in the client process from index metadata. In LanceDB Distributed,
rebuilt in the client process from index metadata. In LanceDB Enterprise,
this means the same tokenizer model files must also exist locally
(under ``LANCE_LANGUAGE_MODEL_HOME``) and must match the files the
server uses. A mismatch cannot be detected: the returned tokens may
@@ -725,7 +725,7 @@ def test_embedded_create_refuses_automatic_refresh_before_creating_view(
tmp_path, options
):
db = make_db(tmp_path)
with pytest.raises(NotImplementedError, match="requires LanceDB Distributed"):
with pytest.raises(NotImplementedError, match="requires LanceDB Enterprise"):
db.create_materialized_view("adults", "people", **options)
assert "adults" not in db.table_names()
@@ -742,7 +742,7 @@ def test_remote_create_rejects_invalid_interval_without_request(seconds):
@pytest.mark.experimental_functions
def test_namespace_forwards_automatic_refresh_request(tmp_path):
db = lancedb.connect_namespace("dir", {"root": str(tmp_path)})
with pytest.raises(NotImplementedError, match="requires LanceDB Distributed"):
with pytest.raises(NotImplementedError, match="requires LanceDB Enterprise"):
db.create_materialized_view("mv", "source", auto_refresh_enabled=True)
@@ -750,7 +750,7 @@ def test_namespace_forwards_automatic_refresh_request(tmp_path):
@pytest.mark.asyncio
async def test_async_namespace_forwards_automatic_refresh_request(tmp_path):
db = lancedb.connect_namespace_async("dir", {"root": str(tmp_path)})
with pytest.raises(NotImplementedError, match="requires LanceDB Distributed"):
with pytest.raises(NotImplementedError, match="requires LanceDB Enterprise"):
await db.create_materialized_view("mv", "source", auto_refresh_enabled=True)
+9 -9
View File
@@ -1196,7 +1196,7 @@ def test_table_unimplemented_functions():
message = str(exc_info.value)
assert method in message
assert "not" in message and "supported" in message
assert "LanceDB Distributed" in message
assert "LanceDB Enterprise" in message
assert "cloud" not in message.lower()
assert f"search().{method}()" in message
@@ -1263,7 +1263,7 @@ async def test_remote_to_lance_rejection(
await table.to_lance(**options)
assert requests == opened_requests
assert "to_lance() is not supported in LanceDB Distributed" in str(sync_error.value)
assert "to_lance() is not supported in LanceDB Enterprise" in str(sync_error.value)
assert "query the server" in str(sync_error.value)
assert str(sync_error.value) == str(async_error.value)
@@ -2158,7 +2158,7 @@ def test_remote_create_index_new_api(caplog, rq_kwargs):
assert received_requests[5]["replace"] is False
assert "replace is not supported" not in caplog.text
assert caplog.messages == [
"GPU accelerator is not supported in LanceDB Distributed "
"GPU accelerator is not supported in LanceDB Enterprise "
"and will be ignored."
]
@@ -2217,7 +2217,7 @@ def test_remote_unsupported_operations_sync(method, args, kwargs, operation):
with pytest.raises(NotImplementedError) as error:
getattr(table, method)(*args, **kwargs)
expected = f"LanceDBError: not supported: {operation} is not supported "
expected += "in LanceDB Distributed."
expected += "in LanceDB Enterprise."
if operation == "IVF_HNSW_PQ":
expected += " Please use IVF_HNSW_SQ instead."
assert str(error.value) == expected
@@ -2235,7 +2235,7 @@ async def test_remote_unsupported_operations_async(method, args, kwargs, operati
with pytest.raises(NotImplementedError) as error:
await getattr(table, method)(*args, **kwargs)
expected = f"LanceDBError: not supported: {operation} is not supported "
expected += "in LanceDB Distributed."
expected += "in LanceDB Enterprise."
if operation == "IVF_HNSW_PQ":
expected += " Please use IVF_HNSW_SQ instead."
assert str(error.value) == expected
@@ -2247,7 +2247,7 @@ def test_remote_unsupported_legacy_hnsw_pq():
with pytest.warns(DeprecationWarning, match="create_index"):
with pytest.raises(
NotImplementedError,
match="IVF_HNSW_PQ is not supported in LanceDB Distributed. "
match="IVF_HNSW_PQ is not supported in LanceDB Enterprise. "
"Please use IVF_HNSW_SQ instead.",
):
table.create_index(
@@ -2265,7 +2265,7 @@ def test_remote_python_only_messages():
with pytest.raises(NotImplementedError) as error:
getattr(table, method)()
assert str(error.value) == (
f"{method}() is not supported in LanceDB Distributed. "
f"{method}() is not supported in LanceDB Enterprise. "
f"Use table.search().{method}() instead."
)
for method in ["compact_files", "cleanup_old_versions"]:
@@ -2273,7 +2273,7 @@ def test_remote_python_only_messages():
getattr(table, method)()
assert (
str(warning[0].message)
== f"{method}() is a no-op in LanceDB Distributed."
== f"{method}() is a no-op in LanceDB Enterprise."
)
@@ -4469,7 +4469,7 @@ async def test_async_remote_to_lance_rejects_storage_access(monkeypatch):
raise AssertionError("remote table URI must not be requested")
monkeypatch.setattr(table, "uri", fail_uri)
with pytest.raises(NotImplementedError, match="LanceDB Distributed"):
with pytest.raises(NotImplementedError, match="LanceDB Enterprise"):
await table.to_lance()
+5 -5
View File
@@ -87,7 +87,7 @@ async def test_remote_create_rejects_write_options(storage_options, empty):
kwargs["data"] = [{"value": 1}]
async with mock_lancedb_connection_async(handler) as db:
with pytest.raises(
NotImplementedError, match="write_options.*LanceDB Distributed"
NotImplementedError, match="write_options.*LanceDB Enterprise"
):
await db.create_table("t", storage_options=storage_options, **kwargs)
assert requests == []
@@ -110,7 +110,7 @@ def test_sync_remote_create_rejects_write_options(options):
request.end_headers()
with mock_lancedb_connection(handler) as db:
with pytest.raises(NotImplementedError, match="LanceDB Distributed"):
with pytest.raises(NotImplementedError, match="LanceDB Enterprise"):
db.create_table("t", [{"value": 1}], **options)
assert requests == []
@@ -131,11 +131,11 @@ async def test_remote_open_rejects_local_options(options, asynchronous):
if asynchronous:
async with mock_lancedb_connection_async(handler) as db:
with pytest.raises(NotImplementedError, match="LanceDB Distributed"):
with pytest.raises(NotImplementedError, match="LanceDB Enterprise"):
await db.open_table("t", **options)
else:
with mock_lancedb_connection(handler) as db:
with pytest.raises(NotImplementedError, match="LanceDB Distributed"):
with pytest.raises(NotImplementedError, match="LanceDB Enterprise"):
db.open_table("t", **options)
assert requests == []
@@ -151,6 +151,6 @@ async def test_remote_open_rejects_location():
request.wfile.write(b'{"version": 1, "schema": {"fields": []}}')
async with mock_lancedb_connection_async(handler) as db:
with pytest.raises(NotImplementedError, match="location.*LanceDB Distributed"):
with pytest.raises(NotImplementedError, match="location.*LanceDB Enterprise"):
await db.open_table("t", location="/tmp/zzz")
assert requests == []
+1 -1
View File
@@ -5637,7 +5637,7 @@ def test_function_errors_are_remote_only(tmp_path):
db = lancedb.connect(tmp_path)
table = db.create_table("t", [{"x": 1}])
with pytest.raises(
NotImplementedError, match="recorded only in LanceDB Distributed"
NotImplementedError, match="recorded only in LanceDB Enterprise"
):
table.function_errors()
+2 -2
View File
@@ -2016,7 +2016,7 @@ impl Table {
inner
.as_native()
.ok_or_else(|| lancedb::Error::NotSupported {
message: "uses_v2_manifest_paths is not supported in LanceDB Distributed."
message: "uses_v2_manifest_paths is not supported in LanceDB Enterprise."
.into(),
})
.infer_error()?
@@ -2032,7 +2032,7 @@ impl Table {
inner
.as_native()
.ok_or_else(|| lancedb::Error::NotSupported {
message: "migrate_manifest_paths_v2 is not supported in LanceDB Distributed."
message: "migrate_manifest_paths_v2 is not supported in LanceDB Enterprise."
.into(),
})
.infer_error()?
+4 -4
View File
@@ -288,7 +288,7 @@ impl BlobFile {
}
}
/// Physical byte offset in the data file. `None` on LanceDB Distributed handles. The
/// Physical byte offset in the data file. `None` on LanceDB Enterprise handles. The
/// server's byte-range route does not expose storage layout.
pub fn position(&self) -> Option<u64> {
match &self.inner {
@@ -298,7 +298,7 @@ impl BlobFile {
}
}
/// Path of the data file holding the blob. `None` on LanceDB Distributed handles. The
/// Path of the data file holding the blob. `None` on LanceDB Enterprise handles. The
/// server's byte-range route does not expose storage layout.
pub fn data_path(&self) -> Option<&Path> {
match &self.inner {
@@ -308,7 +308,7 @@ impl BlobFile {
}
}
/// Native storage layout. `None` on LanceDB Distributed handles. The server's
/// Native storage layout. `None` on LanceDB Enterprise handles. The server's
/// byte-range route does not expose layout.
pub fn kind(&self) -> Option<lance_core::datatypes::BlobKind> {
match &self.inner {
@@ -318,7 +318,7 @@ impl BlobFile {
}
}
/// External URI for native handles. LanceDB Distributed handles do not expose storage URIs.
/// External URI for native handles. LanceDB Enterprise handles do not expose storage URIs.
pub fn uri(&self) -> Option<&str> {
match &self.inner {
BlobFileInner::Native(file) => file.uri(),
+10 -10
View File
@@ -179,7 +179,7 @@ impl OpenTableBuilder {
/// Advanced parameters that can be used to customize table reads
///
/// LanceDB Distributed connections reject these parameters with [`Error::NotSupported`].
/// LanceDB Enterprise connections reject these parameters with [`Error::NotSupported`].
///
/// If set, these will take precedence over any overlapping `OpenTableOptions` options
pub fn lance_read_params(mut self, params: ReadParams) -> Self {
@@ -338,7 +338,7 @@ pub struct CloneTableBuilder {
request: CloneTableRequest,
}
/// Builder for asynchronously executing a SQL statement on a LanceDB Distributed database.
/// Builder for asynchronously executing a SQL statement on a LanceDB Enterprise database.
pub struct ExecuteQueryAsyncBuilder {
parent: Arc<dyn Database>,
request: ExecuteQueryRequest,
@@ -502,7 +502,7 @@ impl Connection {
&self.internal
}
/// Start executing SQL on a LanceDB Distributed database.
/// Start executing SQL on a LanceDB Enterprise database.
///
/// The query can reference tables in other databases with SQL dot notation.
/// Use [`ExecuteQueryAsyncBuilder::default_namespace_path`] to avoid qualifying
@@ -1192,7 +1192,7 @@ impl Connection {
/// Rename a table in the database.
///
/// Supported in LanceDB Distributed and by namespace backends that implement
/// Supported in LanceDB Enterprise and by namespace backends that implement
/// renaming. Directory namespaces support renaming tables resolved through
/// their manifest, including tables within or across child namespaces.
/// Directory-listing root tables cannot be renamed.
@@ -1252,7 +1252,7 @@ impl Connection {
///
/// The result describes configured hardware, not current free capacity.
/// The principal needs System Usage permission. LanceDB Embedded and
/// older Distributed servers without `GET /v1/gpu/classes` return
/// older Enterprise servers without `GET /v1/gpu/classes` return
/// [`Error::NotSupported`].
pub async fn list_gpu_classes(&self) -> Result<Vec<GpuClass>> {
self.database().list_gpu_classes().await
@@ -1409,7 +1409,7 @@ impl Connection {
/// For ListingDatabase, it is the equivalent DirectoryNamespace.
/// For RemoteDatabase, it is the equivalent RestNamespace.
///
/// LanceDB Distributed connections using dynamic headers forward them through the
/// LanceDB Enterprise connections using dynamic headers forward them through the
/// namespace client's per-request context provider.
pub async fn namespace_client(&self) -> Result<Arc<dyn lance_namespace::LanceNamespace>> {
self.internal.namespace_client().await
@@ -1420,7 +1420,7 @@ impl Connection {
/// - impl_type: "dir" for DirectoryNamespace, "rest" for RestNamespace
/// - properties: configuration properties for the namespace
///
/// LanceDB Distributed connections using dynamic headers cannot be exported because the
/// LanceDB Enterprise connections using dynamic headers cannot be exported because the
/// namespace client config only carries static headers.
pub async fn namespace_client_config(
&self,
@@ -1747,7 +1747,7 @@ impl ConnectBuilder {
/// Enable or disable manifest-backed directory namespace mode for local
/// native connections.
/// LanceDB Distributed connections reject enabling this option with [`Error::NotSupported`].
/// LanceDB Enterprise connections reject enabling this option with [`Error::NotSupported`].
///
/// When enabled, the connection uses the directory namespace database
/// directly for all table operations and forces
@@ -1783,7 +1783,7 @@ impl ConnectBuilder {
}
/// Set a custom session for object stores and caching.
/// LanceDB Distributed connections reject this option with [`Error::NotSupported`].
/// LanceDB Enterprise connections reject this option with [`Error::NotSupported`].
///
/// By default, a new session with default configuration will be created.
/// This method allows you to provide a custom session with your own
@@ -1826,7 +1826,7 @@ impl ConnectBuilder {
if provided {
return Err(Error::NotSupported {
message: format!(
"{option} is not supported for LanceDB Distributed connections"
"{option} is not supported for LanceDB Enterprise connections"
),
});
}
+2 -2
View File
@@ -46,7 +46,7 @@ impl CreateTableBuilder {
/// Apply the given write options when writing the initial data
///
/// LanceDB Distributed connections reject explicit Lance write parameters with
/// LanceDB Enterprise connections reject explicit Lance write parameters with
/// [`Error::NotSupported`] instead of silently using server defaults.
pub fn write_options(mut self, write_options: WriteOptions) -> Self {
self.request.write_options = write_options;
@@ -73,7 +73,7 @@ impl CreateTableBuilder {
/// Set multiple options for the storage layer.
///
/// Table-level storage options are not supported by LanceDB Distributed connections.
/// Table-level storage options are not supported by LanceDB Enterprise connections.
///
/// Options already set on the connection will be inherited by the table,
/// but can be overridden here.
+3 -3
View File
@@ -194,7 +194,7 @@ impl CloneTableRequest {
}
}
/// A request to start a SQL statement on a LanceDB Distributed database.
/// A request to start a SQL statement on a LanceDB Enterprise database.
#[derive(Clone, Debug)]
pub struct ExecuteQueryRequest {
/// The SQL text.
@@ -308,7 +308,7 @@ fn function_catalog_not_supported<T>() -> Result<T> {
fn gpu_class_catalog_not_supported<T>() -> Result<T> {
Err(crate::error::Error::NotSupported {
message: "GPU class discovery is supported only by LanceDB Distributed".to_string(),
message: "GPU class discovery is supported only by LanceDB Enterprise".to_string(),
})
}
@@ -680,7 +680,7 @@ pub trait Database:
message: "SQL is not supported by this database".into(),
})
}
/// Start executing a SQL statement on a LanceDB Distributed database.
/// Start executing a SQL statement on a LanceDB Enterprise database.
async fn execute_query_async(
&self,
_request: ExecuteQueryRequest,
+1 -1
View File
@@ -877,7 +877,7 @@ impl_json!(FunctionBinding);
/// refresh [`crate::Job`].
///
/// LanceDB Embedded refresh jobs produce this value in process. LanceDB
/// Distributed decodes the same value from the durable job's terminal payload.
/// Enterprise decodes the same value from the durable job's terminal payload.
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct RefreshColumnResult {
/// Rows assigned a value by this refresh.
+9 -9
View File
@@ -482,47 +482,47 @@ pub struct IndexConfig {
///
/// An index may be made up of multiple segments, each with their own UUID.
/// This is the UUID of the first segment. `None` if it could not be
/// determined (e.g. in LanceDB Distributed, which does not yet surface this).
/// determined (e.g. in LanceDB Enterprise, which does not yet surface this).
pub index_uuid: Option<String>,
/// The protobuf type URL, a precise type identifier for the index.
///
/// `None` if unavailable (e.g. in LanceDB Distributed).
/// `None` if unavailable (e.g. in LanceDB Enterprise).
pub type_url: Option<String>,
/// When the index was created, taken as the minimum creation time across
/// all segments.
///
/// `None` if unavailable, such as for indices created before creation
/// timestamps were tracked, or in LanceDB Distributed.
/// timestamps were tracked, or in LanceDB Enterprise.
pub created_at: Option<DateTime<Utc>>,
/// The number of rows indexed, across all segments.
///
/// This is approximate and may include rows that have since been deleted.
/// `None` if unavailable (e.g. in LanceDB Distributed when the server
/// `None` if unavailable (e.g. in LanceDB Enterprise when the server
/// does not report it).
pub num_indexed_rows: Option<u64>,
/// The number of rows in the table that are not yet covered by this index.
///
/// Computed as the table's total row count minus [`Self::num_indexed_rows`].
/// Optimizing the index will fold these rows into it. `None` if unavailable
/// (e.g. in LanceDB Distributed when the server does not report it).
/// (e.g. in LanceDB Enterprise when the server does not report it).
pub num_unindexed_rows: Option<u64>,
/// The total size in bytes of all index files across all segments.
///
/// `None` if size information is unavailable, such as for indices created
/// before file sizes were tracked, or in LanceDB Distributed.
/// before file sizes were tracked, or in LanceDB Enterprise.
pub size_bytes: Option<u64>,
/// The number of segments that make up the index.
///
/// `None` if unavailable (e.g. in LanceDB Distributed).
/// `None` if unavailable (e.g. in LanceDB Enterprise).
pub num_segments: Option<u32>,
/// The on-disk index format version, taken from the first segment.
///
/// `None` if unavailable (e.g. in LanceDB Distributed).
/// `None` if unavailable (e.g. in LanceDB Enterprise).
pub index_version: Option<i32>,
/// Index-type-specific details, serialized as JSON.
///
/// The shape of this JSON varies by index type. `None` if the details
/// could not be produced (e.g. no plugin available) or in LanceDB Distributed.
/// could not be produced (e.g. no plugin available) or in LanceDB Enterprise.
pub index_details: Option<String>,
}
+1 -1
View File
@@ -39,7 +39,7 @@
//! - `experimental-functions` - Opt in to local SQL computed-column declarations
//! and refresh, and local materialized-view creation and refresh. Disabled by
//! default, including in published Python and TypeScript packages. LanceDB
//! Distributed operations, reading existing data, metadata protections,
//! Enterprise operations, reading existing data, metadata protections,
//! and ordinary eager `add_columns` transforms do not require this feature.
//! - `huggingface` - Enable HuggingFace Hub integration for loading datasets from the Hub.
//! - `fp16kernels` - Enable FP16 kernels for faster vector search on CPU.
+5 -5
View File
@@ -171,7 +171,7 @@ pub(crate) fn physical_unnest(
return Err(Error::NotSupported {
message: format!(
"'{name}' in FROM position is a Function; views over Function rows are \
supported only in LanceDB Distributed"
supported only in LanceDB Enterprise"
),
});
}
@@ -1665,7 +1665,7 @@ impl CreateMaterializedViewBuilder {
self
}
/// Enable or disable automatic refresh in LanceDB Distributed.
/// Enable or disable automatic refresh in LanceDB Enterprise.
/// When omitted, the server determines whether automatic refresh is enabled.
/// LanceDB Embedded does not support automatic refresh.
pub fn auto_refresh_enabled(mut self, enabled: bool) -> Self {
@@ -1673,7 +1673,7 @@ impl CreateMaterializedViewBuilder {
self
}
/// Set a positive, finite refresh interval in seconds in LanceDB Distributed.
/// Set a positive, finite refresh interval in seconds in LanceDB Enterprise.
/// When omitted, the server determines when to refresh.
///
/// ```no_run
@@ -1766,7 +1766,7 @@ impl CreateMaterializedViewBuilder {
crate::require_experimental_functions()?;
if self.auto_refresh_enabled == Some(true) || self.auto_refresh_interval_seconds.is_some() {
return Err(Error::NotSupported {
message: "automatic materialized-view refresh requires LanceDB Distributed"
message: "automatic materialized-view refresh requires LanceDB Enterprise"
.to_string(),
});
}
@@ -2015,7 +2015,7 @@ impl Connection {
/// Start dropping a materialized view and return its job.
///
/// This validates that the named resource is a materialized view rather
/// than an ordinary table. In LanceDB Distributed the job has type `query`
/// than an ordinary table. In LanceDB Enterprise the job has type `query`
/// and its ID identifies the SQL query. Waiting completes once the catalog
/// binding is removed; physical cleanup continues in the background.
///
+4 -4
View File
@@ -444,8 +444,8 @@ pub trait QueryBase {
/// # }
/// ```
///
/// Note: Expression filters are not supported for LanceDB Distributed queries.
/// Use [`QueryBase::only_if`] with SQL strings in LanceDB Distributed.
/// Note: Expression filters are not supported for LanceDB Enterprise queries.
/// Use [`QueryBase::only_if`] with SQL strings in LanceDB Enterprise.
///
/// Calling this multiple times combines the expressions with a logical AND
/// rather than replacing the previous filter.
@@ -1025,7 +1025,7 @@ impl Query {
/// By default, there is no embedding model, and the input should be
/// vector/slice of floats.
/// NaN and infinite components are rejected with [`Error::InvalidInput`]
/// after conversion to Float32, in both LanceDB Embedded and LanceDB Distributed.
/// after conversion to Float32, in both LanceDB Embedded and LanceDB Enterprise.
///
/// If there is only one vector column (a column whose data type is a
/// fixed size list of floats) then the column does not need to be specified.
@@ -1269,7 +1269,7 @@ impl VectorQuery {
/// result.
///
/// NaN and infinite components are rejected with [`Error::InvalidInput`]
/// after conversion to Float32, in both LanceDB Embedded and LanceDB Distributed.
/// after conversion to Float32, in both LanceDB Embedded and LanceDB Enterprise.
pub fn add_query_vector(mut self, vector: impl IntoQueryVector) -> Result<Self> {
self.request.add_query_vector(vector)?;
Ok(self)
+7 -7
View File
@@ -725,7 +725,7 @@ impl<S: HttpSend> Database for RemoteDatabase<S> {
async fn read_consistency(&self) -> Result<ReadConsistency> {
Err(Error::NotSupported {
message: "Getting the read consistency is not yet supported in LanceDB Distributed"
message: "Getting the read consistency is not yet supported in LanceDB Enterprise"
.to_string(),
})
}
@@ -737,7 +737,7 @@ impl<S: HttpSend> Database for RemoteDatabase<S> {
if request.with_no_data {
return Err(Error::NotSupported {
message:
"materialized views in LanceDB Distributed must be populated during creation"
"materialized views in LanceDB Enterprise must be populated during creation"
.to_string(),
});
}
@@ -1400,7 +1400,7 @@ impl<S: HttpSend> Database for RemoteDatabase<S> {
if provided {
return Err(Error::NotSupported {
message: format!(
"{option} is not supported for table creation in LanceDB Distributed"
"{option} is not supported for table creation in LanceDB Enterprise"
),
});
}
@@ -1545,7 +1545,7 @@ impl<S: HttpSend> Database for RemoteDatabase<S> {
if provided {
return Err(Error::NotSupported {
message: format!(
"{option} is not supported for table access in LanceDB Distributed"
"{option} is not supported for table access in LanceDB Enterprise"
),
});
}
@@ -2529,7 +2529,7 @@ mod tests {
.execute()
.await;
assert!(matches!(result, Err(Error::NotSupported { message })
if message.contains("write_options") && message.contains("LanceDB Distributed")));
if message.contains("write_options") && message.contains("LanceDB Enterprise")));
}
}
@@ -2602,7 +2602,7 @@ mod tests {
] {
let result = builder.execute().await;
assert!(matches!(result, Err(Error::NotSupported { message })
if message.contains(option) && message.contains("LanceDB Distributed")));
if message.contains(option) && message.contains("LanceDB Enterprise")));
}
}
@@ -2620,7 +2620,7 @@ mod tests {
] {
let result = builder.api_key("fake").region("us-east-1").execute().await;
assert!(matches!(result, Err(Error::NotSupported { message })
if message.contains(option) && message.contains("LanceDB Distributed")));
if message.contains(option) && message.contains("LanceDB Enterprise")));
}
}
+7 -7
View File
@@ -612,7 +612,7 @@ impl<S: HttpSend> RemoteTable<S> {
// Warn if train=false is specified since it's not meaningful
if !index.train {
log::warn!(
"train=false has no effect in LanceDB Distributed. The index will be created empty and automatically populated in the background."
"train=false has no effect in LanceDB Enterprise. The index will be created empty and automatically populated in the background."
);
}
@@ -666,7 +666,7 @@ impl<S: HttpSend> RemoteTable<S> {
}
Index::IvfHnswPq(_) => {
return Err(Error::NotSupported {
message: "IVF_HNSW_PQ is not supported in LanceDB Distributed. Please use IVF_HNSW_SQ instead.".into(),
message: "IVF_HNSW_PQ is not supported in LanceDB Enterprise. Please use IVF_HNSW_SQ instead.".into(),
});
}
};
@@ -1113,7 +1113,7 @@ impl<S: HttpSend> RemoteTable<S> {
QueryFilter::Datafusion(expr) => expr_to_sql_string(expr)?,
QueryFilter::Substrait(_) => {
return Err(Error::NotSupported {
message: "Substrait filters are not supported in LanceDB Distributed"
message: "Substrait filters are not supported in LanceDB Enterprise"
.to_string(),
});
}
@@ -1163,7 +1163,7 @@ impl<S: HttpSend> RemoteTable<S> {
if let Some(full_text_search) = &params.full_text_search {
if full_text_search.wand_factor.is_some() {
return Err(Error::NotSupported {
message: "Wand factor is not supported in LanceDB Distributed.".into(),
message: "Wand factor is not supported in LanceDB Enterprise.".into(),
});
}
@@ -3562,7 +3562,7 @@ impl<S: HttpSend> BaseTable for RemoteTable<S> {
async fn optimize(&self, _action: OptimizeAction) -> Result<OptimizeStats> {
self.check_mutable().await?;
Err(Error::NotSupported {
message: "optimize is not supported in LanceDB Distributed.".into(),
message: "optimize is not supported in LanceDB Enterprise.".into(),
})
}
async fn add_columns(
@@ -6709,7 +6709,7 @@ mod tests {
match result.unwrap_err() {
Error::NotSupported { message } => assert_eq!(
message,
format!("{operation} is not supported in LanceDB Distributed.")
format!("{operation} is not supported in LanceDB Enterprise.")
),
error => panic!("expected not-supported error, got {error}"),
}
@@ -6737,7 +6737,7 @@ mod tests {
.unwrap_err();
assert_not_supported_error(
error,
"IVF_HNSW_PQ is not supported in LanceDB Distributed. Please use IVF_HNSW_SQ instead.",
"IVF_HNSW_PQ is not supported in LanceDB Enterprise. Please use IVF_HNSW_SQ instead.",
);
}
+1 -1
View File
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: Copyright The LanceDB Authors
//! Handles to SQL queries running on a LanceDB Distributed database.
//! Handles to SQL queries running on a LanceDB Enterprise database.
use std::{fmt, sync::Arc};
+20 -20
View File
@@ -653,7 +653,7 @@ pub trait BaseTable: std::fmt::Display + std::fmt::Debug + Send + Sync {
async fn prewarm_index(&self, name: &str) -> Result<()>;
/// Prewarm data for the table.
///
/// Currently only supported in LanceDB Distributed.
/// Currently only supported in LanceDB Enterprise.
/// If `columns` is `None`, all columns are prewarmed.
async fn prewarm_data(&self, columns: Option<Vec<String>>) -> Result<()>;
/// Get statistics about the index.
@@ -848,7 +848,7 @@ pub trait BaseTable: std::fmt::Display + std::fmt::Debug + Send + Sync {
/// Declare computed columns, each defined by a SQL expression.
///
/// Where the declaration is planned depends on the backend: a LanceDB Embedded
/// table validates and types the expression itself, while a LanceDB Distributed
/// table validates and types the expression itself, while a LanceDB Enterprise
/// table sends the expression for the server to plan.
async fn add_computed_columns(
&self,
@@ -867,7 +867,7 @@ pub trait BaseTable: std::fmt::Display + std::fmt::Debug + Send + Sync {
_options: computed_columns::ComputedColumnOptions,
) -> Result<AddColumnsResult> {
Err(Error::NotSupported {
message: "Function columns are supported only in LanceDB Distributed".into(),
message: "Function columns are supported only in LanceDB Enterprise".into(),
})
}
/// Fill a computed column's unfilled rows and recompute those whose
@@ -915,7 +915,7 @@ pub trait BaseTable: std::fmt::Display + std::fmt::Debug + Send + Sync {
_request: &crate::function::FunctionErrorsRequest,
) -> Result<crate::function::FunctionErrors> {
Err(Error::NotSupported {
message: "per-row Function errors are recorded only in LanceDB Distributed".into(),
message: "per-row Function errors are recorded only in LanceDB Enterprise".into(),
})
}
/// Alter columns in the table.
@@ -1042,7 +1042,7 @@ pub trait BaseTable: std::fmt::Display + std::fmt::Debug + Send + Sync {
/// [`FieldMetadataUpdate::remove`] deletes a key and
/// [`FieldMetadataUpdate::replace`] swaps the field's whole map.
///
/// The default returns `NotSupported`; Lance-backed and LanceDB Distributed tables override it.
/// The default returns `NotSupported`; Lance-backed and LanceDB Enterprise tables override it.
async fn update_field_metadata(
&self,
_updates: &[FieldMetadataUpdate],
@@ -1313,7 +1313,7 @@ impl Table {
///
/// Native tables support both legacy blob v1 and blob v2 columns.
/// Output matches `row_ids` in length and order. Null blobs are null;
/// valid empty blobs contain empty byte strings. LanceDB Distributed limits individual
/// valid empty blobs contain empty byte strings. LanceDB Enterprise limits individual
/// requests to 1024 row ids and 64 MiB of blob bytes; the client
/// splits requests and reads a single larger blob through the Range route.
/// This method still materializes all bytes in memory, so prefer
@@ -1365,7 +1365,7 @@ impl Table {
/// ranges for the same blob. The output has the same length and order as
/// the requests. Null blobs produce null output slots; empty ranges on
/// non-null blobs produce empty byte strings.
/// LanceDB Distributed tables read through version-pinned [`BlobFile`] handles using
/// LanceDB Enterprise tables read through version-pinned [`BlobFile`] handles using
/// HTTP byte-range requests.
///
/// `_rowid` values stay valid after compaction when the table has stable
@@ -1624,7 +1624,7 @@ impl Table {
}
/// See [Table::create_index]
/// In LanceDB Distributed, this allows an optional wait_timeout to poll until asynchronous indexing is complete
/// In LanceDB Enterprise, this allows an optional wait_timeout to poll until asynchronous indexing is complete
pub fn create_index_with_timeout(
&self,
columns: &[impl AsRef<str>],
@@ -1910,7 +1910,7 @@ impl Table {
error_if_tagged_old_versions: Option<bool>,
) -> Result<OptimizeStats> {
let native = self.as_native().ok_or_else(|| Error::NotSupported {
message: "optimize is not supported in LanceDB Distributed.".into(),
message: "optimize is not supported in LanceDB Enterprise.".into(),
})?;
let prune = optimize::cleanup_old_versions_before(
native,
@@ -1940,7 +1940,7 @@ impl Table {
/// [`freshness`](crate::table::freshness)); everything else is left as
/// it is.
///
/// LanceDB Embedded only: in LanceDB Distributed a refresh runs as a server job, through
/// LanceDB Embedded only: in LanceDB Enterprise a refresh runs as a server job, through
/// [`Table::refresh_column_async`].
///
/// ```
@@ -1958,7 +1958,7 @@ impl Table {
/// Like [`Table::refresh_column`], with explicit refresh options.
///
/// [`RefreshColumnOptions::batch_size()`] caps rows per Function call in
/// LanceDB Distributed and must be greater than zero when set.
/// LanceDB Enterprise and must be greater than zero when set.
/// [`RefreshColumnOptions::gpu_class()`] selects a GPU pool and
/// [`RefreshColumnOptions::gpu_count()`] sets the aggregate GPU budget.
/// These options have no effect on expression-backed columns in LanceDB
@@ -1994,7 +1994,7 @@ impl Table {
/// both expression-backed and Function-backed columns. Invalid input
/// -- an unknown column, or one that is not computed -- is reported by
/// this call rather than by the job. In LanceDB Embedded the job runs as an
/// in-process task; in LanceDB Distributed it is the server's
/// in-process task; in LanceDB Enterprise it is the server's
/// backfill job.
///
/// ```
@@ -2056,7 +2056,7 @@ impl Table {
/// capped. Filter by job or column through the request; a listing that
/// hit its limit reports [`FunctionErrors::truncated`].
///
/// LanceDB Distributed only, and the caller needs read access
/// LanceDB Enterprise only, and the caller needs read access
/// to the table, since a message carries the value that failed.
///
/// ```
@@ -2436,7 +2436,7 @@ impl Table {
/// Tokenize a full-text search query using the tokenizer configured on an FTS index.
///
/// Model-backed tokenizers such as `jieba/*` and `lindera/*` are rebuilt in
/// the client process from index metadata. In LanceDB Distributed, this means the
/// the client process from index metadata. In LanceDB Enterprise, this means the
/// same tokenizer model files must also exist locally, and must match the
/// files the server uses: the client cannot detect a mismatch, so it may
/// return tokens the server's index never produces. If the model files are
@@ -2474,7 +2474,7 @@ impl Table {
///
/// The column must have exactly one FTS index. Model-backed tokenizers such
/// as `jieba/*` and `lindera/*` are rebuilt in the client process from
/// index metadata. In LanceDB Distributed, this means the same tokenizer model
/// index metadata. In LanceDB Enterprise, this means the same tokenizer model
/// files must also exist locally, and must match the files the server uses
/// (see [`Self::tokenize`]).
pub async fn tokenize_with_column(&self, query: &str, column: &str) -> Result<Vec<FtsToken>> {
@@ -2563,7 +2563,7 @@ impl Table {
/// Get the table URI (storage location)
///
/// Returns the full storage location of the table (e.g., S3/GCS path).
/// In LanceDB Distributed, this fetches the location from the server via describe.
/// In LanceDB Enterprise, this fetches the location from the server via describe.
pub async fn uri(&self) -> Result<String> {
self.inner.uri().await
}
@@ -2608,7 +2608,7 @@ impl Table {
/// Drop an index from the table.
///
/// Note: This is not yet available in LanceDB Distributed.
/// Note: This is not yet available in LanceDB Enterprise.
///
/// This does not delete the index from disk, it just removes it from the table.
/// To delete the index, run [`Self::optimize()`] after dropping the index.
@@ -2641,7 +2641,7 @@ impl Table {
/// This is a hint to the database that the given columns will be accessed in
/// the future and the database should prefetch the data if possible. This
/// can reduce cold-start latency for subsequent queries. Currently only
/// supported in LanceDB Distributed.
/// supported in LanceDB Enterprise.
///
/// This call initiates prewarming and returns once the request is accepted.
/// It is idempotent and safe to call from multiple clients concurrently —
@@ -3838,7 +3838,7 @@ impl BaseTable for NativeTable {
async fn prewarm_data(&self, _columns: Option<Vec<String>>) -> Result<()> {
Err(Error::NotSupported {
message: "prewarm_data is currently only supported in LanceDB Distributed.".into(),
message: "prewarm_data is currently only supported in LanceDB Enterprise.".into(),
})
}
@@ -4476,7 +4476,7 @@ mod tests {
.await
.unwrap_err();
assert!(
matches!(&err, Error::NotSupported { message } if message.contains("LanceDB Distributed")),
matches!(&err, Error::NotSupported { message } if message.contains("LanceDB Enterprise")),
"{err:?}"
);
}
+2 -2
View File
@@ -70,9 +70,9 @@ impl AddColumnsBuilder {
/// expression names it.
///
/// LanceDB Embedded declaration and refresh require the `experimental-functions`
/// Cargo feature. LanceDB Distributed operations do not require this feature.
/// Cargo feature. LanceDB Enterprise operations do not require this feature.
///
/// In LanceDB Distributed the expression is planned by the
/// In LanceDB Enterprise the expression is planned by the
/// server, and the refresh runs as a server job -- see
/// [`Table::refresh_column_async`](super::Table::refresh_column_async).
///
+1 -1
View File
@@ -61,7 +61,7 @@ pub const AUTO_REFRESH_ENABLED_META_KEY: &str = "computed_column.auto_refresh_en
pub const AUTO_REFRESH_INTERVAL_META_KEY: &str = "computed_column.auto_refresh_interval_seconds";
/// Scheduling settings persisted on each computed output. LanceDB Embedded
/// stores these settings; automatic scheduling requires LanceDB Distributed.
/// stores these settings; automatic scheduling requires LanceDB Enterprise.
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
#[serde(default, deny_unknown_fields)]
pub struct ComputedColumnOptions {
+4 -4
View File
@@ -59,18 +59,18 @@ use crate::{Error, Result};
#[derive(Debug, Clone, Default)]
#[non_exhaustive]
pub struct RefreshColumnOptions {
/// Maximum rows per Function call in LanceDB Distributed.
/// Maximum rows per Function call in LanceDB Enterprise.
///
/// Must be greater than zero. `None` uses the server default. This has no
/// effect on expression-backed columns in LanceDB Embedded.
pub batch_size: Option<usize>,
/// GPU class for Function workers in LanceDB Distributed.
/// GPU class for Function workers in LanceDB Enterprise.
///
/// `None` keeps the Function's registered class, or the deployment default
/// when the Function does not declare one.
pub gpu_class: Option<String>,
/// Positive aggregate GPU budget for Function workers in LanceDB
/// Distributed.
/// Enterprise.
///
/// `None` leaves the server's configured budget unchanged.
pub gpu_count: Option<u32>,
@@ -428,7 +428,7 @@ fn declared_expression(dataset: &Dataset, column: &str) -> Result<String> {
match declaration.kind {
ComputedColumnKind::Sql { expression } => Ok(expression),
ComputedColumnKind::Function { .. } => Err(Error::NotSupported {
message: "registered Function columns are refreshed only by a LanceDB Distributed job"
message: "registered Function columns are refreshed only by a LanceDB Enterprise job"
.into(),
}),
ComputedColumnKind::Unrecognized { kind } => Err(Error::NotSupported {