Compare commits

...

29 Commits

Author SHA1 Message Date
Lance Release
fb26f31beb [python] Bump version: 0.6.6 → 0.6.7 2024-04-04 23:43:04 +00:00
Lance Release
7c138c54c4 Updating package-lock.json 2024-04-04 21:40:08 +00:00
Lance Release
e9011b71b1 Bump version: 0.4.15 → 0.4.16 2024-04-04 21:39:58 +00:00
Will Jones
1b605ecc3b chore: upgrade to lance-0.10.9 (#1192) 2024-04-04 14:39:24 -07:00
QianZhu
bcc879b74a add a default value for search.limit to be consistent with python sdk (#1191)
Changed the default value for search.limit to be 10
2024-04-04 12:22:10 -07:00
Bert
fad0b76159 ensure table names are uri encoded for tables (#1189)
This prevents an issue where users can do something like:
```js
db.createTable('my-table#123123')
```
The server has logic to determine that '#' character is not allowed in
the table name, but currently this is being returned as 404 error
because it routes to `/v1/my-table#123123/create` and `#123123/create`
will not be parsed as part of path
2024-04-04 10:48:07 -07:00
Will Jones
8364d589ab feat: ship fp16kernels in Python wheels (#1148)
Same deal as https://github.com/lancedb/lance/pull/2098
2024-04-04 09:33:34 -07:00
Lei Xu
8687735bea chore: bump to 0.10.8 (#1187) 2024-04-03 16:52:32 -07:00
QianZhu
f0cd43da69 bug: fix the return value of countRows (#1186) 2024-04-03 16:31:49 -07:00
Lei Xu
7b954c7e3e chore: bump lance version (#1185)
Bump lance version to `0.10.7`
2024-04-03 14:46:05 -07:00
Bert
2579f29a92 fix error decoding in nodejs client (#1184)
fixes: #1183
2024-04-03 10:24:51 -04:00
QianZhu
7562b0fad1 remote count_rows need to return the number (#1181) 2024-04-02 13:12:22 -07:00
eduardjbotha
83b6b0d28a SQL Documentation includes DataFusion functions (#1179)
Show that it is possible to use the DataFusion functions in the `WHERE`
clause.

Co-authored-by: Eduard Botha <eduard.botha@inovex.de>
2024-04-02 07:49:48 -07:00
Lei Xu
46e95f2c4c chore: add social link footer (#1177) 2024-04-01 22:09:27 -07:00
Lei Xu
73810b4410 chore: pass str instead of String to build table names (#1178) 2024-04-01 21:31:07 -07:00
Lance Release
09280bc54a Updating package-lock.json 2024-04-02 03:03:07 +00:00
Lance Release
5603f1e57f Updating package-lock.json 2024-04-02 02:28:04 +00:00
QianZhu
1d67615cff feat: add filterable countRows to remote API (#1169) 2024-04-01 14:31:15 -07:00
Lance Release
05f484b716 [python] Bump version: 0.6.5 → 0.6.6 2024-04-01 19:09:01 +00:00
Lance Release
7e92aa657a Updating package-lock.json 2024-04-01 18:36:25 +00:00
Lance Release
e5f40a4b09 Bump version: 0.4.14 → 0.4.15 2024-04-01 18:36:13 +00:00
Weston Pace
6779c1c192 chore: bump lance version to 0.10.6 (#1175) 2024-04-01 11:35:47 -07:00
Bert
e0bf6d9bd0 Update LanceDB Logo in README (#1167)
<img width="1034" alt="image"
src="https://github.com/lancedb/lancedb/assets/5846846/5b8aa53c-4d93-4c0e-bed4-80c238b319ba">
2024-03-29 10:10:43 -04:00
Weston Pace
67f041be91 docs: add a reference to @lancedb/lance in the docs (#1166)
We aren't yet ready to switch over the examples since almost all JS
examples rely on embeddings and we haven't yet ported those over.
However, this makes it possible for those that are interested to start
using `@lancedb/lancedb`
2024-03-29 04:55:03 -07:00
Will Jones
d388ef2f55 ci: fix name collision in npm artifacts for vectordb (#1164)
Fixes #1163
2024-03-28 14:07:27 -05:00
Weston Pace
e52dc877e3 chore: add nodejs to bumpversion (#1161)
The previous release failed to release nodejs because the nodejs version
wasn't bumped. This should fix that.
2024-03-28 08:54:32 -07:00
Weston Pace
ca4fdf5499 chore: fix clippy (#1162) 2024-03-28 08:54:17 -07:00
Bert
0e9ad764b0 added new logo to vercel example gif (#1158) 2024-03-26 16:25:36 -04:00
Bert
cae0348c51 New logo on docs site (#1157) 2024-03-26 20:50:13 +05:30
72 changed files with 3735 additions and 148 deletions

View File

@@ -1,5 +1,5 @@
[bumpversion]
current_version = 0.4.14
current_version = 0.4.16
commit = True
message = Bump version: {current_version} → {new_version}
tag = True
@@ -7,6 +7,16 @@ tag_name = v{new_version}
[bumpversion:file:node/package.json]
[bumpversion:file:nodejs/package.json]
[bumpversion:file:nodejs/npm/darwin-x64/package.json]
[bumpversion:file:nodejs/npm/darwin-arm64/package.json]
[bumpversion:file:nodejs/npm/linux-x64-gnu/package.json]
[bumpversion:file:nodejs/npm/linux-arm64-gnu/package.json]
[bumpversion:file:rust/ffi/node/Cargo.toml]
[bumpversion:file:rust/lancedb/Cargo.toml]

View File

@@ -14,6 +14,10 @@ inputs:
# Note: this does *not* mean the host is arm64, since we might be cross-compiling.
required: false
default: "false"
manylinux:
description: "The manylinux version to build for"
required: false
default: "2_17"
runs:
using: "composite"
steps:
@@ -28,7 +32,7 @@ runs:
command: build
working-directory: python
target: x86_64-unknown-linux-gnu
manylinux: "2_17"
manylinux: ${{ inputs.manylinux }}
args: ${{ inputs.args }}
before-script-linux: |
set -e
@@ -43,7 +47,7 @@ runs:
command: build
working-directory: python
target: aarch64-unknown-linux-gnu
manylinux: "2_24"
manylinux: ${{ inputs.manylinux }}
args: ${{ inputs.args }}
before-script-linux: |
set -e

View File

@@ -63,7 +63,7 @@ jobs:
- name: Upload Darwin Artifacts
uses: actions/upload-artifact@v4
with:
name: node-native-darwin
name: node-native-darwin-${{ matrix.config.arch }}
path: |
node/dist/lancedb-vectordb-darwin*.tgz
@@ -134,7 +134,7 @@ jobs:
- name: Upload Linux Artifacts
uses: actions/upload-artifact@v4
with:
name: node-native-linux
name: node-native-linux-${{ matrix.config.arch }}
path: |
node/dist/lancedb-vectordb-linux*.tgz

View File

@@ -6,13 +6,23 @@ on:
jobs:
linux:
name: Python ${{ matrix.config.platform }} manylinux${{ matrix.config.manylinux }}
timeout-minutes: 60
strategy:
matrix:
python-minor-version: ["8"]
platform:
- x86_64
- aarch64
config:
- platform: x86_64
manylinux: "2_17"
extra_args: ""
- platform: x86_64
manylinux: "2_28"
extra_args: "--features fp16kernels"
- platform: aarch64
manylinux: "2_24"
extra_args: ""
# We don't build fp16 kernels for aarch64, because it uses
# cross compilation image, which doesn't have a new enough compiler.
runs-on: "ubuntu-22.04"
steps:
- uses: actions/checkout@v4
@@ -26,8 +36,9 @@ jobs:
- uses: ./.github/workflows/build_linux_wheel
with:
python-minor-version: ${{ matrix.python-minor-version }}
args: "--release --strip"
arm-build: ${{ matrix.platform == 'aarch64' }}
args: "--release --strip ${{ matrix.config.extra_args }}"
arm-build: ${{ matrix.config.platform == 'aarch64' }}
manylinux: ${{ matrix.config.manylinux }}
- uses: ./.github/workflows/upload_wheel
with:
token: ${{ secrets.LANCEDB_PYPI_API_TOKEN }}
@@ -58,7 +69,7 @@ jobs:
- uses: ./.github/workflows/build_mac_wheel
with:
python-minor-version: ${{ matrix.python-minor-version }}
args: "--release --strip --target ${{ matrix.config.target }}"
args: "--release --strip --target ${{ matrix.config.target }} --features fp16kernels"
- uses: ./.github/workflows/upload_wheel
with:
python-minor-version: ${{ matrix.python-minor-version }}

View File

@@ -31,6 +31,10 @@ jobs:
run:
shell: bash
working-directory: rust
env:
# Need up-to-date compilers for kernels
CC: gcc-12
CXX: g++-12
steps:
- uses: actions/checkout@v4
with:
@@ -54,6 +58,10 @@ jobs:
run:
shell: bash
working-directory: rust
env:
# Need up-to-date compilers for kernels
CC: gcc-12
CXX: g++-12
steps:
- uses: actions/checkout@v4
with:

View File

@@ -14,10 +14,10 @@ keywords = ["lancedb", "lance", "database", "vector", "search"]
categories = ["database-implementations"]
[workspace.dependencies]
lance = { "version" = "=0.10.5", "features" = ["dynamodb"] }
lance-index = { "version" = "=0.10.5" }
lance-linalg = { "version" = "=0.10.5" }
lance-testing = { "version" = "=0.10.5" }
lance = { "version" = "=0.10.9", "features" = ["dynamodb"] }
lance-index = { "version" = "=0.10.9" }
lance-linalg = { "version" = "=0.10.9" }
lance-testing = { "version" = "=0.10.9" }
# Note that this one does not include pyarrow
arrow = { version = "50.0", optional = false }
arrow-array = "50.0"

View File

@@ -1,13 +1,13 @@
<div align="center">
<p align="center">
<img width="275" alt="LanceDB Logo" src="https://user-images.githubusercontent.com/917119/226205734-6063d87a-1ecc-45fe-85be-1dea6383a3d8.png">
<img width="275" alt="LanceDB Logo" src="https://github.com/lancedb/lancedb/assets/5846846/37d7c7ad-c2fd-4f56-9f16-fffb0d17c73a">
**Developer-friendly, serverless vector database for AI applications**
**Developer-friendly, database for multimodal AI**
<a href='https://github.com/lancedb/vectordb-recipes/tree/main' target="_blank"><img alt='LanceDB' src='https://img.shields.io/badge/VectorDB_Recipes-100000?style=for-the-badge&logo=LanceDB&logoColor=white&labelColor=645cfb&color=645cfb'/></a>
<a href='https://lancedb.github.io/lancedb/' target="_blank"><img alt='lancdb' src='https://img.shields.io/badge/DOCS-100000?style=for-the-badge&logo=lancdb&logoColor=white&labelColor=645cfb&color=645cfb'/></a>
[![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/)
[![Blog](https://img.shields.io/badge/Blog-12100E?style=for-the-badge&logoColor=white)](https://blog.lancedb.com/)
[![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/zMM32dvNtd)
[![Twitter](https://img.shields.io/badge/Twitter-%231DA1F2.svg?style=for-the-badge&logo=Twitter&logoColor=white)](https://twitter.com/lancedb)

View File

@@ -147,7 +147,8 @@ nav:
- 💭 FAQs: faq.md
- ⚙️ API reference:
- 🐍 Python: python/python.md
- 👾 JavaScript: javascript/modules.md
- 👾 JavaScript (vectordb): javascript/modules.md
- 👾 JavaScript (lancedb): javascript/modules.md
- 🦀 Rust: https://docs.rs/lancedb/latest/lancedb/
- ☁️ LanceDB Cloud:
- Overview: cloud/index.md
@@ -205,7 +206,8 @@ nav:
- API reference:
- Overview: api_reference.md
- Python: python/python.md
- Javascript: javascript/modules.md
- Javascript (vectordb): javascript/modules.md
- Javascript (lancedb): js/modules.md
- Rust: https://docs.rs/lancedb/latest/lancedb/index.html
- LanceDB Cloud:
- Overview: cloud/index.md
@@ -224,3 +226,10 @@ extra:
analytics:
provider: google
property: G-B7NFM40W74
social:
- icon: fontawesome/brands/github
link: https://github.com/lancedb/lancedb
- icon: fontawesome/brands/x-twitter
link: https://twitter.com/lancedb
- icon: fontawesome/brands/linkedin
link: https://www.linkedin.com/company/lancedb

View File

@@ -3,5 +3,6 @@
The API reference for the LanceDB client SDKs are available at the following locations:
- [Python](python/python.md)
- [JavaScript](javascript/modules.md)
- [JavaScript (legacy vectordb package)](javascript/modules.md)
- [JavaScript (newer @lancedb/lancedb package)](js/modules.md)
- [Rust](https://docs.rs/lancedb/latest/lancedb/index.html)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 205 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View File

@@ -71,6 +71,16 @@
--8<-- "docs/src/basic_legacy.ts:open_db"
```
!!! note "`@lancedb/lancedb` vs. `vectordb`"
The Javascript SDK was originally released as `vectordb`. In an effort to
reduce maintenance we are aligning our SDKs. The new, aligned, Javascript
API is being released as `lancedb`. If you are starting new work we encourage
you to try out `lancedb`. Once the new API is feature complete we will begin
slowly deprecating `vectordb` in favor of `lancedb`. There is a
[migration guide](migration.md) detailing the differences which will assist
you in this process.
=== "Rust"
```rust

1
docs/src/js/.nojekyll Normal file
View File

@@ -0,0 +1 @@
TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.

83
docs/src/js/README.md Normal file
View File

@@ -0,0 +1,83 @@
@lancedb/lancedb / [Exports](modules.md)
# LanceDB JavaScript SDK
A JavaScript library for [LanceDB](https://github.com/lancedb/lancedb).
## Installation
```bash
npm install @lancedb/lancedb
```
This will download the appropriate native library for your platform. We currently
support:
- Linux (x86_64 and aarch64)
- MacOS (Intel and ARM/M1/M2)
- Windows (x86_64 only)
We do not yet support musl-based Linux (such as Alpine Linux) or aarch64 Windows.
## Usage
### Basic Example
```javascript
import * as lancedb from "@lancedb/lancedb";
const db = await lancedb.connect("data/sample-lancedb");
const table = await db.createTable("my_table", [
{ id: 1, vector: [0.1, 1.0], item: "foo", price: 10.0 },
{ id: 2, vector: [3.9, 0.5], item: "bar", price: 20.0 },
]);
const results = await table.vectorSearch([0.1, 0.3]).limit(20).toArray();
console.log(results);
```
The [quickstart](../basic.md) contains a more complete example.
## Development
```sh
npm run build
npm run test
```
### Running lint / format
LanceDb uses eslint for linting. VSCode does not need any plugins to use eslint. However, it
may need some additional configuration. Make sure that eslint.experimental.useFlatConfig is
set to true. Also, if your vscode root folder is the repo root then you will need to set
the eslint.workingDirectories to ["nodejs"]. To manually lint your code you can run:
```sh
npm run lint
```
LanceDb uses prettier for formatting. If you are using VSCode you will need to install the
"Prettier - Code formatter" extension. You should then configure it to be the default formatter
for typescript and you should enable format on save. To manually check your code's format you
can run:
```sh
npm run chkformat
```
If you need to manually format your code you can run:
```sh
npx prettier --write .
```
### Generating docs
```sh
npm run docs
cd ../docs
# Asssume the virtual environment was created
# python3 -m venv venv
# pip install -r requirements.txt
. ./venv/bin/activate
mkdocs build
```

View File

@@ -0,0 +1,239 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / Connection
# Class: Connection
A LanceDB Connection that allows you to open tables and create new ones.
Connection could be local against filesystem or remote against a server.
A Connection is intended to be a long lived object and may hold open
resources such as HTTP connection pools. This is generally fine and
a single connection should be shared if it is going to be used many
times. However, if you are finished with a connection, you may call
close to eagerly free these resources. Any call to a Connection
method after it has been closed will result in an error.
Closing a connection is optional. Connections will automatically
be closed when they are garbage collected.
Any created tables are independent and will continue to work even if
the underlying connection has been closed.
## Table of contents
### Constructors
- [constructor](Connection.md#constructor)
### Properties
- [inner](Connection.md#inner)
### Methods
- [close](Connection.md#close)
- [createEmptyTable](Connection.md#createemptytable)
- [createTable](Connection.md#createtable)
- [display](Connection.md#display)
- [dropTable](Connection.md#droptable)
- [isOpen](Connection.md#isopen)
- [openTable](Connection.md#opentable)
- [tableNames](Connection.md#tablenames)
## Constructors
### constructor
**new Connection**(`inner`): [`Connection`](Connection.md)
#### Parameters
| Name | Type |
| :------ | :------ |
| `inner` | `Connection` |
#### Returns
[`Connection`](Connection.md)
#### Defined in
[connection.ts:72](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/connection.ts#L72)
## Properties
### inner
`Readonly` **inner**: `Connection`
#### Defined in
[connection.ts:70](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/connection.ts#L70)
## Methods
### close
**close**(): `void`
Close the connection, releasing any underlying resources.
It is safe to call this method multiple times.
Any attempt to use the connection after it is closed will result in an error.
#### Returns
`void`
#### Defined in
[connection.ts:88](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/connection.ts#L88)
___
### createEmptyTable
**createEmptyTable**(`name`, `schema`, `options?`): `Promise`\<[`Table`](Table.md)\>
Creates a new empty Table
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `name` | `string` | The name of the table. |
| `schema` | `Schema`\<`any`\> | The schema of the table |
| `options?` | `Partial`\<[`CreateTableOptions`](../interfaces/CreateTableOptions.md)\> | - |
#### Returns
`Promise`\<[`Table`](Table.md)\>
#### Defined in
[connection.ts:151](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/connection.ts#L151)
___
### createTable
**createTable**(`name`, `data`, `options?`): `Promise`\<[`Table`](Table.md)\>
Creates a new Table and initialize it with new data.
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `name` | `string` | The name of the table. |
| `data` | `Table`\<`any`\> \| `Record`\<`string`, `unknown`\>[] | Non-empty Array of Records to be inserted into the table |
| `options?` | `Partial`\<[`CreateTableOptions`](../interfaces/CreateTableOptions.md)\> | - |
#### Returns
`Promise`\<[`Table`](Table.md)\>
#### Defined in
[connection.ts:123](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/connection.ts#L123)
___
### display
**display**(): `string`
Return a brief description of the connection
#### Returns
`string`
#### Defined in
[connection.ts:93](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/connection.ts#L93)
___
### dropTable
**dropTable**(`name`): `Promise`\<`void`\>
Drop an existing table.
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `name` | `string` | The name of the table to drop. |
#### Returns
`Promise`\<`void`\>
#### Defined in
[connection.ts:173](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/connection.ts#L173)
___
### isOpen
**isOpen**(): `boolean`
Return true if the connection has not been closed
#### Returns
`boolean`
#### Defined in
[connection.ts:77](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/connection.ts#L77)
___
### openTable
**openTable**(`name`): `Promise`\<[`Table`](Table.md)\>
Open a table in the database.
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `name` | `string` | The name of the table |
#### Returns
`Promise`\<[`Table`](Table.md)\>
#### Defined in
[connection.ts:112](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/connection.ts#L112)
___
### tableNames
**tableNames**(`options?`): `Promise`\<`string`[]\>
List all the table names in this database.
Tables will be returned in lexicographical order.
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `options?` | `Partial`\<[`TableNamesOptions`](../interfaces/TableNamesOptions.md)\> | options to control the paging / start point |
#### Returns
`Promise`\<`string`[]\>
#### Defined in
[connection.ts:104](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/connection.ts#L104)

View File

@@ -0,0 +1,121 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / Index
# Class: Index
## Table of contents
### Constructors
- [constructor](Index.md#constructor)
### Properties
- [inner](Index.md#inner)
### Methods
- [btree](Index.md#btree)
- [ivfPq](Index.md#ivfpq)
## Constructors
### constructor
**new Index**(`inner`): [`Index`](Index.md)
#### Parameters
| Name | Type |
| :------ | :------ |
| `inner` | `Index` |
#### Returns
[`Index`](Index.md)
#### Defined in
[indices.ts:118](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/indices.ts#L118)
## Properties
### inner
`Private` `Readonly` **inner**: `Index`
#### Defined in
[indices.ts:117](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/indices.ts#L117)
## Methods
### btree
**btree**(): [`Index`](Index.md)
Create a btree index
A btree index is an index on a scalar columns. The index stores a copy of the column
in sorted order. A header entry is created for each block of rows (currently the
block size is fixed at 4096). These header entries are stored in a separate
cacheable structure (a btree). To search for data the header is used to determine
which blocks need to be read from disk.
For example, a btree index in a table with 1Bi rows requires sizeof(Scalar) * 256Ki
bytes of memory and will generally need to read sizeof(Scalar) * 4096 bytes to find
the correct row ids.
This index is good for scalar columns with mostly distinct values and does best when
the query is highly selective.
The btree index does not currently have any parameters though parameters such as the
block size may be added in the future.
#### Returns
[`Index`](Index.md)
#### Defined in
[indices.ts:175](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/indices.ts#L175)
___
### ivfPq
**ivfPq**(`options?`): [`Index`](Index.md)
Create an IvfPq index
This index stores a compressed (quantized) copy of every vector. These vectors
are grouped into partitions of similar vectors. Each partition keeps track of
a centroid which is the average value of all vectors in the group.
During a query the centroids are compared with the query vector to find the closest
partitions. The compressed vectors in these partitions are then searched to find
the closest vectors.
The compression scheme is called product quantization. Each vector is divided into
subvectors and then each subvector is quantized into a small number of bits. the
parameters `num_bits` and `num_subvectors` control this process, providing a tradeoff
between index size (and thus search speed) and index accuracy.
The partitioning process is called IVF and the `num_partitions` parameter controls how
many groups to create.
Note that training an IVF PQ index on a large dataset is a slow operation and
currently is also a memory intensive operation.
#### Parameters
| Name | Type |
| :------ | :------ |
| `options?` | `Partial`\<[`IvfPqOptions`](../interfaces/IvfPqOptions.md)\> |
#### Returns
[`Index`](Index.md)
#### Defined in
[indices.ts:144](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/indices.ts#L144)

View File

@@ -0,0 +1,75 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / MakeArrowTableOptions
# Class: MakeArrowTableOptions
Options to control the makeArrowTable call.
## Table of contents
### Constructors
- [constructor](MakeArrowTableOptions.md#constructor)
### Properties
- [dictionaryEncodeStrings](MakeArrowTableOptions.md#dictionaryencodestrings)
- [schema](MakeArrowTableOptions.md#schema)
- [vectorColumns](MakeArrowTableOptions.md#vectorcolumns)
## Constructors
### constructor
**new MakeArrowTableOptions**(`values?`): [`MakeArrowTableOptions`](MakeArrowTableOptions.md)
#### Parameters
| Name | Type |
| :------ | :------ |
| `values?` | `Partial`\<[`MakeArrowTableOptions`](MakeArrowTableOptions.md)\> |
#### Returns
[`MakeArrowTableOptions`](MakeArrowTableOptions.md)
#### Defined in
[arrow.ts:100](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/arrow.ts#L100)
## Properties
### dictionaryEncodeStrings
**dictionaryEncodeStrings**: `boolean` = `false`
If true then string columns will be encoded with dictionary encoding
Set this to true if your string columns tend to repeat the same values
often. For more precise control use the `schema` property to specify the
data type for individual columns.
If `schema` is provided then this property is ignored.
#### Defined in
[arrow.ts:98](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/arrow.ts#L98)
___
### schema
`Optional` **schema**: `Schema`\<`any`\>
#### Defined in
[arrow.ts:67](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/arrow.ts#L67)
___
### vectorColumns
**vectorColumns**: `Record`\<`string`, [`VectorColumnOptions`](VectorColumnOptions.md)\>
#### Defined in
[arrow.ts:85](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/arrow.ts#L85)

View File

@@ -0,0 +1,368 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / Query
# Class: Query
A builder for LanceDB queries.
## Hierarchy
- [`QueryBase`](QueryBase.md)\<`NativeQuery`, [`Query`](Query.md)\>
**`Query`**
## Table of contents
### Constructors
- [constructor](Query.md#constructor)
### Properties
- [inner](Query.md#inner)
### Methods
- [[asyncIterator]](Query.md#[asynciterator])
- [execute](Query.md#execute)
- [limit](Query.md#limit)
- [nativeExecute](Query.md#nativeexecute)
- [nearestTo](Query.md#nearestto)
- [select](Query.md#select)
- [toArray](Query.md#toarray)
- [toArrow](Query.md#toarrow)
- [where](Query.md#where)
## Constructors
### constructor
**new Query**(`tbl`): [`Query`](Query.md)
#### Parameters
| Name | Type |
| :------ | :------ |
| `tbl` | `Table` |
#### Returns
[`Query`](Query.md)
#### Overrides
[QueryBase](QueryBase.md).[constructor](QueryBase.md#constructor)
#### Defined in
[query.ts:329](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L329)
## Properties
### inner
`Protected` **inner**: `Query`
#### Inherited from
[QueryBase](QueryBase.md).[inner](QueryBase.md#inner)
#### Defined in
[query.ts:59](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L59)
## Methods
### [asyncIterator]
**[asyncIterator]**(): `AsyncIterator`\<`RecordBatch`\<`any`\>, `any`, `undefined`\>
#### Returns
`AsyncIterator`\<`RecordBatch`\<`any`\>, `any`, `undefined`\>
#### Inherited from
[QueryBase](QueryBase.md).[[asyncIterator]](QueryBase.md#[asynciterator])
#### Defined in
[query.ts:154](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L154)
___
### execute
**execute**(): [`RecordBatchIterator`](RecordBatchIterator.md)
Execute the query and return the results as an
#### Returns
[`RecordBatchIterator`](RecordBatchIterator.md)
**`See`**
- AsyncIterator
of
- RecordBatch.
By default, LanceDb will use many threads to calculate results and, when
the result set is large, multiple batches will be processed at one time.
This readahead is limited however and backpressure will be applied if this
stream is consumed slowly (this constrains the maximum memory used by a
single query)
#### Inherited from
[QueryBase](QueryBase.md).[execute](QueryBase.md#execute)
#### Defined in
[query.ts:149](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L149)
___
### limit
**limit**(`limit`): [`Query`](Query.md)
Set the maximum number of results to return.
By default, a plain search has no limit. If this method is not
called then every valid row from the table will be returned.
#### Parameters
| Name | Type |
| :------ | :------ |
| `limit` | `number` |
#### Returns
[`Query`](Query.md)
#### Inherited from
[QueryBase](QueryBase.md).[limit](QueryBase.md#limit)
#### Defined in
[query.ts:129](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L129)
___
### nativeExecute
**nativeExecute**(): `Promise`\<`RecordBatchIterator`\>
#### Returns
`Promise`\<`RecordBatchIterator`\>
#### Inherited from
[QueryBase](QueryBase.md).[nativeExecute](QueryBase.md#nativeexecute)
#### Defined in
[query.ts:134](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L134)
___
### nearestTo
**nearestTo**(`vector`): [`VectorQuery`](VectorQuery.md)
Find the nearest vectors to the given query vector.
This converts the query from a plain query to a vector query.
This method will attempt to convert the input to the query vector
expected by the embedding model. If the input cannot be converted
then an error will be thrown.
By default, there is no embedding model, and the input should be
an array-like object of numbers (something that can be used as input
to Float32Array.from)
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.
If there is more than one vector column you must use
#### Parameters
| Name | Type |
| :------ | :------ |
| `vector` | `unknown` |
#### Returns
[`VectorQuery`](VectorQuery.md)
**`See`**
- [VectorQuery#column](VectorQuery.md#column) to specify which column you would like
to compare with.
If no index has been created on the vector column then a vector query
will perform a distance comparison between the query vector and every
vector in the database and then sort the results. This is sometimes
called a "flat search"
For small databases, with a few hundred thousand vectors or less, this can
be reasonably fast. In larger databases you should create a vector index
on the column. If there is a vector index then an "approximate" nearest
neighbor search (frequently called an ANN search) will be performed. This
search is much faster, but the results will be approximate.
The query can be further parameterized using the returned builder. There
are various ANN search parameters that will let you fine tune your recall
accuracy vs search latency.
Vector searches always have a `limit`. If `limit` has not been called then
a default `limit` of 10 will be used.
- [Query#limit](Query.md#limit)
#### Defined in
[query.ts:370](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L370)
___
### select
**select**(`columns`): [`Query`](Query.md)
Return only the specified columns.
By default a query will return all columns from the table. However, this can have
a very significant impact on latency. LanceDb stores data in a columnar fashion. This
means we can finely tune our I/O to select exactly the columns we need.
As a best practice you should always limit queries to the columns that you need. If you
pass in an array of column names then only those columns will be returned.
You can also use this method to create new "dynamic" columns based on your existing columns.
For example, you may not care about "a" or "b" but instead simply want "a + b". This is often
seen in the SELECT clause of an SQL query (e.g. `SELECT a+b FROM my_table`).
To create dynamic columns you can pass in a Map<string, string>. A column will be returned
for each entry in the map. The key provides the name of the column. The value is
an SQL string used to specify how the column is calculated.
For example, an SQL query might state `SELECT a + b AS combined, c`. The equivalent
input to this method would be:
#### Parameters
| Name | Type |
| :------ | :------ |
| `columns` | `string`[] \| `Record`\<`string`, `string`\> \| `Map`\<`string`, `string`\> |
#### Returns
[`Query`](Query.md)
**`Example`**
```ts
new Map([["combined", "a + b"], ["c", "c"]])
Columns will always be returned in the order given, even if that order is different than
the order used when adding the data.
Note that you can pass in a `Record<string, string>` (e.g. an object literal). This method
uses `Object.entries` which should preserve the insertion order of the object. However,
object insertion order is easy to get wrong and `Map` is more foolproof.
```
#### Inherited from
[QueryBase](QueryBase.md).[select](QueryBase.md#select)
#### Defined in
[query.ts:108](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L108)
___
### toArray
**toArray**(): `Promise`\<`unknown`[]\>
Collect the results as an array of objects.
#### Returns
`Promise`\<`unknown`[]\>
#### Inherited from
[QueryBase](QueryBase.md).[toArray](QueryBase.md#toarray)
#### Defined in
[query.ts:169](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L169)
___
### toArrow
**toArrow**(): `Promise`\<`Table`\<`any`\>\>
Collect the results as an Arrow
#### Returns
`Promise`\<`Table`\<`any`\>\>
**`See`**
ArrowTable.
#### Inherited from
[QueryBase](QueryBase.md).[toArrow](QueryBase.md#toarrow)
#### Defined in
[query.ts:160](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L160)
___
### where
**where**(`predicate`): [`Query`](Query.md)
A filter statement to be applied to this query.
The filter should be supplied as an SQL query string. For example:
#### Parameters
| Name | Type |
| :------ | :------ |
| `predicate` | `string` |
#### Returns
[`Query`](Query.md)
**`Example`**
```ts
x > 10
y > 0 AND y < 100
x > 5 OR y = 'test'
Filtering performance can often be improved by creating a scalar index
on the filter column(s).
```
#### Inherited from
[QueryBase](QueryBase.md).[where](QueryBase.md#where)
#### Defined in
[query.ts:73](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L73)

View File

@@ -0,0 +1,291 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / QueryBase
# Class: QueryBase\<NativeQueryType, QueryType\>
Common methods supported by all query types
## Type parameters
| Name | Type |
| :------ | :------ |
| `NativeQueryType` | extends `NativeQuery` \| `NativeVectorQuery` |
| `QueryType` | `QueryType` |
## Hierarchy
- **`QueryBase`**
↳ [`Query`](Query.md)
↳ [`VectorQuery`](VectorQuery.md)
## Implements
- `AsyncIterable`\<`RecordBatch`\>
## Table of contents
### Constructors
- [constructor](QueryBase.md#constructor)
### Properties
- [inner](QueryBase.md#inner)
### Methods
- [[asyncIterator]](QueryBase.md#[asynciterator])
- [execute](QueryBase.md#execute)
- [limit](QueryBase.md#limit)
- [nativeExecute](QueryBase.md#nativeexecute)
- [select](QueryBase.md#select)
- [toArray](QueryBase.md#toarray)
- [toArrow](QueryBase.md#toarrow)
- [where](QueryBase.md#where)
## Constructors
### constructor
**new QueryBase**\<`NativeQueryType`, `QueryType`\>(`inner`): [`QueryBase`](QueryBase.md)\<`NativeQueryType`, `QueryType`\>
#### Type parameters
| Name | Type |
| :------ | :------ |
| `NativeQueryType` | extends `Query` \| `VectorQuery` |
| `QueryType` | `QueryType` |
#### Parameters
| Name | Type |
| :------ | :------ |
| `inner` | `NativeQueryType` |
#### Returns
[`QueryBase`](QueryBase.md)\<`NativeQueryType`, `QueryType`\>
#### Defined in
[query.ts:59](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L59)
## Properties
### inner
`Protected` **inner**: `NativeQueryType`
#### Defined in
[query.ts:59](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L59)
## Methods
### [asyncIterator]
**[asyncIterator]**(): `AsyncIterator`\<`RecordBatch`\<`any`\>, `any`, `undefined`\>
#### Returns
`AsyncIterator`\<`RecordBatch`\<`any`\>, `any`, `undefined`\>
#### Implementation of
AsyncIterable.[asyncIterator]
#### Defined in
[query.ts:154](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L154)
___
### execute
**execute**(): [`RecordBatchIterator`](RecordBatchIterator.md)
Execute the query and return the results as an
#### Returns
[`RecordBatchIterator`](RecordBatchIterator.md)
**`See`**
- AsyncIterator
of
- RecordBatch.
By default, LanceDb will use many threads to calculate results and, when
the result set is large, multiple batches will be processed at one time.
This readahead is limited however and backpressure will be applied if this
stream is consumed slowly (this constrains the maximum memory used by a
single query)
#### Defined in
[query.ts:149](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L149)
___
### limit
**limit**(`limit`): `QueryType`
Set the maximum number of results to return.
By default, a plain search has no limit. If this method is not
called then every valid row from the table will be returned.
#### Parameters
| Name | Type |
| :------ | :------ |
| `limit` | `number` |
#### Returns
`QueryType`
#### Defined in
[query.ts:129](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L129)
___
### nativeExecute
**nativeExecute**(): `Promise`\<`RecordBatchIterator`\>
#### Returns
`Promise`\<`RecordBatchIterator`\>
#### Defined in
[query.ts:134](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L134)
___
### select
**select**(`columns`): `QueryType`
Return only the specified columns.
By default a query will return all columns from the table. However, this can have
a very significant impact on latency. LanceDb stores data in a columnar fashion. This
means we can finely tune our I/O to select exactly the columns we need.
As a best practice you should always limit queries to the columns that you need. If you
pass in an array of column names then only those columns will be returned.
You can also use this method to create new "dynamic" columns based on your existing columns.
For example, you may not care about "a" or "b" but instead simply want "a + b". This is often
seen in the SELECT clause of an SQL query (e.g. `SELECT a+b FROM my_table`).
To create dynamic columns you can pass in a Map<string, string>. A column will be returned
for each entry in the map. The key provides the name of the column. The value is
an SQL string used to specify how the column is calculated.
For example, an SQL query might state `SELECT a + b AS combined, c`. The equivalent
input to this method would be:
#### Parameters
| Name | Type |
| :------ | :------ |
| `columns` | `string`[] \| `Record`\<`string`, `string`\> \| `Map`\<`string`, `string`\> |
#### Returns
`QueryType`
**`Example`**
```ts
new Map([["combined", "a + b"], ["c", "c"]])
Columns will always be returned in the order given, even if that order is different than
the order used when adding the data.
Note that you can pass in a `Record<string, string>` (e.g. an object literal). This method
uses `Object.entries` which should preserve the insertion order of the object. However,
object insertion order is easy to get wrong and `Map` is more foolproof.
```
#### Defined in
[query.ts:108](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L108)
___
### toArray
**toArray**(): `Promise`\<`unknown`[]\>
Collect the results as an array of objects.
#### Returns
`Promise`\<`unknown`[]\>
#### Defined in
[query.ts:169](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L169)
___
### toArrow
**toArrow**(): `Promise`\<`Table`\<`any`\>\>
Collect the results as an Arrow
#### Returns
`Promise`\<`Table`\<`any`\>\>
**`See`**
ArrowTable.
#### Defined in
[query.ts:160](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L160)
___
### where
**where**(`predicate`): `QueryType`
A filter statement to be applied to this query.
The filter should be supplied as an SQL query string. For example:
#### Parameters
| Name | Type |
| :------ | :------ |
| `predicate` | `string` |
#### Returns
`QueryType`
**`Example`**
```ts
x > 10
y > 0 AND y < 100
x > 5 OR y = 'test'
Filtering performance can often be improved by creating a scalar index
on the filter column(s).
```
#### Defined in
[query.ts:73](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L73)

View File

@@ -0,0 +1,80 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / RecordBatchIterator
# Class: RecordBatchIterator
## Implements
- `AsyncIterator`\<`RecordBatch`\>
## Table of contents
### Constructors
- [constructor](RecordBatchIterator.md#constructor)
### Properties
- [inner](RecordBatchIterator.md#inner)
- [promisedInner](RecordBatchIterator.md#promisedinner)
### Methods
- [next](RecordBatchIterator.md#next)
## Constructors
### constructor
**new RecordBatchIterator**(`promise?`): [`RecordBatchIterator`](RecordBatchIterator.md)
#### Parameters
| Name | Type |
| :------ | :------ |
| `promise?` | `Promise`\<`RecordBatchIterator`\> |
#### Returns
[`RecordBatchIterator`](RecordBatchIterator.md)
#### Defined in
[query.ts:27](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L27)
## Properties
### inner
`Private` `Optional` **inner**: `RecordBatchIterator`
#### Defined in
[query.ts:25](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L25)
___
### promisedInner
`Private` `Optional` **promisedInner**: `Promise`\<`RecordBatchIterator`\>
#### Defined in
[query.ts:24](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L24)
## Methods
### next
**next**(): `Promise`\<`IteratorResult`\<`RecordBatch`\<`any`\>, `any`\>\>
#### Returns
`Promise`\<`IteratorResult`\<`RecordBatch`\<`any`\>, `any`\>\>
#### Implementation of
AsyncIterator.next
#### Defined in
[query.ts:33](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L33)

View File

@@ -0,0 +1,594 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / Table
# Class: Table
A Table is a collection of Records in a LanceDB Database.
A Table object is expected to be long lived and reused for multiple operations.
Table objects will cache a certain amount of index data in memory. This cache
will be freed when the Table is garbage collected. To eagerly free the cache you
can call the `close` method. Once the Table is closed, it cannot be used for any
further operations.
Closing a table is optional. It not closed, it will be closed when it is garbage
collected.
## Table of contents
### Constructors
- [constructor](Table.md#constructor)
### Properties
- [inner](Table.md#inner)
### Methods
- [add](Table.md#add)
- [addColumns](Table.md#addcolumns)
- [alterColumns](Table.md#altercolumns)
- [checkout](Table.md#checkout)
- [checkoutLatest](Table.md#checkoutlatest)
- [close](Table.md#close)
- [countRows](Table.md#countrows)
- [createIndex](Table.md#createindex)
- [delete](Table.md#delete)
- [display](Table.md#display)
- [dropColumns](Table.md#dropcolumns)
- [isOpen](Table.md#isopen)
- [listIndices](Table.md#listindices)
- [query](Table.md#query)
- [restore](Table.md#restore)
- [schema](Table.md#schema)
- [update](Table.md#update)
- [vectorSearch](Table.md#vectorsearch)
- [version](Table.md#version)
## Constructors
### constructor
**new Table**(`inner`): [`Table`](Table.md)
Construct a Table. Internal use only.
#### Parameters
| Name | Type |
| :------ | :------ |
| `inner` | `Table` |
#### Returns
[`Table`](Table.md)
#### Defined in
[table.ts:69](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L69)
## Properties
### inner
`Private` `Readonly` **inner**: `Table`
#### Defined in
[table.ts:66](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L66)
## Methods
### add
**add**(`data`, `options?`): `Promise`\<`void`\>
Insert records into this Table.
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `data` | [`Data`](../modules.md#data) | Records to be inserted into the Table |
| `options?` | `Partial`\<[`AddDataOptions`](../interfaces/AddDataOptions.md)\> | - |
#### Returns
`Promise`\<`void`\>
#### Defined in
[table.ts:105](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L105)
___
### addColumns
**addColumns**(`newColumnTransforms`): `Promise`\<`void`\>
Add new columns with defined values.
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `newColumnTransforms` | [`AddColumnsSql`](../interfaces/AddColumnsSql.md)[] | pairs of column names and the SQL expression to use to calculate the value of the new column. These expressions will be evaluated for each row in the table, and can reference existing columns in the table. |
#### Returns
`Promise`\<`void`\>
#### Defined in
[table.ts:261](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L261)
___
### alterColumns
**alterColumns**(`columnAlterations`): `Promise`\<`void`\>
Alter the name or nullability of columns.
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `columnAlterations` | [`ColumnAlteration`](../interfaces/ColumnAlteration.md)[] | One or more alterations to apply to columns. |
#### Returns
`Promise`\<`void`\>
#### Defined in
[table.ts:270](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L270)
___
### checkout
**checkout**(`version`): `Promise`\<`void`\>
Checks out a specific version of the Table
Any read operation on the table will now access the data at the checked out version.
As a consequence, calling this method will disable any read consistency interval
that was previously set.
This is a read-only operation that turns the table into a sort of "view"
or "detached head". Other table instances will not be affected. To make the change
permanent you can use the `[Self::restore]` method.
Any operation that modifies the table will fail while the table is in a checked
out state.
To return the table to a normal state use `[Self::checkout_latest]`
#### Parameters
| Name | Type |
| :------ | :------ |
| `version` | `number` |
#### Returns
`Promise`\<`void`\>
#### Defined in
[table.ts:317](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L317)
___
### checkoutLatest
**checkoutLatest**(): `Promise`\<`void`\>
Ensures the table is pointing at the latest version
This can be used to manually update a table when the read_consistency_interval is None
It can also be used to undo a `[Self::checkout]` operation
#### Returns
`Promise`\<`void`\>
#### Defined in
[table.ts:327](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L327)
___
### close
**close**(): `void`
Close the table, releasing any underlying resources.
It is safe to call this method multiple times.
Any attempt to use the table after it is closed will result in an error.
#### Returns
`void`
#### Defined in
[table.ts:85](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L85)
___
### countRows
**countRows**(`filter?`): `Promise`\<`number`\>
Count the total number of rows in the dataset.
#### Parameters
| Name | Type |
| :------ | :------ |
| `filter?` | `string` |
#### Returns
`Promise`\<`number`\>
#### Defined in
[table.ts:152](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L152)
___
### createIndex
**createIndex**(`column`, `options?`): `Promise`\<`void`\>
Create an index to speed up queries.
Indices can be created on vector columns or scalar columns.
Indices on vector columns will speed up vector searches.
Indices on scalar columns will speed up filtering (in both
vector and non-vector searches)
#### Parameters
| Name | Type |
| :------ | :------ |
| `column` | `string` |
| `options?` | `Partial`\<[`IndexOptions`](../interfaces/IndexOptions.md)\> |
#### Returns
`Promise`\<`void`\>
**`Example`**
```ts
// If the column has a vector (fixed size list) data type then
// an IvfPq vector index will be created.
const table = await conn.openTable("my_table");
await table.createIndex(["vector"]);
```
**`Example`**
```ts
// For advanced control over vector index creation you can specify
// the index type and options.
const table = await conn.openTable("my_table");
await table.createIndex(["vector"], I)
.ivf_pq({ num_partitions: 128, num_sub_vectors: 16 })
.build();
```
**`Example`**
```ts
// Or create a Scalar index
await table.createIndex("my_float_col").build();
```
#### Defined in
[table.ts:184](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L184)
___
### delete
**delete**(`predicate`): `Promise`\<`void`\>
Delete the rows that satisfy the predicate.
#### Parameters
| Name | Type |
| :------ | :------ |
| `predicate` | `string` |
#### Returns
`Promise`\<`void`\>
#### Defined in
[table.ts:157](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L157)
___
### display
**display**(): `string`
Return a brief description of the table
#### Returns
`string`
#### Defined in
[table.ts:90](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L90)
___
### dropColumns
**dropColumns**(`columnNames`): `Promise`\<`void`\>
Drop one or more columns from the dataset
This is a metadata-only operation and does not remove the data from the
underlying storage. In order to remove the data, you must subsequently
call ``compact_files`` to rewrite the data without the removed columns and
then call ``cleanup_files`` to remove the old files.
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `columnNames` | `string`[] | The names of the columns to drop. These can be nested column references (e.g. "a.b.c") or top-level column names (e.g. "a"). |
#### Returns
`Promise`\<`void`\>
#### Defined in
[table.ts:285](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L285)
___
### isOpen
▸ **isOpen**(): `boolean`
Return true if the table has not been closed
#### Returns
`boolean`
#### Defined in
[table.ts:74](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L74)
___
### listIndices
▸ **listIndices**(): `Promise`\<[`IndexConfig`](../interfaces/IndexConfig.md)[]\>
List all indices that have been created with Self::create_index
#### Returns
`Promise`\<[`IndexConfig`](../interfaces/IndexConfig.md)[]\>
#### Defined in
[table.ts:350](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L350)
___
### query
▸ **query**(): [`Query`](Query.md)
Create a [Query](Query.md) Builder.
Queries allow you to search your existing data. By default the query will
return all the data in the table in no particular order. The builder
returned by this method can be used to control the query using filtering,
vector similarity, sorting, and more.
Note: By default, all columns are returned. For best performance, you should
only fetch the columns you need. See [`Query::select_with_projection`] for
more details.
When appropriate, various indices and statistics based pruning will be used to
accelerate the query.
#### Returns
[`Query`](Query.md)
A builder that can be used to parameterize the query
**`Example`**
```ts
// SQL-style filtering
//
// This query will return up to 1000 rows whose value in the `id` column
// is greater than 5. LanceDb supports a broad set of filtering functions.
for await (const batch of table.query()
.filter("id > 1").select(["id"]).limit(20)) {
console.log(batch);
}
```
**`Example`**
```ts
// Vector Similarity Search
//
// This example will find the 10 rows whose value in the "vector" column are
// closest to the query vector [1.0, 2.0, 3.0]. If an index has been created
// on the "vector" column then this will perform an ANN search.
//
// The `refine_factor` and `nprobes` methods are used to control the recall /
// latency tradeoff of the search.
for await (const batch of table.query()
.nearestTo([1, 2, 3])
.refineFactor(5).nprobe(10)
.limit(10)) {
console.log(batch);
}
```
**`Example`**
```ts
// Scan the full dataset
//
// This query will return everything in the table in no particular order.
for await (const batch of table.query()) {
console.log(batch);
}
```
#### Defined in
[table.ts:238](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L238)
___
### restore
▸ **restore**(): `Promise`\<`void`\>
Restore the table to the currently checked out version
This operation will fail if checkout has not been called previously
This operation will overwrite the latest version of the table with a
previous version. Any changes made since the checked out version will
no longer be visible.
Once the operation concludes the table will no longer be in a checked
out state and the read_consistency_interval, if any, will apply.
#### Returns
`Promise`\<`void`\>
#### Defined in
[table.ts:343](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L343)
___
### schema
▸ **schema**(): `Promise`\<`Schema`\<`any`\>\>
Get the schema of the table.
#### Returns
`Promise`\<`Schema`\<`any`\>\>
#### Defined in
[table.ts:95](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L95)
___
### update
▸ **update**(`updates`, `options?`): `Promise`\<`void`\>
Update existing records in the Table
An update operation can be used to adjust existing values. Use the
returned builder to specify which columns to update. The new value
can be a literal value (e.g. replacing nulls with some default value)
or an expression applied to the old value (e.g. incrementing a value)
An optional condition can be specified (e.g. "only update if the old
value is 0")
Note: if your condition is something like "some_id_column == 7" and
you are updating many rows (with different ids) then you will get
better performance with a single [`merge_insert`] call instead of
repeatedly calilng this method.
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `updates` | `Record`\<`string`, `string`\> \| `Map`\<`string`, `string`\> | the columns to update Keys in the map should specify the name of the column to update. Values in the map provide the new value of the column. These can be SQL literal strings (e.g. "7" or "'foo'") or they can be expressions based on the row being updated (e.g. "my_col + 1") |
| `options?` | `Partial`\<[`UpdateOptions`](../interfaces/UpdateOptions.md)\> | additional options to control the update behavior |
#### Returns
`Promise`\<`void`\>
#### Defined in
[table.ts:137](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L137)
___
### vectorSearch
▸ **vectorSearch**(`vector`): [`VectorQuery`](VectorQuery.md)
Search the table with a given query vector.
This is a convenience method for preparing a vector query and
is the same thing as calling `nearestTo` on the builder returned
by `query`.
#### Parameters
| Name | Type |
| :------ | :------ |
| `vector` | `unknown` |
#### Returns
[`VectorQuery`](VectorQuery.md)
**`See`**
[Query#nearestTo](Query.md#nearestto) for more details.
#### Defined in
[table.ts:249](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L249)
___
### version
▸ **version**(): `Promise`\<`number`\>
Retrieve the version of the table
LanceDb supports versioning. Every operation that modifies the table increases
version. As long as a version hasn't been deleted you can `[Self::checkout]` that
version to view the data at that point. In addition, you can `[Self::restore]` the
version to replace the current table with a previous version.
#### Returns
`Promise`\<`number`\>
#### Defined in
[table.ts:297](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L297)

View File

@@ -0,0 +1,45 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / VectorColumnOptions
# Class: VectorColumnOptions
## Table of contents
### Constructors
- [constructor](VectorColumnOptions.md#constructor)
### Properties
- [type](VectorColumnOptions.md#type)
## Constructors
### constructor
**new VectorColumnOptions**(`values?`): [`VectorColumnOptions`](VectorColumnOptions.md)
#### Parameters
| Name | Type |
| :------ | :------ |
| `values?` | `Partial`\<[`VectorColumnOptions`](VectorColumnOptions.md)\> |
#### Returns
[`VectorColumnOptions`](VectorColumnOptions.md)
#### Defined in
[arrow.ts:49](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/arrow.ts#L49)
## Properties
### type
**type**: `Float`\<`Floats`\>
Vector column type.
#### Defined in
[arrow.ts:47](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/arrow.ts#L47)

View File

@@ -0,0 +1,531 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / VectorQuery
# Class: VectorQuery
A builder used to construct a vector search
This builder can be reused to execute the query many times.
## Hierarchy
- [`QueryBase`](QueryBase.md)\<`NativeVectorQuery`, [`VectorQuery`](VectorQuery.md)\>
**`VectorQuery`**
## Table of contents
### Constructors
- [constructor](VectorQuery.md#constructor)
### Properties
- [inner](VectorQuery.md#inner)
### Methods
- [[asyncIterator]](VectorQuery.md#[asynciterator])
- [bypassVectorIndex](VectorQuery.md#bypassvectorindex)
- [column](VectorQuery.md#column)
- [distanceType](VectorQuery.md#distancetype)
- [execute](VectorQuery.md#execute)
- [limit](VectorQuery.md#limit)
- [nativeExecute](VectorQuery.md#nativeexecute)
- [nprobes](VectorQuery.md#nprobes)
- [postfilter](VectorQuery.md#postfilter)
- [refineFactor](VectorQuery.md#refinefactor)
- [select](VectorQuery.md#select)
- [toArray](VectorQuery.md#toarray)
- [toArrow](VectorQuery.md#toarrow)
- [where](VectorQuery.md#where)
## Constructors
### constructor
**new VectorQuery**(`inner`): [`VectorQuery`](VectorQuery.md)
#### Parameters
| Name | Type |
| :------ | :------ |
| `inner` | `VectorQuery` |
#### Returns
[`VectorQuery`](VectorQuery.md)
#### Overrides
[QueryBase](QueryBase.md).[constructor](QueryBase.md#constructor)
#### Defined in
[query.ts:189](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L189)
## Properties
### inner
`Protected` **inner**: `VectorQuery`
#### Inherited from
[QueryBase](QueryBase.md).[inner](QueryBase.md#inner)
#### Defined in
[query.ts:59](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L59)
## Methods
### [asyncIterator]
**[asyncIterator]**(): `AsyncIterator`\<`RecordBatch`\<`any`\>, `any`, `undefined`\>
#### Returns
`AsyncIterator`\<`RecordBatch`\<`any`\>, `any`, `undefined`\>
#### Inherited from
[QueryBase](QueryBase.md).[[asyncIterator]](QueryBase.md#[asynciterator])
#### Defined in
[query.ts:154](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L154)
___
### bypassVectorIndex
**bypassVectorIndex**(): [`VectorQuery`](VectorQuery.md)
If this is called then any vector index is skipped
An exhaustive (flat) search will be performed. The query vector will
be compared to every vector in the table. At high scales this can be
expensive. However, this is often still useful. For example, skipping
the vector index can give you ground truth results which you can use to
calculate your recall to select an appropriate value for nprobes.
#### Returns
[`VectorQuery`](VectorQuery.md)
#### Defined in
[query.ts:321](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L321)
___
### column
**column**(`column`): [`VectorQuery`](VectorQuery.md)
Set the vector column to query
This controls which column is compared to the query vector supplied in
the call to
#### Parameters
| Name | Type |
| :------ | :------ |
| `column` | `string` |
#### Returns
[`VectorQuery`](VectorQuery.md)
**`See`**
[Query#nearestTo](Query.md#nearestto)
This parameter must be specified if the table has more than one column
whose data type is a fixed-size-list of floats.
#### Defined in
[query.ts:229](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L229)
___
### distanceType
**distanceType**(`distanceType`): [`VectorQuery`](VectorQuery.md)
Set the distance metric to use
When performing a vector search we try and find the "nearest" vectors according
to some kind of distance metric. This parameter controls which distance metric to
use. See
#### Parameters
| Name | Type |
| :------ | :------ |
| `distanceType` | `string` |
#### Returns
[`VectorQuery`](VectorQuery.md)
**`See`**
[IvfPqOptions.distanceType](../interfaces/IvfPqOptions.md#distancetype) for more details on the different
distance metrics available.
Note: if there is a vector index then the distance type used MUST match the distance
type used to train the vector index. If this is not done then the results will be
invalid.
By default "l2" is used.
#### Defined in
[query.ts:248](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L248)
___
### execute
**execute**(): [`RecordBatchIterator`](RecordBatchIterator.md)
Execute the query and return the results as an
#### Returns
[`RecordBatchIterator`](RecordBatchIterator.md)
**`See`**
- AsyncIterator
of
- RecordBatch.
By default, LanceDb will use many threads to calculate results and, when
the result set is large, multiple batches will be processed at one time.
This readahead is limited however and backpressure will be applied if this
stream is consumed slowly (this constrains the maximum memory used by a
single query)
#### Inherited from
[QueryBase](QueryBase.md).[execute](QueryBase.md#execute)
#### Defined in
[query.ts:149](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L149)
___
### limit
**limit**(`limit`): [`VectorQuery`](VectorQuery.md)
Set the maximum number of results to return.
By default, a plain search has no limit. If this method is not
called then every valid row from the table will be returned.
#### Parameters
| Name | Type |
| :------ | :------ |
| `limit` | `number` |
#### Returns
[`VectorQuery`](VectorQuery.md)
#### Inherited from
[QueryBase](QueryBase.md).[limit](QueryBase.md#limit)
#### Defined in
[query.ts:129](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L129)
___
### nativeExecute
**nativeExecute**(): `Promise`\<`RecordBatchIterator`\>
#### Returns
`Promise`\<`RecordBatchIterator`\>
#### Inherited from
[QueryBase](QueryBase.md).[nativeExecute](QueryBase.md#nativeexecute)
#### Defined in
[query.ts:134](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L134)
___
### nprobes
**nprobes**(`nprobes`): [`VectorQuery`](VectorQuery.md)
Set the number of partitions to search (probe)
This argument is only used when the vector column has an IVF PQ index.
If there is no index then this value is ignored.
The IVF stage of IVF PQ divides the input into partitions (clusters) of
related values.
The partition whose centroids are closest to the query vector will be
exhaustiely searched to find matches. This parameter controls how many
partitions should be searched.
Increasing this value will increase the recall of your query but will
also increase the latency of your query. The default value is 20. This
default is good for many cases but the best value to use will depend on
your data and the recall that you need to achieve.
For best results we recommend tuning this parameter with a benchmark against
your actual data to find the smallest possible value that will still give
you the desired recall.
#### Parameters
| Name | Type |
| :------ | :------ |
| `nprobes` | `number` |
#### Returns
[`VectorQuery`](VectorQuery.md)
#### Defined in
[query.ts:215](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L215)
___
### postfilter
**postfilter**(): [`VectorQuery`](VectorQuery.md)
If this is called then filtering will happen after the vector search instead of
before.
By default filtering will be performed before the vector search. This is how
filtering is typically understood to work. This prefilter step does add some
additional latency. Creating a scalar index on the filter column(s) can
often improve this latency. However, sometimes a filter is too complex or scalar
indices cannot be applied to the column. In these cases postfiltering can be
used instead of prefiltering to improve latency.
Post filtering applies the filter to the results of the vector search. This means
we only run the filter on a much smaller set of data. However, it can cause the
query to return fewer than `limit` results (or even no results) if none of the nearest
results match the filter.
Post filtering happens during the "refine stage" (described in more detail in
#### Returns
[`VectorQuery`](VectorQuery.md)
**`See`**
[VectorQuery#refineFactor](VectorQuery.md#refinefactor)). This means that setting a higher refine
factor can often help restore some of the results lost by post filtering.
#### Defined in
[query.ts:307](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L307)
___
### refineFactor
**refineFactor**(`refineFactor`): [`VectorQuery`](VectorQuery.md)
A multiplier to control how many additional rows are taken during the refine step
This argument is only used when the vector column has an IVF PQ index.
If there is no index then this value is ignored.
An IVF PQ index stores compressed (quantized) values. They query vector is compared
against these values and, since they are compressed, the comparison is inaccurate.
This parameter can be used to refine the results. It can improve both improve recall
and correct the ordering of the nearest results.
To refine results LanceDb will first perform an ANN search to find the nearest
`limit` * `refine_factor` results. In other words, if `refine_factor` is 3 and
`limit` is the default (10) then the first 30 results will be selected. LanceDb
then fetches the full, uncompressed, values for these 30 results. The results are
then reordered by the true distance and only the nearest 10 are kept.
Note: there is a difference between calling this method with a value of 1 and never
calling this method at all. Calling this method with any value will have an impact
on your search latency. When you call this method with a `refine_factor` of 1 then
LanceDb still needs to fetch the full, uncompressed, values so that it can potentially
reorder the results.
Note: if this method is NOT called then the distances returned in the _distance column
will be approximate distances based on the comparison of the quantized query vector
and the quantized result vectors. This can be considerably different than the true
distance between the query vector and the actual uncompressed vector.
#### Parameters
| Name | Type |
| :------ | :------ |
| `refineFactor` | `number` |
#### Returns
[`VectorQuery`](VectorQuery.md)
#### Defined in
[query.ts:282](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L282)
___
### select
**select**(`columns`): [`VectorQuery`](VectorQuery.md)
Return only the specified columns.
By default a query will return all columns from the table. However, this can have
a very significant impact on latency. LanceDb stores data in a columnar fashion. This
means we can finely tune our I/O to select exactly the columns we need.
As a best practice you should always limit queries to the columns that you need. If you
pass in an array of column names then only those columns will be returned.
You can also use this method to create new "dynamic" columns based on your existing columns.
For example, you may not care about "a" or "b" but instead simply want "a + b". This is often
seen in the SELECT clause of an SQL query (e.g. `SELECT a+b FROM my_table`).
To create dynamic columns you can pass in a Map<string, string>. A column will be returned
for each entry in the map. The key provides the name of the column. The value is
an SQL string used to specify how the column is calculated.
For example, an SQL query might state `SELECT a + b AS combined, c`. The equivalent
input to this method would be:
#### Parameters
| Name | Type |
| :------ | :------ |
| `columns` | `string`[] \| `Record`\<`string`, `string`\> \| `Map`\<`string`, `string`\> |
#### Returns
[`VectorQuery`](VectorQuery.md)
**`Example`**
```ts
new Map([["combined", "a + b"], ["c", "c"]])
Columns will always be returned in the order given, even if that order is different than
the order used when adding the data.
Note that you can pass in a `Record<string, string>` (e.g. an object literal). This method
uses `Object.entries` which should preserve the insertion order of the object. However,
object insertion order is easy to get wrong and `Map` is more foolproof.
```
#### Inherited from
[QueryBase](QueryBase.md).[select](QueryBase.md#select)
#### Defined in
[query.ts:108](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L108)
___
### toArray
**toArray**(): `Promise`\<`unknown`[]\>
Collect the results as an array of objects.
#### Returns
`Promise`\<`unknown`[]\>
#### Inherited from
[QueryBase](QueryBase.md).[toArray](QueryBase.md#toarray)
#### Defined in
[query.ts:169](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L169)
___
### toArrow
**toArrow**(): `Promise`\<`Table`\<`any`\>\>
Collect the results as an Arrow
#### Returns
`Promise`\<`Table`\<`any`\>\>
**`See`**
ArrowTable.
#### Inherited from
[QueryBase](QueryBase.md).[toArrow](QueryBase.md#toarrow)
#### Defined in
[query.ts:160](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L160)
___
### where
**where**(`predicate`): [`VectorQuery`](VectorQuery.md)
A filter statement to be applied to this query.
The filter should be supplied as an SQL query string. For example:
#### Parameters
| Name | Type |
| :------ | :------ |
| `predicate` | `string` |
#### Returns
[`VectorQuery`](VectorQuery.md)
**`Example`**
```ts
x > 10
y > 0 AND y < 100
x > 5 OR y = 'test'
Filtering performance can often be improved by creating a scalar index
on the filter column(s).
```
#### Inherited from
[QueryBase](QueryBase.md).[where](QueryBase.md#where)
#### Defined in
[query.ts:73](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/query.ts#L73)

View File

@@ -0,0 +1,111 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / [embedding](../modules/embedding.md) / OpenAIEmbeddingFunction
# Class: OpenAIEmbeddingFunction
[embedding](../modules/embedding.md).OpenAIEmbeddingFunction
An embedding function that automatically creates vector representation for a given column.
## Implements
- [`EmbeddingFunction`](../interfaces/embedding.EmbeddingFunction.md)\<`string`\>
## Table of contents
### Constructors
- [constructor](embedding.OpenAIEmbeddingFunction.md#constructor)
### Properties
- [\_modelName](embedding.OpenAIEmbeddingFunction.md#_modelname)
- [\_openai](embedding.OpenAIEmbeddingFunction.md#_openai)
- [sourceColumn](embedding.OpenAIEmbeddingFunction.md#sourcecolumn)
### Methods
- [embed](embedding.OpenAIEmbeddingFunction.md#embed)
## Constructors
### constructor
**new OpenAIEmbeddingFunction**(`sourceColumn`, `openAIKey`, `modelName?`): [`OpenAIEmbeddingFunction`](embedding.OpenAIEmbeddingFunction.md)
#### Parameters
| Name | Type | Default value |
| :------ | :------ | :------ |
| `sourceColumn` | `string` | `undefined` |
| `openAIKey` | `string` | `undefined` |
| `modelName` | `string` | `"text-embedding-ada-002"` |
#### Returns
[`OpenAIEmbeddingFunction`](embedding.OpenAIEmbeddingFunction.md)
#### Defined in
[embedding/openai.ts:22](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/embedding/openai.ts#L22)
## Properties
### \_modelName
`Private` `Readonly` **\_modelName**: `string`
#### Defined in
[embedding/openai.ts:20](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/embedding/openai.ts#L20)
___
### \_openai
`Private` `Readonly` **\_openai**: `OpenAI`
#### Defined in
[embedding/openai.ts:19](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/embedding/openai.ts#L19)
___
### sourceColumn
**sourceColumn**: `string`
The name of the column that will be used as input for the Embedding Function.
#### Implementation of
[EmbeddingFunction](../interfaces/embedding.EmbeddingFunction.md).[sourceColumn](../interfaces/embedding.EmbeddingFunction.md#sourcecolumn)
#### Defined in
[embedding/openai.ts:61](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/embedding/openai.ts#L61)
## Methods
### embed
**embed**(`data`): `Promise`\<`number`[][]\>
Creates a vector representation for the given values.
#### Parameters
| Name | Type |
| :------ | :------ |
| `data` | `string`[] |
#### Returns
`Promise`\<`number`[][]\>
#### Implementation of
[EmbeddingFunction](../interfaces/embedding.EmbeddingFunction.md).[embed](../interfaces/embedding.EmbeddingFunction.md#embed)
#### Defined in
[embedding/openai.ts:48](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/embedding/openai.ts#L48)

View File

@@ -0,0 +1,43 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / WriteMode
# Enumeration: WriteMode
Write mode for writing a table.
## Table of contents
### Enumeration Members
- [Append](WriteMode.md#append)
- [Create](WriteMode.md#create)
- [Overwrite](WriteMode.md#overwrite)
## Enumeration Members
### Append
**Append** = ``"Append"``
#### Defined in
native.d.ts:69
___
### Create
• **Create** = ``"Create"``
#### Defined in
native.d.ts:68
___
### Overwrite
• **Overwrite** = ``"Overwrite"``
#### Defined in
native.d.ts:70

View File

@@ -0,0 +1,37 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / AddColumnsSql
# Interface: AddColumnsSql
A definition of a new column to add to a table.
## Table of contents
### Properties
- [name](AddColumnsSql.md#name)
- [valueSql](AddColumnsSql.md#valuesql)
## Properties
### name
**name**: `string`
The name of the new column.
#### Defined in
native.d.ts:43
___
### valueSql
**valueSql**: `string`
The values to populate the new column with, as a SQL expression.
The expression can reference other columns in the table.
#### Defined in
native.d.ts:48

View File

@@ -0,0 +1,25 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / AddDataOptions
# Interface: AddDataOptions
Options for adding data to a table.
## Table of contents
### Properties
- [mode](AddDataOptions.md#mode)
## Properties
### mode
**mode**: ``"append"`` \| ``"overwrite"``
If "append" (the default) then the new data will be added to the table
If "overwrite" then the new data will replace the existing data in the table.
#### Defined in
[table.ts:36](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L36)

View File

@@ -0,0 +1,56 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / ColumnAlteration
# Interface: ColumnAlteration
A definition of a column alteration. The alteration changes the column at
`path` to have the new name `name`, to be nullable if `nullable` is true,
and to have the data type `data_type`. At least one of `rename` or `nullable`
must be provided.
## Table of contents
### Properties
- [nullable](ColumnAlteration.md#nullable)
- [path](ColumnAlteration.md#path)
- [rename](ColumnAlteration.md#rename)
## Properties
### nullable
`Optional` **nullable**: `boolean`
Set the new nullability. Note that a nullable column cannot be made non-nullable.
#### Defined in
native.d.ts:38
___
### path
**path**: `string`
The path to the column to alter. This is a dot-separated path to the column.
If it is a top-level column then it is just the name of the column. If it is
a nested column then it is the path to the column, e.g. "a.b.c" for a column
`c` nested inside a column `b` nested inside a column `a`.
#### Defined in
native.d.ts:31
___
### rename
`Optional` **rename**: `string`
The new name of the column. If not provided then the name will not be changed.
This must be distinct from the names of all other columns in the table.
#### Defined in
native.d.ts:36

View File

@@ -0,0 +1,51 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / ConnectionOptions
# Interface: ConnectionOptions
## Table of contents
### Properties
- [apiKey](ConnectionOptions.md#apikey)
- [hostOverride](ConnectionOptions.md#hostoverride)
- [readConsistencyInterval](ConnectionOptions.md#readconsistencyinterval)
## Properties
### apiKey
`Optional` **apiKey**: `string`
#### Defined in
native.d.ts:51
___
### hostOverride
`Optional` **hostOverride**: `string`
#### Defined in
native.d.ts:52
___
### readConsistencyInterval
`Optional` **readConsistencyInterval**: `number`
(For LanceDB OSS only): The interval, in seconds, at which to check for
updates to the table from other processes. If None, then consistency is not
checked. For performance reasons, this is the default. For strong
consistency, set this to zero seconds. Then every read will check for
updates from other processes. As a compromise, you can set this to a
non-zero value for eventual consistency. If more than that interval
has passed since the last check, then the table will be checked for updates.
Note: this consistency only applies to read operations. Write operations are
always consistent.
#### Defined in
native.d.ts:64

View File

@@ -0,0 +1,41 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / CreateTableOptions
# Interface: CreateTableOptions
## Table of contents
### Properties
- [existOk](CreateTableOptions.md#existok)
- [mode](CreateTableOptions.md#mode)
## Properties
### existOk
**existOk**: `boolean`
If this is true and the table already exists and the mode is "create"
then no error will be raised.
#### Defined in
[connection.ts:35](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/connection.ts#L35)
___
### mode
**mode**: ``"overwrite"`` \| ``"create"``
The mode to use when creating the table.
If this is set to "create" and the table already exists then either
an error will be thrown or, if existOk is true, then nothing will
happen. Any provided data will be ignored.
If this is set to "overwrite" then any existing table will be replaced.
#### Defined in
[connection.ts:30](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/connection.ts#L30)

View File

@@ -0,0 +1,7 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / ExecutableQuery
# Interface: ExecutableQuery
An interface for a query that can be executed
Supported by all query types

View File

@@ -0,0 +1,39 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / IndexConfig
# Interface: IndexConfig
A description of an index currently configured on a column
## Table of contents
### Properties
- [columns](IndexConfig.md#columns)
- [indexType](IndexConfig.md#indextype)
## Properties
### columns
**columns**: `string`[]
The columns in the index
Currently this is always an array of size 1. In the future there may
be more columns to represent composite indices.
#### Defined in
native.d.ts:16
___
### indexType
**indexType**: `string`
The type of the index
#### Defined in
native.d.ts:9

View File

@@ -0,0 +1,48 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / IndexOptions
# Interface: IndexOptions
## Table of contents
### Properties
- [config](IndexOptions.md#config)
- [replace](IndexOptions.md#replace)
## Properties
### config
`Optional` **config**: [`Index`](../classes/Index.md)
Advanced index configuration
This option allows you to specify a specfic index to create and also
allows you to pass in configuration for training the index.
See the static methods on Index for details on the various index types.
If this is not supplied then column data type(s) and column statistics
will be used to determine the most useful kind of index to create.
#### Defined in
[indices.ts:192](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/indices.ts#L192)
___
### replace
`Optional` **replace**: `boolean`
Whether to replace the existing index
If this is false, and another index already exists on the same columns
and the same name, then an error will be returned. This is true even if
that index is out of date.
The default is true
#### Defined in
[indices.ts:202](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/indices.ts#L202)

View File

@@ -0,0 +1,144 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / IvfPqOptions
# Interface: IvfPqOptions
Options to create an `IVF_PQ` index
## Table of contents
### Properties
- [distanceType](IvfPqOptions.md#distancetype)
- [maxIterations](IvfPqOptions.md#maxiterations)
- [numPartitions](IvfPqOptions.md#numpartitions)
- [numSubVectors](IvfPqOptions.md#numsubvectors)
- [sampleRate](IvfPqOptions.md#samplerate)
## Properties
### distanceType
`Optional` **distanceType**: ``"l2"`` \| ``"cosine"`` \| ``"dot"``
Distance type to use to build the index.
Default value is "l2".
This is used when training the index to calculate the IVF partitions
(vectors are grouped in partitions with similar vectors according to this
distance type) and to calculate a subvector's code during quantization.
The distance type used to train an index MUST match the distance type used
to search the index. Failure to do so will yield inaccurate results.
The following distance types are available:
"l2" - Euclidean distance. This is a very common distance metric that
accounts for both magnitude and direction when determining the distance
between vectors. L2 distance has a range of [0, ∞).
"cosine" - Cosine distance. Cosine distance is a distance metric
calculated from the cosine similarity between two vectors. Cosine
similarity is a measure of similarity between two non-zero vectors of an
inner product space. It is defined to equal the cosine of the angle
between them. Unlike L2, the cosine distance is not affected by the
magnitude of the vectors. Cosine distance has a range of [0, 2].
Note: the cosine distance is undefined when one (or both) of the vectors
are all zeros (there is no direction). These vectors are invalid and may
never be returned from a vector search.
"dot" - Dot product. Dot distance is the dot product of two vectors. Dot
distance has a range of (-∞, ∞). If the vectors are normalized (i.e. their
L2 norm is 1), then dot distance is equivalent to the cosine distance.
#### Defined in
[indices.ts:83](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/indices.ts#L83)
___
### maxIterations
• `Optional` **maxIterations**: `number`
Max iteration to train IVF kmeans.
When training an IVF PQ index we use kmeans to calculate the partitions. This parameter
controls how many iterations of kmeans to run.
Increasing this might improve the quality of the index but in most cases these extra
iterations have diminishing returns.
The default value is 50.
#### Defined in
[indices.ts:96](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/indices.ts#L96)
___
### numPartitions
• `Optional` **numPartitions**: `number`
The number of IVF partitions to create.
This value should generally scale with the number of rows in the dataset.
By default the number of partitions is the square root of the number of
rows.
If this value is too large then the first part of the search (picking the
right partition) will be slow. If this value is too small then the second
part of the search (searching within a partition) will be slow.
#### Defined in
[indices.ts:32](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/indices.ts#L32)
___
### numSubVectors
• `Optional` **numSubVectors**: `number`
Number of sub-vectors of PQ.
This value controls how much the vector is compressed during the quantization step.
The more sub vectors there are the less the vector is compressed. The default is
the dimension of the vector divided by 16. If the dimension is not evenly divisible
by 16 we use the dimension divded by 8.
The above two cases are highly preferred. Having 8 or 16 values per subvector allows
us to use efficient SIMD instructions.
If the dimension is not visible by 8 then we use 1 subvector. This is not ideal and
will likely result in poor performance.
#### Defined in
[indices.ts:48](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/indices.ts#L48)
___
### sampleRate
• `Optional` **sampleRate**: `number`
The number of vectors, per partition, to sample when training IVF kmeans.
When an IVF PQ index is trained, we need to calculate partitions. These are groups
of vectors that are similar to each other. To do this we use an algorithm called kmeans.
Running kmeans on a large dataset can be slow. To speed this up we run kmeans on a
random sample of the data. This parameter controls the size of the sample. The total
number of vectors used to train the index is `sample_rate * num_partitions`.
Increasing this value might improve the quality of the index but in most cases the
default should be sufficient.
The default value is 256.
#### Defined in
[indices.ts:113](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/indices.ts#L113)

View File

@@ -0,0 +1,38 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / TableNamesOptions
# Interface: TableNamesOptions
## Table of contents
### Properties
- [limit](TableNamesOptions.md#limit)
- [startAfter](TableNamesOptions.md#startafter)
## Properties
### limit
`Optional` **limit**: `number`
An optional limit to the number of results to return.
#### Defined in
[connection.ts:48](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/connection.ts#L48)
___
### startAfter
`Optional` **startAfter**: `string`
If present, only return names that come lexicographically after the
supplied value.
This can be combined with limit to implement pagination by setting this to
the last table name from the previous page.
#### Defined in
[connection.ts:46](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/connection.ts#L46)

View File

@@ -0,0 +1,28 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / UpdateOptions
# Interface: UpdateOptions
## Table of contents
### Properties
- [where](UpdateOptions.md#where)
## Properties
### where
**where**: `string`
A filter that limits the scope of the update.
This should be an SQL filter expression.
Only rows that satisfy the expression will be updated.
For example, this could be 'my_col == 0' to replace all instances
of 0 in a column with some other default value.
#### Defined in
[table.ts:50](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/table.ts#L50)

View File

@@ -0,0 +1,21 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / WriteOptions
# Interface: WriteOptions
Write options when creating a Table.
## Table of contents
### Properties
- [mode](WriteOptions.md#mode)
## Properties
### mode
`Optional` **mode**: [`WriteMode`](../enums/WriteMode.md)
#### Defined in
native.d.ts:74

View File

@@ -0,0 +1,129 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / [embedding](../modules/embedding.md) / EmbeddingFunction
# Interface: EmbeddingFunction\<T\>
[embedding](../modules/embedding.md).EmbeddingFunction
An embedding function that automatically creates vector representation for a given column.
## Type parameters
| Name |
| :------ |
| `T` |
## Implemented by
- [`OpenAIEmbeddingFunction`](../classes/embedding.OpenAIEmbeddingFunction.md)
## Table of contents
### Properties
- [destColumn](embedding.EmbeddingFunction.md#destcolumn)
- [embed](embedding.EmbeddingFunction.md#embed)
- [embeddingDataType](embedding.EmbeddingFunction.md#embeddingdatatype)
- [embeddingDimension](embedding.EmbeddingFunction.md#embeddingdimension)
- [excludeSource](embedding.EmbeddingFunction.md#excludesource)
- [sourceColumn](embedding.EmbeddingFunction.md#sourcecolumn)
## Properties
### destColumn
`Optional` **destColumn**: `string`
The name of the column that will contain the embedding
By default this is "vector"
#### Defined in
[embedding/embedding_function.ts:49](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/embedding/embedding_function.ts#L49)
___
### embed
**embed**: (`data`: `T`[]) => `Promise`\<`number`[][]\>
Creates a vector representation for the given values.
#### Type declaration
▸ (`data`): `Promise`\<`number`[][]\>
Creates a vector representation for the given values.
##### Parameters
| Name | Type |
| :------ | :------ |
| `data` | `T`[] |
##### Returns
`Promise`\<`number`[][]\>
#### Defined in
[embedding/embedding_function.ts:62](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/embedding/embedding_function.ts#L62)
___
### embeddingDataType
`Optional` **embeddingDataType**: `Float`\<`Floats`\>
The data type of the embedding
The embedding function should return `number`. This will be converted into
an Arrow float array. By default this will be Float32 but this property can
be used to control the conversion.
#### Defined in
[embedding/embedding_function.ts:33](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/embedding/embedding_function.ts#L33)
___
### embeddingDimension
`Optional` **embeddingDimension**: `number`
The dimension of the embedding
This is optional, normally this can be determined by looking at the results of
`embed`. If this is not specified, and there is an attempt to apply the embedding
to an empty table, then that process will fail.
#### Defined in
[embedding/embedding_function.ts:42](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/embedding/embedding_function.ts#L42)
___
### excludeSource
`Optional` **excludeSource**: `boolean`
Should the source column be excluded from the resulting table
By default the source column is included. Set this to true and
only the embedding will be stored.
#### Defined in
[embedding/embedding_function.ts:57](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/embedding/embedding_function.ts#L57)
___
### sourceColumn
**sourceColumn**: `string`
The name of the column that will be used as input for the Embedding Function.
#### Defined in
[embedding/embedding_function.ts:24](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/embedding/embedding_function.ts#L24)

208
docs/src/js/modules.md Normal file
View File

@@ -0,0 +1,208 @@
[@lancedb/lancedb](README.md) / Exports
# @lancedb/lancedb
## Table of contents
### Namespaces
- [embedding](modules/embedding.md)
### Enumerations
- [WriteMode](enums/WriteMode.md)
### Classes
- [Connection](classes/Connection.md)
- [Index](classes/Index.md)
- [MakeArrowTableOptions](classes/MakeArrowTableOptions.md)
- [Query](classes/Query.md)
- [QueryBase](classes/QueryBase.md)
- [RecordBatchIterator](classes/RecordBatchIterator.md)
- [Table](classes/Table.md)
- [VectorColumnOptions](classes/VectorColumnOptions.md)
- [VectorQuery](classes/VectorQuery.md)
### Interfaces
- [AddColumnsSql](interfaces/AddColumnsSql.md)
- [AddDataOptions](interfaces/AddDataOptions.md)
- [ColumnAlteration](interfaces/ColumnAlteration.md)
- [ConnectionOptions](interfaces/ConnectionOptions.md)
- [CreateTableOptions](interfaces/CreateTableOptions.md)
- [ExecutableQuery](interfaces/ExecutableQuery.md)
- [IndexConfig](interfaces/IndexConfig.md)
- [IndexOptions](interfaces/IndexOptions.md)
- [IvfPqOptions](interfaces/IvfPqOptions.md)
- [TableNamesOptions](interfaces/TableNamesOptions.md)
- [UpdateOptions](interfaces/UpdateOptions.md)
- [WriteOptions](interfaces/WriteOptions.md)
### Type Aliases
- [Data](modules.md#data)
### Functions
- [connect](modules.md#connect)
- [makeArrowTable](modules.md#makearrowtable)
## Type Aliases
### Data
Ƭ **Data**: `Record`\<`string`, `unknown`\>[] \| `ArrowTable`
Data type accepted by NodeJS SDK
#### Defined in
[arrow.ts:40](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/arrow.ts#L40)
## Functions
### connect
**connect**(`uri`, `opts?`): `Promise`\<[`Connection`](classes/Connection.md)\>
Connect to a LanceDB instance at the given URI.
Accpeted formats:
- `/path/to/database` - local database
- `s3://bucket/path/to/database` or `gs://bucket/path/to/database` - database on cloud storage
- `db://host:port` - remote database (LanceDB cloud)
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `uri` | `string` | The uri of the database. If the database uri starts with `db://` then it connects to a remote database. |
| `opts?` | `Partial`\<[`ConnectionOptions`](interfaces/ConnectionOptions.md)\> | - |
#### Returns
`Promise`\<[`Connection`](classes/Connection.md)\>
**`See`**
[ConnectionOptions](interfaces/ConnectionOptions.md) for more details on the URI format.
#### Defined in
[index.ts:62](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/index.ts#L62)
___
### makeArrowTable
**makeArrowTable**(`data`, `options?`): `ArrowTable`
An enhanced version of the makeTable function from Apache Arrow
that supports nested fields and embeddings columns.
(typically you do not need to call this function. It will be called automatically
when creating a table or adding data to it)
This function converts an array of Record<String, any> (row-major JS objects)
to an Arrow Table (a columnar structure)
Note that it currently does not support nulls.
If a schema is provided then it will be used to determine the resulting array
types. Fields will also be reordered to fit the order defined by the schema.
If a schema is not provided then the types will be inferred and the field order
will be controlled by the order of properties in the first record. If a type
is inferred it will always be nullable.
If the input is empty then a schema must be provided to create an empty table.
When a schema is not specified then data types will be inferred. The inference
rules are as follows:
- boolean => Bool
- number => Float64
- String => Utf8
- Buffer => Binary
- Record<String, any> => Struct
- Array<any> => List
#### Parameters
| Name | Type |
| :------ | :------ |
| `data` | `Record`\<`string`, `unknown`\>[] |
| `options?` | `Partial`\<[`MakeArrowTableOptions`](classes/MakeArrowTableOptions.md)\> |
#### Returns
`ArrowTable`
**`Example`**
import { fromTableToBuffer, makeArrowTable } from "../arrow";
import { Field, FixedSizeList, Float16, Float32, Int32, Schema } from "apache-arrow";
const schema = new Schema([
new Field("a", new Int32()),
new Field("b", new Float32()),
new Field("c", new FixedSizeList(3, new Field("item", new Float16()))),
]);
const table = makeArrowTable([
{ a: 1, b: 2, c: [1, 2, 3] },
{ a: 4, b: 5, c: [4, 5, 6] },
{ a: 7, b: 8, c: [7, 8, 9] },
], { schema });
```
By default it assumes that the column named `vector` is a vector column
and it will be converted into a fixed size list array of type float32.
The `vectorColumns` option can be used to support other vector column
names and data types.
```ts
const schema = new Schema([
new Field("a", new Float64()),
new Field("b", new Float64()),
new Field(
"vector",
new FixedSizeList(3, new Field("item", new Float32()))
),
]);
const table = makeArrowTable([
{ a: 1, b: 2, vector: [1, 2, 3] },
{ a: 4, b: 5, vector: [4, 5, 6] },
{ a: 7, b: 8, vector: [7, 8, 9] },
]);
assert.deepEqual(table.schema, schema);
```
You can specify the vector column types and names using the options as well
```typescript
const schema = new Schema([
new Field('a', new Float64()),
new Field('b', new Float64()),
new Field('vec1', new FixedSizeList(3, new Field('item', new Float16()))),
new Field('vec2', new FixedSizeList(3, new Field('item', new Float16())))
]);
const table = makeArrowTable([
{ a: 1, b: 2, vec1: [1, 2, 3], vec2: [2, 4, 6] },
{ a: 4, b: 5, vec1: [4, 5, 6], vec2: [8, 10, 12] },
{ a: 7, b: 8, vec1: [7, 8, 9], vec2: [14, 16, 18] }
], {
vectorColumns: {
vec1: { type: new Float16() },
vec2: { type: new Float16() }
}
}
assert.deepEqual(table.schema, schema)
```
#### Defined in
[arrow.ts:197](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/arrow.ts#L197)

View File

@@ -0,0 +1,45 @@
[@lancedb/lancedb](../README.md) / [Exports](../modules.md) / embedding
# Namespace: embedding
## Table of contents
### Classes
- [OpenAIEmbeddingFunction](../classes/embedding.OpenAIEmbeddingFunction.md)
### Interfaces
- [EmbeddingFunction](../interfaces/embedding.EmbeddingFunction.md)
### Functions
- [isEmbeddingFunction](embedding.md#isembeddingfunction)
## Functions
### isEmbeddingFunction
**isEmbeddingFunction**\<`T`\>(`value`): value is EmbeddingFunction\<T\>
Test if the input seems to be an embedding function
#### Type parameters
| Name |
| :------ |
| `T` |
#### Parameters
| Name | Type |
| :------ | :------ |
| `value` | `unknown` |
#### Returns
value is EmbeddingFunction\<T\>
#### Defined in
[embedding/embedding_function.ts:66](https://github.com/lancedb/lancedb/blob/9d178c7/nodejs/lancedb/embedding/embedding_function.ts#L66)

View File

@@ -66,6 +66,7 @@ Currently, Lance supports a growing list of SQL expressions.
- `LIKE`, `NOT LIKE`
- `CAST`
- `regexp_match(column, pattern)`
- [DataFusion Functions](https://arrow.apache.org/datafusion/user-guide/sql/scalar_functions.html)
For example, the following filter string is acceptable:

50
node/package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "vectordb",
"version": "0.4.14",
"version": "0.4.16",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "vectordb",
"version": "0.4.14",
"version": "0.4.16",
"cpu": [
"x64",
"arm64"
@@ -52,11 +52,11 @@
"uuid": "^9.0.0"
},
"optionalDependencies": {
"@lancedb/vectordb-darwin-arm64": "0.4.14",
"@lancedb/vectordb-darwin-x64": "0.4.14",
"@lancedb/vectordb-linux-arm64-gnu": "0.4.14",
"@lancedb/vectordb-linux-x64-gnu": "0.4.14",
"@lancedb/vectordb-win32-x64-msvc": "0.4.14"
"@lancedb/vectordb-darwin-arm64": "0.4.16",
"@lancedb/vectordb-darwin-x64": "0.4.16",
"@lancedb/vectordb-linux-arm64-gnu": "0.4.16",
"@lancedb/vectordb-linux-x64-gnu": "0.4.16",
"@lancedb/vectordb-win32-x64-msvc": "0.4.16"
},
"peerDependencies": {
"@apache-arrow/ts": "^14.0.2",
@@ -333,42 +333,6 @@
"@jridgewell/sourcemap-codec": "^1.4.10"
}
},
"node_modules/@lancedb/vectordb-darwin-arm64": {
"version": "0.4.14",
"resolved": "https://registry.npmjs.org/@lancedb/vectordb-darwin-arm64/-/vectordb-darwin-arm64-0.4.14.tgz",
"integrity": "sha512-fw6mf6UhFf4j2kKdFcw0P+SOiIqmRbt+YQSgDbF4BFU3OUSW0XyfETIj9cUMQbSwPFsofhlGp5BRpCd7W9noew==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@lancedb/vectordb-linux-arm64-gnu": {
"version": "0.4.14",
"resolved": "https://registry.npmjs.org/@lancedb/vectordb-linux-arm64-gnu/-/vectordb-linux-arm64-gnu-0.4.14.tgz",
"integrity": "sha512-1+LFI8vU+f/lnGy1s3XCySuV4oj3ZUW03xtmedGBW8nv/Y/jWXP0OYJCRI72eu+dLIdu0tCPsEiu8Hl+o02t9g==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"linux"
]
},
"node_modules/@lancedb/vectordb-win32-x64-msvc": {
"version": "0.4.14",
"resolved": "https://registry.npmjs.org/@lancedb/vectordb-win32-x64-msvc/-/vectordb-win32-x64-msvc-0.4.14.tgz",
"integrity": "sha512-fpuNMZ4aHSpZC3ztp5a0Wh18N6DpCx5EPWhS7bGA5XulGc0l+sZAJHfHwalx76ys//0Ns1z7cuKJhZpSa4SrdQ==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"win32"
]
},
"node_modules/@neon-rs/cli": {
"version": "0.0.160",
"resolved": "https://registry.npmjs.org/@neon-rs/cli/-/cli-0.0.160.tgz",

View File

@@ -1,6 +1,6 @@
{
"name": "vectordb",
"version": "0.4.14",
"version": "0.4.16",
"description": " Serverless, low-latency vector database for AI applications",
"main": "dist/index.js",
"types": "dist/index.d.ts",
@@ -88,10 +88,10 @@
}
},
"optionalDependencies": {
"@lancedb/vectordb-darwin-arm64": "0.4.14",
"@lancedb/vectordb-darwin-x64": "0.4.14",
"@lancedb/vectordb-linux-arm64-gnu": "0.4.14",
"@lancedb/vectordb-linux-x64-gnu": "0.4.14",
"@lancedb/vectordb-win32-x64-msvc": "0.4.14"
"@lancedb/vectordb-darwin-arm64": "0.4.16",
"@lancedb/vectordb-darwin-x64": "0.4.16",
"@lancedb/vectordb-linux-arm64-gnu": "0.4.16",
"@lancedb/vectordb-linux-x64-gnu": "0.4.16",
"@lancedb/vectordb-win32-x64-msvc": "0.4.16"
}
}

View File

@@ -38,7 +38,7 @@ export class Query<T = number[]> {
constructor (query?: T, tbl?: any, embeddings?: EmbeddingFunction<T>) {
this._tbl = tbl
this._query = query
this._limit = undefined
this._limit = 10
this._nprobes = 20
this._refineFactor = undefined
this._select = undefined
@@ -50,6 +50,7 @@ export class Query<T = number[]> {
/***
* Sets the number of results that will be returned
* default value is 10
* @param value number of results
*/
limit (value: number): Query<T> {

View File

@@ -103,6 +103,18 @@ function toLanceRes (res: AxiosResponse): RemoteResponse {
}
}
async function decodeErrorData(
res: RemoteResponse,
responseType?: ResponseType
): Promise<string> {
const errorData = await res.body()
if (responseType === 'arraybuffer') {
return new TextDecoder().decode(errorData)
} else {
return errorData
}
}
export class HttpLancedbClient {
private readonly _url: string
private readonly _apiKey: () => string
@@ -180,7 +192,7 @@ export class HttpLancedbClient {
}
if (response.status !== 200) {
const errorData = new TextDecoder().decode(await response.body())
const errorData = await decodeErrorData(response)
throw new Error(
`Server Error, status: ${response.status}, ` +
`message: ${response.statusText}: ${errorData}`
@@ -226,7 +238,7 @@ export class HttpLancedbClient {
}
if (response.status !== 200) {
const errorData = new TextDecoder().decode(await response.body())
const errorData = await decodeErrorData(response, responseType)
throw new Error(
`Server Error, status: ${response.status}, ` +
`message: ${response.statusText}: ${errorData}`

View File

@@ -156,7 +156,7 @@ export class RemoteConnection implements Connection {
}
const res = await this._client.post(
`/v1/table/${tableName}/create/`,
`/v1/table/${encodeURIComponent(tableName)}/create/`,
buffer,
undefined,
'application/vnd.apache.arrow.stream'
@@ -177,7 +177,7 @@ export class RemoteConnection implements Connection {
}
async dropTable (name: string): Promise<void> {
await this._client.post(`/v1/table/${name}/drop/`)
await this._client.post(`/v1/table/${encodeURIComponent(name)}/drop/`)
}
withMiddleware (middleware: HttpMiddleware): Connection {
@@ -268,7 +268,7 @@ export class RemoteTable<T = number[]> implements Table<T> {
get schema (): Promise<any> {
return this._client
.post(`/v1/table/${this._name}/describe/`)
.post(`/v1/table/${encodeURIComponent(this._name)}/describe/`)
.then(async (res) => {
if (res.status !== 200) {
throw new Error(
@@ -282,7 +282,7 @@ export class RemoteTable<T = number[]> implements Table<T> {
}
search (query: T): Query<T> {
return new RemoteQuery(query, this._client, this._name) //, this._embeddings_new)
return new RemoteQuery(query, this._client, encodeURIComponent(this._name)) //, this._embeddings_new)
}
filter (where: string): Query<T> {
@@ -324,7 +324,7 @@ export class RemoteTable<T = number[]> implements Table<T> {
const buffer = await fromTableToStreamBuffer(tbl, this._embeddings)
const res = await this._client.post(
`/v1/table/${this._name}/merge_insert/`,
`/v1/table/${encodeURIComponent(this._name)}/merge_insert/`,
buffer,
queryParams,
'application/vnd.apache.arrow.stream'
@@ -348,7 +348,7 @@ export class RemoteTable<T = number[]> implements Table<T> {
const buffer = await fromTableToStreamBuffer(tbl, this._embeddings)
const res = await this._client.post(
`/v1/table/${this._name}/insert/`,
`/v1/table/${encodeURIComponent(this._name)}/insert/`,
buffer,
{
mode: 'append'
@@ -374,7 +374,7 @@ export class RemoteTable<T = number[]> implements Table<T> {
}
const buffer = await fromTableToStreamBuffer(tbl, this._embeddings)
const res = await this._client.post(
`/v1/table/${this._name}/insert/`,
`/v1/table/${encodeURIComponent(this._name)}/insert/`,
buffer,
{
mode: 'overwrite'
@@ -421,7 +421,7 @@ export class RemoteTable<T = number[]> implements Table<T> {
index_cache_size: indexCacheSize
}
const res = await this._client.post(
`/v1/table/${this._name}/create_index/`,
`/v1/table/${encodeURIComponent(this._name)}/create_index/`,
data
)
if (res.status !== 200) {
@@ -442,7 +442,7 @@ export class RemoteTable<T = number[]> implements Table<T> {
replace: true
}
const res = await this._client.post(
`/v1/table/${this._name}/create_scalar_index/`,
`/v1/table/${encodeURIComponent(this._name)}/create_scalar_index/`,
data
)
if (res.status !== 200) {
@@ -454,13 +454,15 @@ export class RemoteTable<T = number[]> implements Table<T> {
}
}
async countRows (): Promise<number> {
const result = await this._client.post(`/v1/table/${this._name}/describe/`)
return (await result.body())?.stats?.num_rows
async countRows (filter?: string): Promise<number> {
const result = await this._client.post(`/v1/table/${encodeURIComponent(this._name)}/count_rows/`, {
predicate: filter
})
return (await result.body())
}
async delete (filter: string): Promise<void> {
await this._client.post(`/v1/table/${this._name}/delete/`, {
await this._client.post(`/v1/table/${encodeURIComponent(this._name)}/delete/`, {
predicate: filter
})
}
@@ -479,7 +481,7 @@ export class RemoteTable<T = number[]> implements Table<T> {
updates[key] = toSQL(value)
}
}
await this._client.post(`/v1/table/${this._name}/update/`, {
await this._client.post(`/v1/table/${encodeURIComponent(this._name)}/update/`, {
predicate: filter,
updates: Object.entries(updates).map(([key, value]) => [key, value])
})
@@ -487,7 +489,7 @@ export class RemoteTable<T = number[]> implements Table<T> {
async listIndices (): Promise<VectorIndex[]> {
const results = await this._client.post(
`/v1/table/${this._name}/index/list/`
`/v1/table/${encodeURIComponent(this._name)}/index/list/`
)
return (await results.body()).indexes?.map((index: any) => ({
columns: index.columns,
@@ -498,7 +500,7 @@ export class RemoteTable<T = number[]> implements Table<T> {
async indexStats (indexUuid: string): Promise<IndexStats> {
const results = await this._client.post(
`/v1/table/${this._name}/index/${indexUuid}/stats/`
`/v1/table/${encodeURIComponent(this._name)}/index/${indexUuid}/stats/`
)
const body = await results.body()
return {

View File

@@ -124,9 +124,9 @@ describe('LanceDB client', function () {
const uri = await createTestDB(2, 100)
const con = await lancedb.connect(uri)
const table = (await con.openTable('vectors')) as LocalTable
let results = await table.filter('id % 2 = 0').execute()
let results = await table.filter('id % 2 = 0').limit(100).execute()
assertResults(results)
results = await table.where('id % 2 = 0').execute()
results = await table.where('id % 2 = 0').limit(100).execute()
assertResults(results)
// Should reject a bad filter

View File

@@ -1,12 +1,44 @@
# (New) LanceDB NodeJS SDK
# LanceDB JavaScript SDK
It will replace the NodeJS SDK when it is ready.
A JavaScript library for [LanceDB](https://github.com/lancedb/lancedb).
## Installation
```bash
npm install @lancedb/lancedb
```
This will download the appropriate native library for your platform. We currently
support:
- Linux (x86_64 and aarch64)
- MacOS (Intel and ARM/M1/M2)
- Windows (x86_64 only)
We do not yet support musl-based Linux (such as Alpine Linux) or aarch64 Windows.
## Usage
### Basic Example
```javascript
import * as lancedb from "@lancedb/lancedb";
const db = await lancedb.connect("data/sample-lancedb");
const table = await db.createTable("my_table", [
{ id: 1, vector: [0.1, 1.0], item: "foo", price: 10.0 },
{ id: 2, vector: [3.9, 0.5], item: "bar", price: 20.0 },
]);
const results = await table.vectorSearch([0.1, 0.3]).limit(20).toArray();
console.log(results);
```
The [quickstart](../basic.md) contains a more complete example.
## Development
```sh
npm run build
npm t
npm run test
```
### Running lint / format

View File

@@ -1,6 +1,6 @@
{
"name": "@lancedb/lancedb-darwin-arm64",
"version": "0.4.3",
"version": "0.4.16",
"os": [
"darwin"
],

View File

@@ -1,6 +1,6 @@
{
"name": "@lancedb/lancedb-darwin-x64",
"version": "0.4.3",
"version": "0.4.16",
"os": [
"darwin"
],

View File

@@ -1,6 +1,6 @@
{
"name": "@lancedb/lancedb-linux-arm64-gnu",
"version": "0.4.3",
"version": "0.4.16",
"os": [
"linux"
],

View File

@@ -1,6 +1,6 @@
{
"name": "@lancedb/lancedb-linux-x64-gnu",
"version": "0.4.3",
"version": "0.4.16",
"os": [
"linux"
],

View File

@@ -1,6 +1,6 @@
{
"name": "@lancedb/lancedb-win32-x64-msvc",
"version": "0.4.3",
"version": "0.4.14",
"os": [
"win32"
],

View File

@@ -1,12 +1,12 @@
{
"name": "@lancedb/lancedb",
"version": "0.4.3",
"version": "0.4.15",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@lancedb/lancedb",
"version": "0.4.3",
"version": "0.4.15",
"cpu": [
"x64",
"arm64"
@@ -45,11 +45,11 @@
"node": ">= 18"
},
"optionalDependencies": {
"@lancedb/lancedb-darwin-arm64": "0.4.3",
"@lancedb/lancedb-darwin-x64": "0.4.3",
"@lancedb/lancedb-linux-arm64-gnu": "0.4.3",
"@lancedb/lancedb-linux-x64-gnu": "0.4.3",
"@lancedb/lancedb-win32-x64-msvc": "0.4.3"
"@lancedb/lancedb-darwin-arm64": "0.4.15",
"@lancedb/lancedb-darwin-x64": "0.4.15",
"@lancedb/lancedb-linux-arm64-gnu": "0.4.15",
"@lancedb/lancedb-linux-x64-gnu": "0.4.15",
"@lancedb/lancedb-win32-x64-msvc": "0.4.15"
}
},
"node_modules/@75lb/deep-merge": {
@@ -1320,9 +1320,9 @@
}
},
"node_modules/@lancedb/lancedb-darwin-arm64": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/@lancedb/lancedb-darwin-arm64/-/lancedb-darwin-arm64-0.4.3.tgz",
"integrity": "sha512-+kxuWUK9vtLBbjFMkIKeQ32kxK2tgvZRCQaU1I3RJ3+dLmDIVeIj+KJSlMelkKa2QC4JoyHQi9Ty1PdS2DojmQ==",
"version": "0.4.15",
"resolved": "https://registry.npmjs.org/@lancedb/lancedb-darwin-arm64/-/lancedb-darwin-arm64-0.4.15.tgz",
"integrity": "sha512-bBImUd2mMUrYzQtyvGSPA3AKxXF5Q4hAbWtv1PD4R8LvOmR6KGlWPiVp8ywkkHeue7DN+C/lFACUVw6iW06dTQ==",
"cpu": [
"arm64"
],
@@ -1335,9 +1335,9 @@
}
},
"node_modules/@lancedb/lancedb-darwin-x64": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/@lancedb/lancedb-darwin-x64/-/lancedb-darwin-x64-0.4.3.tgz",
"integrity": "sha512-JYvsSYxTOa/7OMojulz9h0gN2FwvypG/6l6dpLkViZ5LDvRcfVyDTzOLcOJkFn+db4TKeBOVyMWnnpDKaB+jLA==",
"version": "0.4.15",
"resolved": "https://registry.npmjs.org/@lancedb/lancedb-darwin-x64/-/lancedb-darwin-x64-0.4.15.tgz",
"integrity": "sha512-V1af4K+U21oL9zgbUCDfwPU9n0eOfdeb3bBCuxNRPz1GCVu8BOhKD07v9AiFolC4zoSkR8mXYvV2w3cxVN/Tlw==",
"cpu": [
"x64"
],
@@ -1349,10 +1349,25 @@
"node": ">= 18"
}
},
"node_modules/@lancedb/lancedb-linux-arm64-gnu": {
"version": "0.4.15",
"resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-arm64-gnu/-/lancedb-linux-arm64-gnu-0.4.15.tgz",
"integrity": "sha512-rwo3xC0h8udlRtrlqk44n7h4Jc7wu5YuVB/pvcRU0UZGp0xKKwOdfO4mLflGmVlboKzqcjZFObOB2gcv7dRwLg==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 18"
}
},
"node_modules/@lancedb/lancedb-linux-x64-gnu": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-x64-gnu/-/lancedb-linux-x64-gnu-0.4.3.tgz",
"integrity": "sha512-jDANHchWNGmu1wfAyBk0apoFlLxtJ7FRc31pAQ3tKE4fwlgG7bUcaTX6s5C3vMNWXnyQLQtVuWZNXi2nVj879g==",
"version": "0.4.15",
"resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-x64-gnu/-/lancedb-linux-x64-gnu-0.4.15.tgz",
"integrity": "sha512-uOhhX0gfx8SSzekH43Od4RsR3/1T8BRq3+aijUKaDd9tllecwxv3B1ucPH9nNMaYzMwD/Y1+tJETOddgrjsD5g==",
"cpu": [
"x64"
],
@@ -1365,9 +1380,9 @@
}
},
"node_modules/@lancedb/lancedb-win32-x64-msvc": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/@lancedb/lancedb-win32-x64-msvc/-/lancedb-win32-x64-msvc-0.4.3.tgz",
"integrity": "sha512-qADveXyv4YzllIbOOq8soqFfL7p7I35uhrD3PcTvj4Qxuo6q7pgQWQz2Mt3kGBpyPkH2yE4wWAGJhayShLRbiQ==",
"version": "0.4.15",
"resolved": "https://registry.npmjs.org/@lancedb/lancedb-win32-x64-msvc/-/lancedb-win32-x64-msvc-0.4.15.tgz",
"integrity": "sha512-u+vaAWZMLrA9i99Xrf0P5bTRIc/1PhUcxP4Q7E8rlKhzodRQLYeUlFflCDBXZOiUcNMMkvnR3YN+YTpHWhXlgA==",
"cpu": [
"x64"
],

View File

@@ -1,6 +1,6 @@
{
"name": "@lancedb/lancedb",
"version": "0.4.3",
"version": "0.4.16",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"napi": {
@@ -59,7 +59,7 @@
"build": "npm run build:debug && tsc -b && shx cp lancedb/native.d.ts dist/native.d.ts",
"build-release": "npm run build:release && tsc -b && shx cp lancedb/native.d.ts dist/native.d.ts",
"chkformat": "prettier . --check",
"docs": "typedoc --plugin typedoc-plugin-markdown lancedb/index.ts",
"docs": "typedoc --plugin typedoc-plugin-markdown --out ../docs/src/js lancedb/index.ts",
"lint": "eslint lancedb && eslint __test__",
"prepublishOnly": "napi prepublish -t npm",
"test": "npm run build && jest --verbose",
@@ -67,11 +67,11 @@
"version": "napi version"
},
"optionalDependencies": {
"@lancedb/lancedb-darwin-arm64": "0.4.3",
"@lancedb/lancedb-darwin-x64": "0.4.3",
"@lancedb/lancedb-linux-arm64-gnu": "0.4.3",
"@lancedb/lancedb-linux-x64-gnu": "0.4.3",
"@lancedb/lancedb-win32-x64-msvc": "0.4.3"
"@lancedb/lancedb-darwin-arm64": "0.4.16",
"@lancedb/lancedb-darwin-x64": "0.4.16",
"@lancedb/lancedb-linux-arm64-gnu": "0.4.16",
"@lancedb/lancedb-linux-x64-gnu": "0.4.16",
"@lancedb/lancedb-win32-x64-msvc": "0.4.16"
},
"dependencies": {
"openai": "^4.29.2",

10
nodejs/typedoc.json Normal file
View File

@@ -0,0 +1,10 @@
{
"intentionallyNotExported": [
"lancedb/native.d.ts:Connection",
"lancedb/native.d.ts:Index",
"lancedb/native.d.ts:Query",
"lancedb/native.d.ts:VectorQuery",
"lancedb/native.d.ts:RecordBatchIterator",
"lancedb/native.d.ts:Table"
]
}

View File

@@ -1,5 +1,5 @@
[bumpversion]
current_version = 0.6.5
current_version = 0.6.7
commit = True
message = [python] Bump version: {current_version} → {new_version}
tag = True

View File

@@ -31,3 +31,6 @@ pyo3-build-config = { version = "0.20.3", features = [
"extension-module",
"abi3-py38",
] }
[features]
fp16kernels = ["lancedb/fp16kernels"]

View File

@@ -1,9 +1,9 @@
[project]
name = "lancedb"
version = "0.6.5"
version = "0.6.7"
dependencies = [
"deprecation",
"pylance==0.10.5",
"pylance==0.10.9",
"ratelimiter~=1.0",
"retry>=0.9.2",
"tqdm>=4.27.0",
@@ -41,6 +41,7 @@ classifiers = [
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Scientific/Engineering",
]

View File

@@ -499,11 +499,11 @@ class RemoteTable(Table):
)
def count_rows(self, filter: Optional[str] = None) -> int:
# payload = {"filter": filter}
# self._conn._client.post(f"/v1/table/{self._name}/count_rows/", data=payload)
return NotImplementedError(
"count_rows() is not yet supported on the LanceDB cloud"
payload = {"predicate": filter}
resp = self._conn._client.post(
f"/v1/table/{self._name}/count_rows/", data=payload
)
return resp
def add_columns(self, transforms: Dict[str, str]):
raise NotImplementedError(

View File

@@ -80,7 +80,7 @@ impl Table {
})
}
pub fn delete<'a>(self_: PyRef<'a, Self>, condition: String) -> PyResult<&'a PyAny> {
pub fn delete(self_: PyRef<'_, Self>, condition: String) -> PyResult<&PyAny> {
let inner = self_.inner_ref()?.clone();
future_into_py(self_.py(), async move {
inner.delete(&condition).await.infer_error()

View File

@@ -51,7 +51,7 @@ pub fn parse_distance_type(distance_type: impl AsRef<str>) -> PyResult<DistanceT
}
#[pyfunction]
pub(crate) fn validate_table_name(table_name: &str) -> PyResult<()> {
pub fn validate_table_name(table_name: &str) -> PyResult<()> {
lancedb::utils::validate_table_name(table_name)
.map_err(|e| PyValueError::new_err(e.to_string()))
}

View File

@@ -1,6 +1,6 @@
[package]
name = "lancedb-node"
version = "0.4.14"
version = "0.4.16"
description = "Serverless, low-latency vector database for AI applications"
license.workspace = true
edition.workspace = true

View File

@@ -1,6 +1,6 @@
[package]
name = "lancedb"
version = "0.4.14"
version = "0.4.16"
edition.workspace = true
description = "LanceDB: A serverless, low-latency vector database for AI applications"
license.workspace = true
@@ -50,3 +50,4 @@ walkdir = "2"
[features]
default = ["remote"]
remote = ["dep:reqwest"]
fp16kernels = ["lance-linalg/fp16kernels"]

View File

@@ -101,8 +101,8 @@ impl TableNamesBuilder {
///
/// This can be combined with limit to implement pagination by setting this to
/// the last table name from the previous page.
pub fn start_after(mut self, start_after: String) -> Self {
self.start_after = Some(start_after);
pub fn start_after(mut self, start_after: impl Into<String>) -> Self {
self.start_after = Some(start_after.into());
self
}
@@ -862,7 +862,7 @@ mod tests {
let tables = db
.table_names()
.start_after(names[30].clone())
.start_after(&names[30])
.execute()
.await
.unwrap();
@@ -871,7 +871,7 @@ mod tests {
let tables = db
.table_names()
.start_after(names[30].clone())
.start_after(&names[30])
.limit(7)
.execute()
.await

View File

@@ -1304,14 +1304,7 @@ impl TableInternal for NativeTable {
}
async fn count_rows(&self, filter: Option<String>) -> Result<usize> {
let dataset = self.dataset.get().await?;
if let Some(filter) = filter {
let mut scanner = dataset.scan();
scanner.filter(&filter)?;
Ok(scanner.count_rows().await? as usize)
} else {
Ok(dataset.count_rows().await?)
}
Ok(self.dataset.get().await?.count_rows(filter).await?)
}
async fn add(