Compare commits

...

23 Commits

Author SHA1 Message Date
Will Jones
f2f0739f8c docs: enhance Update user guide 2023-12-20 15:13:59 -08:00
Will Jones
88ce1e574a docs: update node API reference 2023-12-20 15:13:37 -08:00
Chang She
7856a94d2c feat(python): support nested reference for fts (#723)
https://github.com/lancedb/lance/issues/1739

Support nested field reference in full text search

---------

Co-authored-by: Will Jones <willjones127@gmail.com>
2023-12-20 12:28:53 -08:00
Chang She
371d2f979e feat(python): add option to flatten output in to_pandas (#722)
Closes https://github.com/lancedb/lance/issues/1738

We add a `flatten` parameter to the signature of `to_pandas`. By default
this is None and does nothing.
If set to True or -1, then LanceDB will flatten structs before
converting to a pandas dataframe. All nested structs are also flattened.
If set to any positive integer, then LanceDB will flatten structs up to
the specified level of nesting.

---------

Co-authored-by: Weston Pace <weston.pace@gmail.com>
2023-12-20 12:23:07 -08:00
Aidan
fff8e399a3 feat: Node create index API (#720) 2023-12-20 15:22:35 -05:00
Aidan
73e4015797 feat: Node Schema API (#717) 2023-12-20 12:16:40 -05:00
Lance Release
5142a27482 Updating package-lock.json 2023-12-18 18:15:50 +00:00
Lance Release
81df2a524e Updating package-lock.json 2023-12-18 17:29:58 +00:00
Lance Release
40638e5515 Bump version: 0.3.11 → 0.4.0 2023-12-18 17:29:47 +00:00
Lance Release
018314a5c1 [python] Bump version: 0.3.6 → 0.4.0 2023-12-18 17:27:26 +00:00
Lei Xu
409eb30ea5 chore: bump lance version to 0.9 (#715) 2023-12-17 22:11:42 -05:00
Lance Release
ff9872fd44 Updating package-lock.json 2023-12-15 18:25:06 +00:00
Lance Release
a0608044a1 [python] Bump version: 0.3.5 → 0.3.6 2023-12-15 18:20:55 +00:00
Lance Release
2e4ea7d2bc Updating package-lock.json 2023-12-15 18:01:45 +00:00
Lance Release
57e5695a54 Bump version: 0.3.10 → 0.3.11 2023-12-15 18:01:34 +00:00
Bert
ce58ea7c38 chore: fix package lock (#711) 2023-12-15 11:49:16 -05:00
Bert
57207eff4a implement update for remote clients (#706) 2023-12-15 09:06:40 -05:00
Rob Meng
2d78bff120 feat: pass vector column name to remote backend (#710)
pass vector column name to remote as well.

`vector_column` is already part of `Query` just declearing it as part to
`remote.VectorQuery` as well
2023-12-15 00:19:08 -05:00
Rob Meng
7c09b9b9a9 feat: allow custom column name in query (#709) 2023-12-14 23:29:26 -05:00
Chang She
bd0034a157 feat: support nested pydantic schema (#707) 2023-12-14 18:20:45 -08:00
Will Jones
144b3b5d83 ci: fix broken npm publication (#704)
Most recent release failed because `release` depends on `node-macos`,
but we renamed `node-macos` to `node-macos-{x86,arm64}`. This fixes that
by consolidating them back to a single `node-macos` job, which also has
the side effect of making the file shorter.
2023-12-14 12:09:28 -08:00
Lance Release
b6f0a31686 Updating package-lock.json 2023-12-14 19:31:56 +00:00
Lance Release
9ec526f73f Bump version: 0.3.9 → 0.3.10 2023-12-14 19:31:41 +00:00
50 changed files with 1789 additions and 432 deletions

View File

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

View File

@@ -37,8 +37,16 @@ jobs:
path: | path: |
node/vectordb-*.tgz node/vectordb-*.tgz
node-macos-x86: node-macos:
runs-on: macos-13 strategy:
matrix:
config:
- arch: x86_64-apple-darwin
runner: macos-13
- arch: aarch64-apple-darwin
# xlarge is implicitly arm64.
runner: macos-13-xlarge
runs-on: ${{ matrix.config.runner }}
# Only runs on tags that matches the make-release action # Only runs on tags that matches the make-release action
if: startsWith(github.ref, 'refs/tags/v') if: startsWith(github.ref, 'refs/tags/v')
steps: steps:
@@ -51,7 +59,7 @@ jobs:
cd node cd node
npm ci npm ci
- name: Build MacOS native node modules - name: Build MacOS native node modules
run: bash ci/build_macos_artifacts.sh x86_64-apple-darwin run: bash ci/build_macos_artifacts.sh ${{ matrix.config.arch }}
- name: Upload Darwin Artifacts - name: Upload Darwin Artifacts
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
@@ -59,27 +67,6 @@ jobs:
path: | path: |
node/dist/lancedb-vectordb-darwin*.tgz node/dist/lancedb-vectordb-darwin*.tgz
node-macos-arm64:
runs-on: macos-13-xlarge
# Only runs on tags that matches the make-release action
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install system dependencies
run: brew install protobuf
- name: Install npm dependencies
run: |
cd node
npm ci
- name: Build MacOS native node modules
run: bash ci/build_macos_artifacts.sh aarch64-apple-darwin
- name: Upload Darwin Artifacts
uses: actions/upload-artifact@v3
with:
name: native-darwin
path: |
node/dist/lancedb-vectordb-darwin*.tgz
node-linux: node-linux:
name: node-linux (${{ matrix.config.arch}}-unknown-linux-gnu name: node-linux (${{ matrix.config.arch}}-unknown-linux-gnu

View File

@@ -91,11 +91,7 @@ jobs:
pip install "pydantic<2" pip install "pydantic<2"
pip install -e .[tests] pip install -e .[tests]
pip install tantivy@git+https://github.com/quickwit-oss/tantivy-py#164adc87e1a033117001cf70e38c82a53014d985 pip install tantivy@git+https://github.com/quickwit-oss/tantivy-py#164adc87e1a033117001cf70e38c82a53014d985
pip install pytest pytest-mock black isort pip install pytest pytest-mock
- name: Black
run: black --check --diff --no-color --quiet .
- name: isort
run: isort --check --diff --quiet .
- name: Run tests - name: Run tests
run: pytest -m "not slow" -x -v --durations=30 tests run: pytest -m "not slow" -x -v --durations=30 tests
- name: doctest - name: doctest

View File

@@ -5,10 +5,10 @@ exclude = ["python"]
resolver = "2" resolver = "2"
[workspace.dependencies] [workspace.dependencies]
lance = { "version" = "=0.8.20", "features" = ["dynamodb"] } lance = { "version" = "=0.9.0", "features" = ["dynamodb"] }
lance-index = { "version" = "=0.8.20" } lance-index = { "version" = "=0.9.0" }
lance-linalg = { "version" = "=0.8.20" } lance-linalg = { "version" = "=0.9.0" }
lance-testing = { "version" = "=0.8.20" } lance-testing = { "version" = "=0.9.0" }
# Note that this one does not include pyarrow # Note that this one does not include pyarrow
arrow = { version = "47.0.0", optional = false } arrow = { version = "47.0.0", optional = false }
arrow-array = "47.0" arrow-array = "47.0"

View File

@@ -2,3 +2,4 @@ mkdocs==1.4.2
mkdocs-jupyter==0.24.1 mkdocs-jupyter==0.24.1
mkdocs-material==9.1.3 mkdocs-material==9.1.3
mkdocstrings[python]==0.20.0 mkdocstrings[python]==0.20.0
pydantic

View File

@@ -1,5 +1,7 @@
<a href="https://colab.research.google.com/github/lancedb/lancedb/blob/main/docs/src/notebooks/tables_guide.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a><br/> <a href="https://colab.research.google.com/github/lancedb/lancedb/blob/main/docs/src/notebooks/tables_guide.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a><br/>
A Table is a collection of Records in a LanceDB Database. You can follow along on colab! A Table is a collection of Records in a LanceDB Database. Tables in Lance have a schema that defines the columns and their types. These schemas can include nested columns and can evolve over time.
This guide will show how to create tables, insert data into them, and update the data. You can follow along on colab!
## Creating a LanceDB Table ## Creating a LanceDB Table
@@ -361,19 +363,28 @@ Use the `delete()` method on tables to delete rows from a table. To choose which
await tbl.countRows() // Returns 1 await tbl.countRows() // Returns 1
``` ```
### Updating a Table [Experimental] ## Updating a Table
EXPERIMENTAL: Update rows in the table (not threadsafe).
This can be used to update zero to all rows depending on how many rows match the where clause. This can be used to update zero to all rows depending on how many rows match the where clause. The update queries follow the form of a SQL UPDATE statement. The `where` parameter is a SQL filter that matches on the metadata columns. The `values` or `values_sql` parameters are used to provide the new values for the columns.
| Parameter | Type | Description | | Parameter | Type | Description |
|---|---|---| |---|---|---|
| `where` | `str` | The SQL where clause to use when updating rows. For example, `'x = 2'` or `'x IN (1, 2, 3)'`. The filter must not be empty, or it will error. | | `where` | `str` | The SQL where clause to use when updating rows. For example, `'x = 2'` or `'x IN (1, 2, 3)'`. The filter must not be empty, or it will error. |
| `values` | `dict` | The values to update. The keys are the column names and the values are the values to set. | | `values` | `dict` | The values to update. The keys are the column names and the values are the values to set. |
| `values_sql` | `dict` | The values to update. The keys are the column names and the values are the SQL expressions to set. For example, `{'x': 'x + 1'}` will increment the value of the `x` column by 1. |
!!! info "SQL syntax"
See [SQL filters](sql.md) for more information on the supported SQL syntax.
!!! warning "Warning"
Updating nested columns is not yet supported.
=== "Python" === "Python"
API Reference: [lancedb.table.Table.update][]
```python ```python
import lancedb import lancedb
import pandas as pd import pandas as pd
@@ -403,6 +414,55 @@ This can be used to update zero to all rows depending on how many rows match the
2 2 [10.0, 10.0] 2 2 [10.0, 10.0]
``` ```
=== "Javascript/Typescript"
API Reference: [vectordb.Table.update](../../javascript/interfaces/Table/#update)
```javascript
const lancedb = require("vectordb");
const db = await lancedb.connect("./.lancedb");
const data = [
{x: 1, vector: [1, 2]},
{x: 2, vector: [3, 4]},
{x: 3, vector: [5, 6]},
];
const tbl = await db.createTable("my_table", data)
await tbl.update({ where: "x = 2", values: {vector: [10, 10]} })
```
The `values` parameter is used to provide the new values for the columns as literal values. You can also use the `values_sql` / `valuesSql` parameter to provide SQL expressions for the new values. For example, you can use `values_sql="x + 1"` to increment the value of the `x` column by 1.
=== "Python"
```python
# Update the table where x = 2
table.update(valuesSql={"x": "x + 1"})
print(table.to_pandas())
```
Output
```shell
x vector
0 2 [1.0, 2.0]
1 4 [5.0, 6.0]
2 3 [10.0, 10.0]
```
=== "Javascript/Typescript"
```javascript
await tbl.update({ valuesSql: { x: "x + 1" } })
```
!!! info "Note"
When rows are updated, they are moved out of the index. The row will still show up in ANN queries, but the query will not be as fast as it would be if the row was in the index. If you update a large proportion of rows, consider rebuilding the index afterwards.
## What's Next? ## What's Next?
Learn how to Query your tables and create indices Learn how to Query your tables and create indices

View File

@@ -12,7 +12,7 @@ npm install vectordb
This will download the appropriate native library for your platform. We currently This will download the appropriate native library for your platform. We currently
support x86_64 Linux, aarch64 Linux, Intel MacOS, and ARM (M1/M2) MacOS. We do not support x86_64 Linux, aarch64 Linux, Intel MacOS, and ARM (M1/M2) MacOS. We do not
yet support Windows or musl-based Linux (such as Alpine Linux). yet support musl-based Linux (such as Alpine Linux).
## Usage ## Usage

View File

@@ -0,0 +1,41 @@
[vectordb](../README.md) / [Exports](../modules.md) / DefaultWriteOptions
# Class: DefaultWriteOptions
Write options when creating a Table.
## Implements
- [`WriteOptions`](../interfaces/WriteOptions.md)
## Table of contents
### Constructors
- [constructor](DefaultWriteOptions.md#constructor)
### Properties
- [writeMode](DefaultWriteOptions.md#writemode)
## Constructors
### constructor
**new DefaultWriteOptions**()
## Properties
### writeMode
**writeMode**: [`WriteMode`](../enums/WriteMode.md) = `WriteMode.Create`
A [WriteMode](../enums/WriteMode.md) to use on this operation
#### Implementation of
[WriteOptions](../interfaces/WriteOptions.md).[writeMode](../interfaces/WriteOptions.md#writemode)
#### Defined in
[index.ts:778](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L778)

View File

@@ -26,7 +26,7 @@ A connection to a LanceDB database.
### Methods ### Methods
- [createTable](LocalConnection.md#createtable) - [createTable](LocalConnection.md#createtable)
- [createTableArrow](LocalConnection.md#createtablearrow) - [createTableImpl](LocalConnection.md#createtableimpl)
- [dropTable](LocalConnection.md#droptable) - [dropTable](LocalConnection.md#droptable)
- [openTable](LocalConnection.md#opentable) - [openTable](LocalConnection.md#opentable)
- [tableNames](LocalConnection.md#tablenames) - [tableNames](LocalConnection.md#tablenames)
@@ -46,7 +46,7 @@ A connection to a LanceDB database.
#### Defined in #### Defined in
[index.ts:184](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L184) [index.ts:355](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L355)
## Properties ## Properties
@@ -56,17 +56,25 @@ A connection to a LanceDB database.
#### Defined in #### Defined in
[index.ts:182](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L182) [index.ts:353](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L353)
___ ___
### \_options ### \_options
`Private` `Readonly` **\_options**: [`ConnectionOptions`](../interfaces/ConnectionOptions.md) `Private` `Readonly` **\_options**: () => [`ConnectionOptions`](../interfaces/ConnectionOptions.md)
#### Type declaration
▸ (): [`ConnectionOptions`](../interfaces/ConnectionOptions.md)
##### Returns
[`ConnectionOptions`](../interfaces/ConnectionOptions.md)
#### Defined in #### Defined in
[index.ts:181](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L181) [index.ts:352](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L352)
## Accessors ## Accessors
@@ -84,27 +92,34 @@ ___
#### Defined in #### Defined in
[index.ts:189](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L189) [index.ts:360](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L360)
## Methods ## Methods
### createTable ### createTable
**createTable**(`name`, `data`, `mode?`): `Promise`<[`Table`](../interfaces/Table.md)<`number`[]\>\> **createTable**\<`T`\>(`name`, `data?`, `optsOrEmbedding?`, `opt?`): `Promise`\<[`Table`](../interfaces/Table.md)\<`T`\>\>
Creates a new Table and initialize it with new data. Creates a new Table, optionally initializing it with new data.
#### Type parameters
| Name |
| :------ |
| `T` |
#### Parameters #### Parameters
| Name | Type | Description | | Name | Type |
| :------ | :------ | :------ | | :------ | :------ |
| `name` | `string` | The name of the table. | | `name` | `string` \| [`CreateTableOptions`](../interfaces/CreateTableOptions.md)\<`T`\> |
| `data` | `Record`<`string`, `unknown`\>[] | Non-empty Array of Records to be inserted into the Table | | `data?` | `Record`\<`string`, `unknown`\>[] |
| `mode?` | [`WriteMode`](../enums/WriteMode.md) | The write mode to use when creating the table. | | `optsOrEmbedding?` | [`WriteOptions`](../interfaces/WriteOptions.md) \| [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)\<`T`\> |
| `opt?` | [`WriteOptions`](../interfaces/WriteOptions.md) |
#### Returns #### Returns
`Promise`<[`Table`](../interfaces/Table.md)<`number`[]\>\> `Promise`\<[`Table`](../interfaces/Table.md)\<`T`\>\>
#### Implementation of #### Implementation of
@@ -112,120 +127,44 @@ Creates a new Table and initialize it with new data.
#### Defined in #### Defined in
[index.ts:230](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L230) [index.ts:395](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L395)
**createTable**(`name`, `data`, `mode`): `Promise`<[`Table`](../interfaces/Table.md)<`number`[]\>\>
#### Parameters
| Name | Type |
| :------ | :------ |
| `name` | `string` |
| `data` | `Record`<`string`, `unknown`\>[] |
| `mode` | [`WriteMode`](../enums/WriteMode.md) |
#### Returns
`Promise`<[`Table`](../interfaces/Table.md)<`number`[]\>\>
#### Implementation of
Connection.createTable
#### Defined in
[index.ts:231](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L231)
**createTable**<`T`\>(`name`, `data`, `mode`, `embeddings`): `Promise`<[`Table`](../interfaces/Table.md)<`T`\>\>
Creates a new Table and initialize it with new data.
#### Type parameters
| Name |
| :------ |
| `T` |
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `name` | `string` | The name of the table. |
| `data` | `Record`<`string`, `unknown`\>[] | Non-empty Array of Records to be inserted into the Table |
| `mode` | [`WriteMode`](../enums/WriteMode.md) | The write mode to use when creating the table. |
| `embeddings` | [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)<`T`\> | An embedding function to use on this Table |
#### Returns
`Promise`<[`Table`](../interfaces/Table.md)<`T`\>\>
#### Implementation of
Connection.createTable
#### Defined in
[index.ts:241](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L241)
**createTable**<`T`\>(`name`, `data`, `mode`, `embeddings?`): `Promise`<[`Table`](../interfaces/Table.md)<`T`\>\>
#### Type parameters
| Name |
| :------ |
| `T` |
#### Parameters
| Name | Type |
| :------ | :------ |
| `name` | `string` |
| `data` | `Record`<`string`, `unknown`\>[] |
| `mode` | [`WriteMode`](../enums/WriteMode.md) |
| `embeddings?` | [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)<`T`\> |
#### Returns
`Promise`<[`Table`](../interfaces/Table.md)<`T`\>\>
#### Implementation of
Connection.createTable
#### Defined in
[index.ts:242](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L242)
___ ___
### createTableArrow ### createTableImpl
**createTableArrow**(`name`, `table`): `Promise`<[`Table`](../interfaces/Table.md)<`number`[]\>\> `Private` **createTableImpl**\<`T`\>(`«destructured»`): `Promise`\<[`Table`](../interfaces/Table.md)\<`T`\>\>
#### Type parameters
| Name |
| :------ |
| `T` |
#### Parameters #### Parameters
| Name | Type | | Name | Type |
| :------ | :------ | | :------ | :------ |
| `name` | `string` | | `«destructured»` | `Object` |
| `table` | `Table`<`any`\> | |  `data?` | `Table`\<`any`\> \| `Record`\<`string`, `unknown`\>[] |
|  `embeddingFunction?` | [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)\<`T`\> |
|  `name` | `string` |
|  `schema?` | `Schema`\<`any`\> |
|  `writeOptions?` | [`WriteOptions`](../interfaces/WriteOptions.md) |
#### Returns #### Returns
`Promise`<[`Table`](../interfaces/Table.md)<`number`[]\>\> `Promise`\<[`Table`](../interfaces/Table.md)\<`T`\>\>
#### Implementation of
[Connection](../interfaces/Connection.md).[createTableArrow](../interfaces/Connection.md#createtablearrow)
#### Defined in #### Defined in
[index.ts:266](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L266) [index.ts:413](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L413)
___ ___
### dropTable ### dropTable
**dropTable**(`name`): `Promise`<`void`\> **dropTable**(`name`): `Promise`\<`void`\>
Drop an existing table. Drop an existing table.
@@ -237,7 +176,7 @@ Drop an existing table.
#### Returns #### Returns
`Promise`<`void`\> `Promise`\<`void`\>
#### Implementation of #### Implementation of
@@ -245,13 +184,13 @@ Drop an existing table.
#### Defined in #### Defined in
[index.ts:276](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L276) [index.ts:453](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L453)
___ ___
### openTable ### openTable
**openTable**(`name`): `Promise`<[`Table`](../interfaces/Table.md)<`number`[]\>\> **openTable**(`name`): `Promise`\<[`Table`](../interfaces/Table.md)\<`number`[]\>\>
Open a table in the database. Open a table in the database.
@@ -263,7 +202,7 @@ Open a table in the database.
#### Returns #### Returns
`Promise`<[`Table`](../interfaces/Table.md)<`number`[]\>\> `Promise`\<[`Table`](../interfaces/Table.md)\<`number`[]\>\>
#### Implementation of #### Implementation of
@@ -271,9 +210,9 @@ Open a table in the database.
#### Defined in #### Defined in
[index.ts:205](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L205) [index.ts:376](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L376)
**openTable**<`T`\>(`name`, `embeddings`): `Promise`<[`Table`](../interfaces/Table.md)<`T`\>\> **openTable**\<`T`\>(`name`, `embeddings`): `Promise`\<[`Table`](../interfaces/Table.md)\<`T`\>\>
Open a table in the database. Open a table in the database.
@@ -288,11 +227,11 @@ Open a table in the database.
| Name | Type | Description | | Name | Type | Description |
| :------ | :------ | :------ | | :------ | :------ | :------ |
| `name` | `string` | The name of the table. | | `name` | `string` | The name of the table. |
| `embeddings` | [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)<`T`\> | An embedding function to use on this Table | | `embeddings` | [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)\<`T`\> | An embedding function to use on this Table |
#### Returns #### Returns
`Promise`<[`Table`](../interfaces/Table.md)<`T`\>\> `Promise`\<[`Table`](../interfaces/Table.md)\<`T`\>\>
#### Implementation of #### Implementation of
@@ -300,9 +239,9 @@ Connection.openTable
#### Defined in #### Defined in
[index.ts:212](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L212) [index.ts:384](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L384)
**openTable**<`T`\>(`name`, `embeddings?`): `Promise`<[`Table`](../interfaces/Table.md)<`T`\>\> **openTable**\<`T`\>(`name`, `embeddings?`): `Promise`\<[`Table`](../interfaces/Table.md)\<`T`\>\>
#### Type parameters #### Type parameters
@@ -315,11 +254,11 @@ Connection.openTable
| Name | Type | | Name | Type |
| :------ | :------ | | :------ | :------ |
| `name` | `string` | | `name` | `string` |
| `embeddings?` | [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)<`T`\> | | `embeddings?` | [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)\<`T`\> |
#### Returns #### Returns
`Promise`<[`Table`](../interfaces/Table.md)<`T`\>\> `Promise`\<[`Table`](../interfaces/Table.md)\<`T`\>\>
#### Implementation of #### Implementation of
@@ -327,19 +266,19 @@ Connection.openTable
#### Defined in #### Defined in
[index.ts:213](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L213) [index.ts:385](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L385)
___ ___
### tableNames ### tableNames
**tableNames**(): `Promise`<`string`[]\> **tableNames**(): `Promise`\<`string`[]\>
Get the names of all tables in the database. Get the names of all tables in the database.
#### Returns #### Returns
`Promise`<`string`[]\> `Promise`\<`string`[]\>
#### Implementation of #### Implementation of
@@ -347,4 +286,4 @@ Get the names of all tables in the database.
#### Defined in #### Defined in
[index.ts:196](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L196) [index.ts:367](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L367)

View File

@@ -1,6 +1,6 @@
[vectordb](../README.md) / [Exports](../modules.md) / LocalTable [vectordb](../README.md) / [Exports](../modules.md) / LocalTable
# Class: LocalTable<T\> # Class: LocalTable\<T\>
A LanceDB Table is the collection of Records. Each Record has one or more vector fields. A LanceDB Table is the collection of Records. Each Record has one or more vector fields.
@@ -12,7 +12,7 @@ A LanceDB Table is the collection of Records. Each Record has one or more vector
## Implements ## Implements
- [`Table`](../interfaces/Table.md)<`T`\> - [`Table`](../interfaces/Table.md)\<`T`\>
## Table of contents ## Table of contents
@@ -26,6 +26,7 @@ A LanceDB Table is the collection of Records. Each Record has one or more vector
- [\_name](LocalTable.md#_name) - [\_name](LocalTable.md#_name)
- [\_options](LocalTable.md#_options) - [\_options](LocalTable.md#_options)
- [\_tbl](LocalTable.md#_tbl) - [\_tbl](LocalTable.md#_tbl)
- [where](LocalTable.md#where)
### Accessors ### Accessors
@@ -34,17 +35,23 @@ A LanceDB Table is the collection of Records. Each Record has one or more vector
### Methods ### Methods
- [add](LocalTable.md#add) - [add](LocalTable.md#add)
- [cleanupOldVersions](LocalTable.md#cleanupoldversions)
- [compactFiles](LocalTable.md#compactfiles)
- [countRows](LocalTable.md#countrows) - [countRows](LocalTable.md#countrows)
- [createIndex](LocalTable.md#createindex) - [createIndex](LocalTable.md#createindex)
- [delete](LocalTable.md#delete) - [delete](LocalTable.md#delete)
- [filter](LocalTable.md#filter)
- [indexStats](LocalTable.md#indexstats)
- [listIndices](LocalTable.md#listindices)
- [overwrite](LocalTable.md#overwrite) - [overwrite](LocalTable.md#overwrite)
- [search](LocalTable.md#search) - [search](LocalTable.md#search)
- [update](LocalTable.md#update)
## Constructors ## Constructors
### constructor ### constructor
**new LocalTable**<`T`\>(`tbl`, `name`, `options`) **new LocalTable**\<`T`\>(`tbl`, `name`, `options`)
#### Type parameters #### Type parameters
@@ -62,9 +69,9 @@ A LanceDB Table is the collection of Records. Each Record has one or more vector
#### Defined in #### Defined in
[index.ts:287](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L287) [index.ts:464](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L464)
**new LocalTable**<`T`\>(`tbl`, `name`, `options`, `embeddings`) **new LocalTable**\<`T`\>(`tbl`, `name`, `options`, `embeddings`)
#### Type parameters #### Type parameters
@@ -79,21 +86,21 @@ A LanceDB Table is the collection of Records. Each Record has one or more vector
| `tbl` | `any` | | | `tbl` | `any` | |
| `name` | `string` | | | `name` | `string` | |
| `options` | [`ConnectionOptions`](../interfaces/ConnectionOptions.md) | | | `options` | [`ConnectionOptions`](../interfaces/ConnectionOptions.md) | |
| `embeddings` | [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)<`T`\> | An embedding function to use when interacting with this table | | `embeddings` | [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)\<`T`\> | An embedding function to use when interacting with this table |
#### Defined in #### Defined in
[index.ts:294](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L294) [index.ts:471](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L471)
## Properties ## Properties
### \_embeddings ### \_embeddings
`Private` `Optional` `Readonly` **\_embeddings**: [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)<`T`\> `Private` `Optional` `Readonly` **\_embeddings**: [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)\<`T`\>
#### Defined in #### Defined in
[index.ts:284](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L284) [index.ts:461](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L461)
___ ___
@@ -103,27 +110,61 @@ ___
#### Defined in #### Defined in
[index.ts:283](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L283) [index.ts:460](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L460)
___ ___
### \_options ### \_options
`Private` `Readonly` **\_options**: [`ConnectionOptions`](../interfaces/ConnectionOptions.md) `Private` `Readonly` **\_options**: () => [`ConnectionOptions`](../interfaces/ConnectionOptions.md)
#### Type declaration
▸ (): [`ConnectionOptions`](../interfaces/ConnectionOptions.md)
##### Returns
[`ConnectionOptions`](../interfaces/ConnectionOptions.md)
#### Defined in #### Defined in
[index.ts:285](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L285) [index.ts:462](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L462)
___ ___
### \_tbl ### \_tbl
`Private` `Readonly` **\_tbl**: `any` `Private` **\_tbl**: `any`
#### Defined in #### Defined in
[index.ts:282](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L282) [index.ts:459](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L459)
___
### where
**where**: (`value`: `string`) => [`Query`](Query.md)\<`T`\>
#### Type declaration
▸ (`value`): [`Query`](Query.md)\<`T`\>
Creates a filter query to find all rows matching the specified criteria
##### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `value` | `string` | The filter criteria (like SQL where clause syntax) |
##### Returns
[`Query`](Query.md)\<`T`\>
#### Defined in
[index.ts:499](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L499)
## Accessors ## Accessors
@@ -141,13 +182,13 @@ ___
#### Defined in #### Defined in
[index.ts:302](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L302) [index.ts:479](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L479)
## Methods ## Methods
### add ### add
**add**(`data`): `Promise`<`number`\> **add**(`data`): `Promise`\<`number`\>
Insert records into this Table. Insert records into this Table.
@@ -155,11 +196,11 @@ Insert records into this Table.
| Name | Type | Description | | Name | Type | Description |
| :------ | :------ | :------ | | :------ | :------ | :------ |
| `data` | `Record`<`string`, `unknown`\>[] | Records to be inserted into the Table | | `data` | `Record`\<`string`, `unknown`\>[] | Records to be inserted into the Table |
#### Returns #### Returns
`Promise`<`number`\> `Promise`\<`number`\>
The number of rows added to the table The number of rows added to the table
@@ -169,19 +210,69 @@ The number of rows added to the table
#### Defined in #### Defined in
[index.ts:320](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L320) [index.ts:507](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L507)
___
### cleanupOldVersions
**cleanupOldVersions**(`olderThan?`, `deleteUnverified?`): `Promise`\<[`CleanupStats`](../interfaces/CleanupStats.md)\>
Clean up old versions of the table, freeing disk space.
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `olderThan?` | `number` | The minimum age in minutes of the versions to delete. If not provided, defaults to two weeks. |
| `deleteUnverified?` | `boolean` | Because they may be part of an in-progress transaction, uncommitted files newer than 7 days old are not deleted by default. This means that failed transactions can leave around data that takes up disk space for up to 7 days. You can override this safety mechanism by setting this option to `true`, only if you promise there are no in progress writes while you run this operation. Failure to uphold this promise can lead to corrupted tables. |
#### Returns
`Promise`\<[`CleanupStats`](../interfaces/CleanupStats.md)\>
#### Defined in
[index.ts:596](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L596)
___
### compactFiles
**compactFiles**(`options?`): `Promise`\<[`CompactionMetrics`](../interfaces/CompactionMetrics.md)\>
Run the compaction process on the table.
This can be run after making several small appends to optimize the table
for faster reads.
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `options?` | [`CompactionOptions`](../interfaces/CompactionOptions.md) | Advanced options configuring compaction. In most cases, you can omit this arguments, as the default options are sensible for most tables. |
#### Returns
`Promise`\<[`CompactionMetrics`](../interfaces/CompactionMetrics.md)\>
Metrics about the compaction operation.
#### Defined in
[index.ts:615](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L615)
___ ___
### countRows ### countRows
**countRows**(): `Promise`<`number`\> **countRows**(): `Promise`\<`number`\>
Returns the number of rows in this table. Returns the number of rows in this table.
#### Returns #### Returns
`Promise`<`number`\> `Promise`\<`number`\>
#### Implementation of #### Implementation of
@@ -189,20 +280,16 @@ Returns the number of rows in this table.
#### Defined in #### Defined in
[index.ts:362](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L362) [index.ts:543](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L543)
___ ___
### createIndex ### createIndex
**createIndex**(`indexParams`): `Promise`<`any`\> **createIndex**(`indexParams`): `Promise`\<`any`\>
Create an ANN index on this Table vector index. Create an ANN index on this Table vector index.
**`See`**
VectorIndexParams.
#### Parameters #### Parameters
| Name | Type | Description | | Name | Type | Description |
@@ -211,7 +298,11 @@ VectorIndexParams.
#### Returns #### Returns
`Promise`<`any`\> `Promise`\<`any`\>
**`See`**
VectorIndexParams.
#### Implementation of #### Implementation of
@@ -219,13 +310,13 @@ VectorIndexParams.
#### Defined in #### Defined in
[index.ts:355](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L355) [index.ts:536](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L536)
___ ___
### delete ### delete
**delete**(`filter`): `Promise`<`void`\> **delete**(`filter`): `Promise`\<`void`\>
Delete rows from this table. Delete rows from this table.
@@ -237,7 +328,7 @@ Delete rows from this table.
#### Returns #### Returns
`Promise`<`void`\> `Promise`\<`void`\>
#### Implementation of #### Implementation of
@@ -245,13 +336,81 @@ Delete rows from this table.
#### Defined in #### Defined in
[index.ts:371](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L371) [index.ts:552](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L552)
___
### filter
**filter**(`value`): [`Query`](Query.md)\<`T`\>
Creates a filter query to find all rows matching the specified criteria
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `value` | `string` | The filter criteria (like SQL where clause syntax) |
#### Returns
[`Query`](Query.md)\<`T`\>
#### Defined in
[index.ts:495](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L495)
___
### indexStats
**indexStats**(`indexUuid`): `Promise`\<[`IndexStats`](../interfaces/IndexStats.md)\>
Get statistics about an index.
#### Parameters
| Name | Type |
| :------ | :------ |
| `indexUuid` | `string` |
#### Returns
`Promise`\<[`IndexStats`](../interfaces/IndexStats.md)\>
#### Implementation of
[Table](../interfaces/Table.md).[indexStats](../interfaces/Table.md#indexstats)
#### Defined in
[index.ts:628](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L628)
___
### listIndices
**listIndices**(): `Promise`\<[`VectorIndex`](../interfaces/VectorIndex.md)[]\>
List the indicies on this table.
#### Returns
`Promise`\<[`VectorIndex`](../interfaces/VectorIndex.md)[]\>
#### Implementation of
[Table](../interfaces/Table.md).[listIndices](../interfaces/Table.md#listindices)
#### Defined in
[index.ts:624](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L624)
___ ___
### overwrite ### overwrite
**overwrite**(`data`): `Promise`<`number`\> **overwrite**(`data`): `Promise`\<`number`\>
Insert records into this Table, replacing its contents. Insert records into this Table, replacing its contents.
@@ -259,11 +418,11 @@ Insert records into this Table, replacing its contents.
| Name | Type | Description | | Name | Type | Description |
| :------ | :------ | :------ | | :------ | :------ | :------ |
| `data` | `Record`<`string`, `unknown`\>[] | Records to be inserted into the Table | | `data` | `Record`\<`string`, `unknown`\>[] | Records to be inserted into the Table |
#### Returns #### Returns
`Promise`<`number`\> `Promise`\<`number`\>
The number of rows added to the table The number of rows added to the table
@@ -273,13 +432,13 @@ The number of rows added to the table
#### Defined in #### Defined in
[index.ts:338](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L338) [index.ts:522](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L522)
___ ___
### search ### search
**search**(`query`): [`Query`](Query.md)<`T`\> **search**(`query`): [`Query`](Query.md)\<`T`\>
Creates a search query to find the nearest neighbors of the given search term Creates a search query to find the nearest neighbors of the given search term
@@ -291,7 +450,7 @@ Creates a search query to find the nearest neighbors of the given search term
#### Returns #### Returns
[`Query`](Query.md)<`T`\> [`Query`](Query.md)\<`T`\>
#### Implementation of #### Implementation of
@@ -299,4 +458,30 @@ Creates a search query to find the nearest neighbors of the given search term
#### Defined in #### Defined in
[index.ts:310](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L310) [index.ts:487](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L487)
___
### update
**update**(`args`): `Promise`\<`void`\>
Update rows in this table.
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `args` | [`UpdateArgs`](../interfaces/UpdateArgs.md) \| [`UpdateSqlArgs`](../interfaces/UpdateSqlArgs.md) | see [UpdateArgs](../interfaces/UpdateArgs.md) and [UpdateSqlArgs](../interfaces/UpdateSqlArgs.md) for more details |
#### Returns
`Promise`\<`void`\>
#### Implementation of
[Table](../interfaces/Table.md).[update](../interfaces/Table.md#update)
#### Defined in
[index.ts:563](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L563)

View File

@@ -6,7 +6,7 @@ An embedding function that automatically creates vector representation for a giv
## Implements ## Implements
- [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)<`string`\> - [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)\<`string`\>
## Table of contents ## Table of contents
@@ -40,7 +40,7 @@ An embedding function that automatically creates vector representation for a giv
#### Defined in #### Defined in
[embedding/openai.ts:21](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/embedding/openai.ts#L21) [embedding/openai.ts:21](https://github.com/lancedb/lancedb/blob/7856a94/node/src/embedding/openai.ts#L21)
## Properties ## Properties
@@ -50,7 +50,7 @@ An embedding function that automatically creates vector representation for a giv
#### Defined in #### Defined in
[embedding/openai.ts:19](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/embedding/openai.ts#L19) [embedding/openai.ts:19](https://github.com/lancedb/lancedb/blob/7856a94/node/src/embedding/openai.ts#L19)
___ ___
@@ -60,7 +60,7 @@ ___
#### Defined in #### Defined in
[embedding/openai.ts:18](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/embedding/openai.ts#L18) [embedding/openai.ts:18](https://github.com/lancedb/lancedb/blob/7856a94/node/src/embedding/openai.ts#L18)
___ ___
@@ -76,13 +76,13 @@ The name of the column that will be used as input for the Embedding Function.
#### Defined in #### Defined in
[embedding/openai.ts:50](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/embedding/openai.ts#L50) [embedding/openai.ts:50](https://github.com/lancedb/lancedb/blob/7856a94/node/src/embedding/openai.ts#L50)
## Methods ## Methods
### embed ### embed
**embed**(`data`): `Promise`<`number`[][]\> **embed**(`data`): `Promise`\<`number`[][]\>
Creates a vector representation for the given values. Creates a vector representation for the given values.
@@ -94,7 +94,7 @@ Creates a vector representation for the given values.
#### Returns #### Returns
`Promise`<`number`[][]\> `Promise`\<`number`[][]\>
#### Implementation of #### Implementation of
@@ -102,4 +102,4 @@ Creates a vector representation for the given values.
#### Defined in #### Defined in
[embedding/openai.ts:38](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/embedding/openai.ts#L38) [embedding/openai.ts:38](https://github.com/lancedb/lancedb/blob/7856a94/node/src/embedding/openai.ts#L38)

View File

@@ -1,6 +1,6 @@
[vectordb](../README.md) / [Exports](../modules.md) / Query [vectordb](../README.md) / [Exports](../modules.md) / Query
# Class: Query<T\> # Class: Query\<T\>
A builder for nearest neighbor queries for LanceDB. A builder for nearest neighbor queries for LanceDB.
@@ -23,6 +23,7 @@ A builder for nearest neighbor queries for LanceDB.
- [\_limit](Query.md#_limit) - [\_limit](Query.md#_limit)
- [\_metricType](Query.md#_metrictype) - [\_metricType](Query.md#_metrictype)
- [\_nprobes](Query.md#_nprobes) - [\_nprobes](Query.md#_nprobes)
- [\_prefilter](Query.md#_prefilter)
- [\_query](Query.md#_query) - [\_query](Query.md#_query)
- [\_queryVector](Query.md#_queryvector) - [\_queryVector](Query.md#_queryvector)
- [\_refineFactor](Query.md#_refinefactor) - [\_refineFactor](Query.md#_refinefactor)
@@ -34,9 +35,11 @@ A builder for nearest neighbor queries for LanceDB.
- [execute](Query.md#execute) - [execute](Query.md#execute)
- [filter](Query.md#filter) - [filter](Query.md#filter)
- [isElectron](Query.md#iselectron)
- [limit](Query.md#limit) - [limit](Query.md#limit)
- [metricType](Query.md#metrictype) - [metricType](Query.md#metrictype)
- [nprobes](Query.md#nprobes) - [nprobes](Query.md#nprobes)
- [prefilter](Query.md#prefilter)
- [refineFactor](Query.md#refinefactor) - [refineFactor](Query.md#refinefactor)
- [select](Query.md#select) - [select](Query.md#select)
@@ -44,7 +47,7 @@ A builder for nearest neighbor queries for LanceDB.
### constructor ### constructor
**new Query**<`T`\>(`tbl`, `query`, `embeddings?`) **new Query**\<`T`\>(`query?`, `tbl?`, `embeddings?`)
#### Type parameters #### Type parameters
@@ -56,23 +59,23 @@ A builder for nearest neighbor queries for LanceDB.
| Name | Type | | Name | Type |
| :------ | :------ | | :------ | :------ |
| `tbl` | `any` | | `query?` | `T` |
| `query` | `T` | | `tbl?` | `any` |
| `embeddings?` | [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)<`T`\> | | `embeddings?` | [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)\<`T`\> |
#### Defined in #### Defined in
[index.ts:448](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L448) [query.ts:38](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L38)
## Properties ## Properties
### \_embeddings ### \_embeddings
`Private` `Optional` `Readonly` **\_embeddings**: [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)<`T`\> `Protected` `Optional` `Readonly` **\_embeddings**: [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)\<`T`\>
#### Defined in #### Defined in
[index.ts:446](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L446) [query.ts:36](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L36)
___ ___
@@ -82,17 +85,17 @@ ___
#### Defined in #### Defined in
[index.ts:444](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L444) [query.ts:33](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L33)
___ ___
### \_limit ### \_limit
`Private` **\_limit**: `number` `Private` `Optional` **\_limit**: `number`
#### Defined in #### Defined in
[index.ts:440](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L440) [query.ts:29](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L29)
___ ___
@@ -102,7 +105,7 @@ ___
#### Defined in #### Defined in
[index.ts:445](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L445) [query.ts:34](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L34)
___ ___
@@ -112,17 +115,27 @@ ___
#### Defined in #### Defined in
[index.ts:442](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L442) [query.ts:31](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L31)
___
### \_prefilter
`Private` **\_prefilter**: `boolean`
#### Defined in
[query.ts:35](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L35)
___ ___
### \_query ### \_query
`Private` `Readonly` **\_query**: `T` `Private` `Optional` `Readonly` **\_query**: `T`
#### Defined in #### Defined in
[index.ts:438](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L438) [query.ts:26](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L26)
___ ___
@@ -132,7 +145,7 @@ ___
#### Defined in #### Defined in
[index.ts:439](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L439) [query.ts:28](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L28)
___ ___
@@ -142,7 +155,7 @@ ___
#### Defined in #### Defined in
[index.ts:441](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L441) [query.ts:30](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L30)
___ ___
@@ -152,27 +165,27 @@ ___
#### Defined in #### Defined in
[index.ts:443](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L443) [query.ts:32](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L32)
___ ___
### \_tbl ### \_tbl
`Private` `Readonly` **\_tbl**: `any` `Private` `Optional` `Readonly` **\_tbl**: `any`
#### Defined in #### Defined in
[index.ts:437](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L437) [query.ts:27](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L27)
___ ___
### where ### where
**where**: (`value`: `string`) => [`Query`](Query.md)<`T`\> **where**: (`value`: `string`) => [`Query`](Query.md)\<`T`\>
#### Type declaration #### Type declaration
▸ (`value`): [`Query`](Query.md)<`T`\> ▸ (`value`): [`Query`](Query.md)\<`T`\>
A filter statement to be applied to this query. A filter statement to be applied to this query.
@@ -184,17 +197,17 @@ A filter statement to be applied to this query.
##### Returns ##### Returns
[`Query`](Query.md)<`T`\> [`Query`](Query.md)\<`T`\>
#### Defined in #### Defined in
[index.ts:496](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L496) [query.ts:87](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L87)
## Methods ## Methods
### execute ### execute
**execute**<`T`\>(): `Promise`<`T`[]\> **execute**\<`T`\>(): `Promise`\<`T`[]\>
Execute the query and return the results as an Array of Objects Execute the query and return the results as an Array of Objects
@@ -202,21 +215,21 @@ Execute the query and return the results as an Array of Objects
| Name | Type | | Name | Type |
| :------ | :------ | | :------ | :------ |
| `T` | `Record`<`string`, `unknown`\> | | `T` | `Record`\<`string`, `unknown`\> |
#### Returns #### Returns
`Promise`<`T`[]\> `Promise`\<`T`[]\>
#### Defined in #### Defined in
[index.ts:519](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L519) [query.ts:115](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L115)
___ ___
### filter ### filter
**filter**(`value`): [`Query`](Query.md)<`T`\> **filter**(`value`): [`Query`](Query.md)\<`T`\>
A filter statement to be applied to this query. A filter statement to be applied to this query.
@@ -228,17 +241,31 @@ A filter statement to be applied to this query.
#### Returns #### Returns
[`Query`](Query.md)<`T`\> [`Query`](Query.md)\<`T`\>
#### Defined in #### Defined in
[index.ts:491](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L491) [query.ts:82](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L82)
___
### isElectron
`Private` **isElectron**(): `boolean`
#### Returns
`boolean`
#### Defined in
[query.ts:142](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L142)
___ ___
### limit ### limit
**limit**(`value`): [`Query`](Query.md)<`T`\> **limit**(`value`): [`Query`](Query.md)\<`T`\>
Sets the number of results that will be returned Sets the number of results that will be returned
@@ -250,24 +277,20 @@ Sets the number of results that will be returned
#### Returns #### Returns
[`Query`](Query.md)<`T`\> [`Query`](Query.md)\<`T`\>
#### Defined in #### Defined in
[index.ts:464](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L464) [query.ts:55](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L55)
___ ___
### metricType ### metricType
**metricType**(`value`): [`Query`](Query.md)<`T`\> **metricType**(`value`): [`Query`](Query.md)\<`T`\>
The MetricType used for this Query. The MetricType used for this Query.
**`See`**
MetricType for the different options
#### Parameters #### Parameters
| Name | Type | Description | | Name | Type | Description |
@@ -276,17 +299,21 @@ MetricType for the different options
#### Returns #### Returns
[`Query`](Query.md)<`T`\> [`Query`](Query.md)\<`T`\>
**`See`**
MetricType for the different options
#### Defined in #### Defined in
[index.ts:511](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L511) [query.ts:102](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L102)
___ ___
### nprobes ### nprobes
**nprobes**(`value`): [`Query`](Query.md)<`T`\> **nprobes**(`value`): [`Query`](Query.md)\<`T`\>
The number of probes used. A higher number makes search more accurate but also slower. The number of probes used. A higher number makes search more accurate but also slower.
@@ -298,17 +325,37 @@ The number of probes used. A higher number makes search more accurate but also s
#### Returns #### Returns
[`Query`](Query.md)<`T`\> [`Query`](Query.md)\<`T`\>
#### Defined in #### Defined in
[index.ts:482](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L482) [query.ts:73](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L73)
___
### prefilter
**prefilter**(`value`): [`Query`](Query.md)\<`T`\>
#### Parameters
| Name | Type |
| :------ | :------ |
| `value` | `boolean` |
#### Returns
[`Query`](Query.md)\<`T`\>
#### Defined in
[query.ts:107](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L107)
___ ___
### refineFactor ### refineFactor
**refineFactor**(`value`): [`Query`](Query.md)<`T`\> **refineFactor**(`value`): [`Query`](Query.md)\<`T`\>
Refine the results by reading extra elements and re-ranking them in memory. Refine the results by reading extra elements and re-ranking them in memory.
@@ -320,17 +367,17 @@ Refine the results by reading extra elements and re-ranking them in memory.
#### Returns #### Returns
[`Query`](Query.md)<`T`\> [`Query`](Query.md)\<`T`\>
#### Defined in #### Defined in
[index.ts:473](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L473) [query.ts:64](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L64)
___ ___
### select ### select
**select**(`value`): [`Query`](Query.md)<`T`\> **select**(`value`): [`Query`](Query.md)\<`T`\>
Return only the specified columns. Return only the specified columns.
@@ -342,8 +389,8 @@ Return only the specified columns.
#### Returns #### Returns
[`Query`](Query.md)<`T`\> [`Query`](Query.md)\<`T`\>
#### Defined in #### Defined in
[index.ts:502](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L502) [query.ts:93](https://github.com/lancedb/lancedb/blob/7856a94/node/src/query.ts#L93)

View File

@@ -22,7 +22,7 @@ Cosine distance
#### Defined in #### Defined in
[index.ts:567](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L567) [index.ts:798](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L798)
___ ___
@@ -34,7 +34,7 @@ Dot product
#### Defined in #### Defined in
[index.ts:572](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L572) [index.ts:803](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L803)
___ ___
@@ -46,4 +46,4 @@ Euclidean distance
#### Defined in #### Defined in
[index.ts:562](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L562) [index.ts:793](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L793)

View File

@@ -22,7 +22,7 @@ Append new data to the table.
#### Defined in #### Defined in
[index.ts:552](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L552) [index.ts:766](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L766)
___ ___
@@ -34,7 +34,7 @@ Create a new [Table](../interfaces/Table.md).
#### Defined in #### Defined in
[index.ts:548](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L548) [index.ts:762](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L762)
___ ___
@@ -46,4 +46,4 @@ Overwrite the existing [Table](../interfaces/Table.md) if presented.
#### Defined in #### Defined in
[index.ts:550](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L550) [index.ts:764](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L764)

View File

@@ -18,7 +18,7 @@
#### Defined in #### Defined in
[index.ts:31](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L31) [index.ts:34](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L34)
___ ___
@@ -28,7 +28,7 @@ ___
#### Defined in #### Defined in
[index.ts:33](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L33) [index.ts:36](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L36)
___ ___
@@ -38,4 +38,4 @@ ___
#### Defined in #### Defined in
[index.ts:35](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L35) [index.ts:38](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L38)

View File

@@ -0,0 +1,34 @@
[vectordb](../README.md) / [Exports](../modules.md) / CleanupStats
# Interface: CleanupStats
## Table of contents
### Properties
- [bytesRemoved](CleanupStats.md#bytesremoved)
- [oldVersions](CleanupStats.md#oldversions)
## Properties
### bytesRemoved
**bytesRemoved**: `number`
The number of bytes removed from disk.
#### Defined in
[index.ts:637](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L637)
___
### oldVersions
**oldVersions**: `number`
The number of old table versions removed.
#### Defined in
[index.ts:641](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L641)

View File

@@ -0,0 +1,62 @@
[vectordb](../README.md) / [Exports](../modules.md) / CompactionMetrics
# Interface: CompactionMetrics
## Table of contents
### Properties
- [filesAdded](CompactionMetrics.md#filesadded)
- [filesRemoved](CompactionMetrics.md#filesremoved)
- [fragmentsAdded](CompactionMetrics.md#fragmentsadded)
- [fragmentsRemoved](CompactionMetrics.md#fragmentsremoved)
## Properties
### filesAdded
**filesAdded**: `number`
The number of files added. This is typically equal to the number of
fragments added.
#### Defined in
[index.ts:692](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L692)
___
### filesRemoved
**filesRemoved**: `number`
The number of files that were removed. Each fragment may have more than one
file.
#### Defined in
[index.ts:687](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L687)
___
### fragmentsAdded
**fragmentsAdded**: `number`
The number of new fragments that were created.
#### Defined in
[index.ts:682](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L682)
___
### fragmentsRemoved
**fragmentsRemoved**: `number`
The number of fragments that were removed.
#### Defined in
[index.ts:678](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L678)

View File

@@ -0,0 +1,80 @@
[vectordb](../README.md) / [Exports](../modules.md) / CompactionOptions
# Interface: CompactionOptions
## Table of contents
### Properties
- [materializeDeletions](CompactionOptions.md#materializedeletions)
- [materializeDeletionsThreshold](CompactionOptions.md#materializedeletionsthreshold)
- [maxRowsPerGroup](CompactionOptions.md#maxrowspergroup)
- [numThreads](CompactionOptions.md#numthreads)
- [targetRowsPerFragment](CompactionOptions.md#targetrowsperfragment)
## Properties
### materializeDeletions
`Optional` **materializeDeletions**: `boolean`
If true, fragments that have rows that are deleted may be compacted to
remove the deleted rows. This can improve the performance of queries.
Default is true.
#### Defined in
[index.ts:660](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L660)
___
### materializeDeletionsThreshold
`Optional` **materializeDeletionsThreshold**: `number`
A number between 0 and 1, representing the proportion of rows that must be
marked deleted before a fragment is a candidate for compaction to remove
the deleted rows. Default is 10%.
#### Defined in
[index.ts:666](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L666)
___
### maxRowsPerGroup
`Optional` **maxRowsPerGroup**: `number`
The maximum number of rows per group. Defaults to 1024.
#### Defined in
[index.ts:654](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L654)
___
### numThreads
`Optional` **numThreads**: `number`
The number of threads to use for compaction. If not provided, defaults to
the number of cores on the machine.
#### Defined in
[index.ts:671](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L671)
___
### targetRowsPerFragment
`Optional` **targetRowsPerFragment**: `number`
The number of rows per fragment to target. Fragments that have fewer rows
will be compacted into adjacent fragments to produce larger fragments.
Defaults to 1024 * 1024.
#### Defined in
[index.ts:650](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L650)

View File

@@ -19,7 +19,6 @@ Connection could be local against filesystem or remote against a server.
### Methods ### Methods
- [createTable](Connection.md#createtable) - [createTable](Connection.md#createtable)
- [createTableArrow](Connection.md#createtablearrow)
- [dropTable](Connection.md#droptable) - [dropTable](Connection.md#droptable)
- [openTable](Connection.md#opentable) - [openTable](Connection.md#opentable)
- [tableNames](Connection.md#tablenames) - [tableNames](Connection.md#tablenames)
@@ -32,13 +31,76 @@ Connection could be local against filesystem or remote against a server.
#### Defined in #### Defined in
[index.ts:70](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L70) [index.ts:125](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L125)
## Methods ## Methods
### createTable ### createTable
**createTable**<`T`\>(`name`, `data`, `mode?`, `embeddings?`): `Promise`<[`Table`](Table.md)<`T`\>\> **createTable**\<`T`\>(`«destructured»`): `Promise`\<[`Table`](Table.md)\<`T`\>\>
Creates a new Table, optionally initializing it with new data.
#### Type parameters
| Name |
| :------ |
| `T` |
#### Parameters
| Name | Type |
| :------ | :------ |
| `«destructured»` | [`CreateTableOptions`](CreateTableOptions.md)\<`T`\> |
#### Returns
`Promise`\<[`Table`](Table.md)\<`T`\>\>
#### Defined in
[index.ts:146](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L146)
**createTable**(`name`, `data`): `Promise`\<[`Table`](Table.md)\<`number`[]\>\>
Creates a new Table and initialize it with new data.
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `name` | `string` | The name of the table. |
| `data` | `Record`\<`string`, `unknown`\>[] | Non-empty Array of Records to be inserted into the table |
#### Returns
`Promise`\<[`Table`](Table.md)\<`number`[]\>\>
#### Defined in
[index.ts:154](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L154)
**createTable**(`name`, `data`, `options`): `Promise`\<[`Table`](Table.md)\<`number`[]\>\>
Creates a new Table and initialize it with new data.
#### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `name` | `string` | The name of the table. |
| `data` | `Record`\<`string`, `unknown`\>[] | Non-empty Array of Records to be inserted into the table |
| `options` | [`WriteOptions`](WriteOptions.md) | The write options to use when creating the table. |
#### Returns
`Promise`\<[`Table`](Table.md)\<`number`[]\>\>
#### Defined in
[index.ts:163](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L163)
**createTable**\<`T`\>(`name`, `data`, `embeddings`): `Promise`\<[`Table`](Table.md)\<`T`\>\>
Creates a new Table and initialize it with new data. Creates a new Table and initialize it with new data.
@@ -53,44 +115,49 @@ Creates a new Table and initialize it with new data.
| Name | Type | Description | | Name | Type | Description |
| :------ | :------ | :------ | | :------ | :------ | :------ |
| `name` | `string` | The name of the table. | | `name` | `string` | The name of the table. |
| `data` | `Record`<`string`, `unknown`\>[] | Non-empty Array of Records to be inserted into the table | | `data` | `Record`\<`string`, `unknown`\>[] | Non-empty Array of Records to be inserted into the table |
| `mode?` | [`WriteMode`](../enums/WriteMode.md) | The write mode to use when creating the table. | | `embeddings` | [`EmbeddingFunction`](EmbeddingFunction.md)\<`T`\> | An embedding function to use on this table |
| `embeddings?` | [`EmbeddingFunction`](EmbeddingFunction.md)<`T`\> | An embedding function to use on this table |
#### Returns #### Returns
`Promise`<[`Table`](Table.md)<`T`\>\> `Promise`\<[`Table`](Table.md)\<`T`\>\>
#### Defined in #### Defined in
[index.ts:90](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L90) [index.ts:172](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L172)
___ **createTable**\<`T`\>(`name`, `data`, `embeddings`, `options`): `Promise`\<[`Table`](Table.md)\<`T`\>\>
### createTableArrow Creates a new Table and initialize it with new data.
**createTableArrow**(`name`, `table`): `Promise`<[`Table`](Table.md)<`number`[]\>\> #### Type parameters
| Name |
| :------ |
| `T` |
#### Parameters #### Parameters
| Name | Type | | Name | Type | Description |
| :------ | :------ | | :------ | :------ | :------ |
| `name` | `string` | | `name` | `string` | The name of the table. |
| `table` | `Table`<`any`\> | | `data` | `Record`\<`string`, `unknown`\>[] | Non-empty Array of Records to be inserted into the table |
| `embeddings` | [`EmbeddingFunction`](EmbeddingFunction.md)\<`T`\> | An embedding function to use on this table |
| `options` | [`WriteOptions`](WriteOptions.md) | The write options to use when creating the table. |
#### Returns #### Returns
`Promise`<[`Table`](Table.md)<`number`[]\>\> `Promise`\<[`Table`](Table.md)\<`T`\>\>
#### Defined in #### Defined in
[index.ts:92](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L92) [index.ts:181](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L181)
___ ___
### dropTable ### dropTable
**dropTable**(`name`): `Promise`<`void`\> **dropTable**(`name`): `Promise`\<`void`\>
Drop an existing table. Drop an existing table.
@@ -102,17 +169,17 @@ Drop an existing table.
#### Returns #### Returns
`Promise`<`void`\> `Promise`\<`void`\>
#### Defined in #### Defined in
[index.ts:98](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L98) [index.ts:187](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L187)
___ ___
### openTable ### openTable
**openTable**<`T`\>(`name`, `embeddings?`): `Promise`<[`Table`](Table.md)<`T`\>\> **openTable**\<`T`\>(`name`, `embeddings?`): `Promise`\<[`Table`](Table.md)\<`T`\>\>
Open a table in the database. Open a table in the database.
@@ -127,26 +194,26 @@ Open a table in the database.
| Name | Type | Description | | Name | Type | Description |
| :------ | :------ | :------ | | :------ | :------ | :------ |
| `name` | `string` | The name of the table. | | `name` | `string` | The name of the table. |
| `embeddings?` | [`EmbeddingFunction`](EmbeddingFunction.md)<`T`\> | An embedding function to use on this table | | `embeddings?` | [`EmbeddingFunction`](EmbeddingFunction.md)\<`T`\> | An embedding function to use on this table |
#### Returns #### Returns
`Promise`<[`Table`](Table.md)<`T`\>\> `Promise`\<[`Table`](Table.md)\<`T`\>\>
#### Defined in #### Defined in
[index.ts:80](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L80) [index.ts:135](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L135)
___ ___
### tableNames ### tableNames
**tableNames**(): `Promise`<`string`[]\> **tableNames**(): `Promise`\<`string`[]\>
#### Returns #### Returns
`Promise`<`string`[]\> `Promise`\<`string`[]\>
#### Defined in #### Defined in
[index.ts:72](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L72) [index.ts:127](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L127)

View File

@@ -6,18 +6,62 @@
### Properties ### Properties
- [apiKey](ConnectionOptions.md#apikey)
- [awsCredentials](ConnectionOptions.md#awscredentials) - [awsCredentials](ConnectionOptions.md#awscredentials)
- [awsRegion](ConnectionOptions.md#awsregion)
- [hostOverride](ConnectionOptions.md#hostoverride)
- [region](ConnectionOptions.md#region)
- [uri](ConnectionOptions.md#uri) - [uri](ConnectionOptions.md#uri)
## Properties ## Properties
### apiKey
`Optional` **apiKey**: `string`
#### Defined in
[index.ts:49](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L49)
___
### awsCredentials ### awsCredentials
`Optional` **awsCredentials**: [`AwsCredentials`](AwsCredentials.md) `Optional` **awsCredentials**: [`AwsCredentials`](AwsCredentials.md)
#### Defined in #### Defined in
[index.ts:40](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L40) [index.ts:44](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L44)
___
### awsRegion
`Optional` **awsRegion**: `string`
#### Defined in
[index.ts:46](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L46)
___
### hostOverride
`Optional` **hostOverride**: `string`
#### Defined in
[index.ts:54](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L54)
___
### region
`Optional` **region**: `string`
#### Defined in
[index.ts:51](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L51)
___ ___
@@ -27,4 +71,4 @@ ___
#### Defined in #### Defined in
[index.ts:39](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L39) [index.ts:42](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L42)

View File

@@ -0,0 +1,69 @@
[vectordb](../README.md) / [Exports](../modules.md) / CreateTableOptions
# Interface: CreateTableOptions\<T\>
## Type parameters
| Name |
| :------ |
| `T` |
## Table of contents
### Properties
- [data](CreateTableOptions.md#data)
- [embeddingFunction](CreateTableOptions.md#embeddingfunction)
- [name](CreateTableOptions.md#name)
- [schema](CreateTableOptions.md#schema)
- [writeOptions](CreateTableOptions.md#writeoptions)
## Properties
### data
`Optional` **data**: `Table`\<`any`\> \| `Record`\<`string`, `unknown`\>[]
#### Defined in
[index.ts:79](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L79)
___
### embeddingFunction
`Optional` **embeddingFunction**: [`EmbeddingFunction`](EmbeddingFunction.md)\<`T`\>
#### Defined in
[index.ts:85](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L85)
___
### name
**name**: `string`
#### Defined in
[index.ts:76](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L76)
___
### schema
`Optional` **schema**: `Schema`\<`any`\>
#### Defined in
[index.ts:82](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L82)
___
### writeOptions
`Optional` **writeOptions**: [`WriteOptions`](WriteOptions.md)
#### Defined in
[index.ts:88](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L88)

View File

@@ -1,6 +1,6 @@
[vectordb](../README.md) / [Exports](../modules.md) / EmbeddingFunction [vectordb](../README.md) / [Exports](../modules.md) / EmbeddingFunction
# Interface: EmbeddingFunction<T\> # Interface: EmbeddingFunction\<T\>
An embedding function that automatically creates vector representation for a given column. An embedding function that automatically creates vector representation for a given column.
@@ -25,11 +25,11 @@ An embedding function that automatically creates vector representation for a giv
### embed ### embed
**embed**: (`data`: `T`[]) => `Promise`<`number`[][]\> **embed**: (`data`: `T`[]) => `Promise`\<`number`[][]\>
#### Type declaration #### Type declaration
▸ (`data`): `Promise`<`number`[][]\> ▸ (`data`): `Promise`\<`number`[][]\>
Creates a vector representation for the given values. Creates a vector representation for the given values.
@@ -41,11 +41,11 @@ Creates a vector representation for the given values.
##### Returns ##### Returns
`Promise`<`number`[][]\> `Promise`\<`number`[][]\>
#### Defined in #### Defined in
[embedding/embedding_function.ts:27](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/embedding/embedding_function.ts#L27) [embedding/embedding_function.ts:27](https://github.com/lancedb/lancedb/blob/7856a94/node/src/embedding/embedding_function.ts#L27)
___ ___
@@ -57,4 +57,4 @@ The name of the column that will be used as input for the Embedding Function.
#### Defined in #### Defined in
[embedding/embedding_function.ts:22](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/embedding/embedding_function.ts#L22) [embedding/embedding_function.ts:22](https://github.com/lancedb/lancedb/blob/7856a94/node/src/embedding/embedding_function.ts#L22)

View File

@@ -0,0 +1,30 @@
[vectordb](../README.md) / [Exports](../modules.md) / IndexStats
# Interface: IndexStats
## Table of contents
### Properties
- [numIndexedRows](IndexStats.md#numindexedrows)
- [numUnindexedRows](IndexStats.md#numunindexedrows)
## Properties
### numIndexedRows
**numIndexedRows**: ``null`` \| `number`
#### Defined in
[index.ts:344](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L344)
___
### numUnindexedRows
• **numUnindexedRows**: ``null`` \| `number`
#### Defined in
[index.ts:345](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L345)

View File

@@ -7,6 +7,7 @@
### Properties ### Properties
- [column](IvfPQIndexConfig.md#column) - [column](IvfPQIndexConfig.md#column)
- [index\_cache\_size](IvfPQIndexConfig.md#index_cache_size)
- [index\_name](IvfPQIndexConfig.md#index_name) - [index\_name](IvfPQIndexConfig.md#index_name)
- [max\_iters](IvfPQIndexConfig.md#max_iters) - [max\_iters](IvfPQIndexConfig.md#max_iters)
- [max\_opq\_iters](IvfPQIndexConfig.md#max_opq_iters) - [max\_opq\_iters](IvfPQIndexConfig.md#max_opq_iters)
@@ -28,7 +29,19 @@ The column to be indexed
#### Defined in #### Defined in
[index.ts:382](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L382) [index.ts:701](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L701)
___
### index\_cache\_size
`Optional` **index\_cache\_size**: `number`
Cache size of the index
#### Defined in
[index.ts:750](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L750)
___ ___
@@ -40,7 +53,7 @@ A unique name for the index
#### Defined in #### Defined in
[index.ts:387](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L387) [index.ts:706](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L706)
___ ___
@@ -52,7 +65,7 @@ The max number of iterations for kmeans training.
#### Defined in #### Defined in
[index.ts:402](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L402) [index.ts:721](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L721)
___ ___
@@ -64,7 +77,7 @@ Max number of iterations to train OPQ, if `use_opq` is true.
#### Defined in #### Defined in
[index.ts:421](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L421) [index.ts:740](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L740)
___ ___
@@ -76,7 +89,7 @@ Metric type, L2 or Cosine
#### Defined in #### Defined in
[index.ts:392](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L392) [index.ts:711](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L711)
___ ___
@@ -88,7 +101,7 @@ The number of bits to present one PQ centroid.
#### Defined in #### Defined in
[index.ts:416](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L416) [index.ts:735](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L735)
___ ___
@@ -100,7 +113,7 @@ The number of partitions this index
#### Defined in #### Defined in
[index.ts:397](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L397) [index.ts:716](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L716)
___ ___
@@ -112,7 +125,7 @@ Number of subvectors to build PQ code
#### Defined in #### Defined in
[index.ts:412](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L412) [index.ts:731](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L731)
___ ___
@@ -124,7 +137,7 @@ Replace an existing index with the same name if it exists.
#### Defined in #### Defined in
[index.ts:426](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L426) [index.ts:745](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L745)
___ ___
@@ -134,7 +147,7 @@ ___
#### Defined in #### Defined in
[index.ts:428](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L428) [index.ts:752](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L752)
___ ___
@@ -146,4 +159,4 @@ Train as optimized product quantization.
#### Defined in #### Defined in
[index.ts:407](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L407) [index.ts:726](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L726)

View File

@@ -1,6 +1,6 @@
[vectordb](../README.md) / [Exports](../modules.md) / Table [vectordb](../README.md) / [Exports](../modules.md) / Table
# Interface: Table<T\> # Interface: Table\<T\>
A LanceDB Table is the collection of Records. Each Record has one or more vector fields. A LanceDB Table is the collection of Records. Each Record has one or more vector fields.
@@ -22,19 +22,22 @@ A LanceDB Table is the collection of Records. Each Record has one or more vector
- [countRows](Table.md#countrows) - [countRows](Table.md#countrows)
- [createIndex](Table.md#createindex) - [createIndex](Table.md#createindex)
- [delete](Table.md#delete) - [delete](Table.md#delete)
- [indexStats](Table.md#indexstats)
- [listIndices](Table.md#listindices)
- [name](Table.md#name) - [name](Table.md#name)
- [overwrite](Table.md#overwrite) - [overwrite](Table.md#overwrite)
- [search](Table.md#search) - [search](Table.md#search)
- [update](Table.md#update)
## Properties ## Properties
### add ### add
**add**: (`data`: `Record`<`string`, `unknown`\>[]) => `Promise`<`number`\> **add**: (`data`: `Record`\<`string`, `unknown`\>[]) => `Promise`\<`number`\>
#### Type declaration #### Type declaration
▸ (`data`): `Promise`<`number`\> ▸ (`data`): `Promise`\<`number`\>
Insert records into this Table. Insert records into this Table.
@@ -42,54 +45,50 @@ Insert records into this Table.
| Name | Type | Description | | Name | Type | Description |
| :------ | :------ | :------ | | :------ | :------ | :------ |
| `data` | `Record`<`string`, `unknown`\>[] | Records to be inserted into the Table | | `data` | `Record`\<`string`, `unknown`\>[] | Records to be inserted into the Table |
##### Returns ##### Returns
`Promise`<`number`\> `Promise`\<`number`\>
The number of rows added to the table The number of rows added to the table
#### Defined in #### Defined in
[index.ts:120](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L120) [index.ts:209](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L209)
___ ___
### countRows ### countRows
**countRows**: () => `Promise`<`number`\> **countRows**: () => `Promise`\<`number`\>
#### Type declaration #### Type declaration
▸ (): `Promise`<`number`\> ▸ (): `Promise`\<`number`\>
Returns the number of rows in this table. Returns the number of rows in this table.
##### Returns ##### Returns
`Promise`<`number`\> `Promise`\<`number`\>
#### Defined in #### Defined in
[index.ts:140](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L140) [index.ts:229](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L229)
___ ___
### createIndex ### createIndex
**createIndex**: (`indexParams`: [`IvfPQIndexConfig`](IvfPQIndexConfig.md)) => `Promise`<`any`\> **createIndex**: (`indexParams`: [`IvfPQIndexConfig`](IvfPQIndexConfig.md)) => `Promise`\<`any`\>
#### Type declaration #### Type declaration
▸ (`indexParams`): `Promise`<`any`\> ▸ (`indexParams`): `Promise`\<`any`\>
Create an ANN index on this Table vector index. Create an ANN index on this Table vector index.
**`See`**
VectorIndexParams.
##### Parameters ##### Parameters
| Name | Type | Description | | Name | Type | Description |
@@ -98,27 +97,41 @@ VectorIndexParams.
##### Returns ##### Returns
`Promise`<`any`\> `Promise`\<`any`\>
**`See`**
VectorIndexParams.
#### Defined in #### Defined in
[index.ts:135](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L135) [index.ts:224](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L224)
___ ___
### delete ### delete
**delete**: (`filter`: `string`) => `Promise`<`void`\> **delete**: (`filter`: `string`) => `Promise`\<`void`\>
#### Type declaration #### Type declaration
▸ (`filter`): `Promise`<`void`\> ▸ (`filter`): `Promise`\<`void`\>
Delete rows from this table. Delete rows from this table.
This can be used to delete a single row, many rows, all rows, or This can be used to delete a single row, many rows, all rows, or
sometimes no rows (if your predicate matches nothing). sometimes no rows (if your predicate matches nothing).
##### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `filter` | `string` | A filter in the same format used by a sql WHERE clause. The filter must not be empty. |
##### Returns
`Promise`\<`void`\>
**`Examples`** **`Examples`**
```ts ```ts
@@ -142,19 +155,55 @@ await tbl.delete(`id IN (${to_remove.join(",")})`)
await tbl.countRows() // Returns 1 await tbl.countRows() // Returns 1
``` ```
#### Defined in
[index.ts:263](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L263)
___
### indexStats
**indexStats**: (`indexUuid`: `string`) => `Promise`\<[`IndexStats`](IndexStats.md)\>
#### Type declaration
▸ (`indexUuid`): `Promise`\<[`IndexStats`](IndexStats.md)\>
Get statistics about an index.
##### Parameters ##### Parameters
| Name | Type | Description | | Name | Type |
| :------ | :------ | :------ | | :------ | :------ |
| `filter` | `string` | A filter in the same format used by a sql WHERE clause. The filter must not be empty. | | `indexUuid` | `string` |
##### Returns ##### Returns
`Promise`<`void`\> `Promise`\<[`IndexStats`](IndexStats.md)\>
#### Defined in #### Defined in
[index.ts:174](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L174) [index.ts:306](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L306)
___
### listIndices
**listIndices**: () => `Promise`\<[`VectorIndex`](VectorIndex.md)[]\>
#### Type declaration
▸ (): `Promise`\<[`VectorIndex`](VectorIndex.md)[]\>
List the indicies on this table.
##### Returns
`Promise`\<[`VectorIndex`](VectorIndex.md)[]\>
#### Defined in
[index.ts:301](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L301)
___ ___
@@ -164,17 +213,17 @@ ___
#### Defined in #### Defined in
[index.ts:106](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L106) [index.ts:195](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L195)
___ ___
### overwrite ### overwrite
**overwrite**: (`data`: `Record`<`string`, `unknown`\>[]) => `Promise`<`number`\> **overwrite**: (`data`: `Record`\<`string`, `unknown`\>[]) => `Promise`\<`number`\>
#### Type declaration #### Type declaration
▸ (`data`): `Promise`<`number`\> ▸ (`data`): `Promise`\<`number`\>
Insert records into this Table, replacing its contents. Insert records into this Table, replacing its contents.
@@ -182,27 +231,27 @@ Insert records into this Table, replacing its contents.
| Name | Type | Description | | Name | Type | Description |
| :------ | :------ | :------ | | :------ | :------ | :------ |
| `data` | `Record`<`string`, `unknown`\>[] | Records to be inserted into the Table | | `data` | `Record`\<`string`, `unknown`\>[] | Records to be inserted into the Table |
##### Returns ##### Returns
`Promise`<`number`\> `Promise`\<`number`\>
The number of rows added to the table The number of rows added to the table
#### Defined in #### Defined in
[index.ts:128](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L128) [index.ts:217](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L217)
___ ___
### search ### search
**search**: (`query`: `T`) => [`Query`](../classes/Query.md)<`T`\> **search**: (`query`: `T`) => [`Query`](../classes/Query.md)\<`T`\>
#### Type declaration #### Type declaration
▸ (`query`): [`Query`](../classes/Query.md)<`T`\> ▸ (`query`): [`Query`](../classes/Query.md)\<`T`\>
Creates a search query to find the nearest neighbors of the given search term Creates a search query to find the nearest neighbors of the given search term
@@ -214,8 +263,59 @@ Creates a search query to find the nearest neighbors of the given search term
##### Returns ##### Returns
[`Query`](../classes/Query.md)<`T`\> [`Query`](../classes/Query.md)\<`T`\>
#### Defined in #### Defined in
[index.ts:112](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L112) [index.ts:201](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L201)
___
### update
**update**: (`args`: [`UpdateArgs`](UpdateArgs.md) \| [`UpdateSqlArgs`](UpdateSqlArgs.md)) => `Promise`\<`void`\>
#### Type declaration
▸ (`args`): `Promise`\<`void`\>
Update rows in this table.
This can be used to update a single row, many rows, all rows, or
sometimes no rows (if your predicate matches nothing).
##### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `args` | [`UpdateArgs`](UpdateArgs.md) \| [`UpdateSqlArgs`](UpdateSqlArgs.md) | see [UpdateArgs](UpdateArgs.md) and [UpdateSqlArgs](UpdateSqlArgs.md) for more details |
##### Returns
`Promise`\<`void`\>
**`Examples`**
```ts
const con = await lancedb.connect("./.lancedb")
const data = [
{id: 1, vector: [3, 3], name: 'Ye'},
{id: 2, vector: [4, 4], name: 'Mike'},
];
const tbl = await con.createTable("my_table", data)
await tbl.update({
filter: "id = 2",
updates: { vector: [2, 2], name: "Michael" },
})
let results = await tbl.search([1, 1]).execute();
// Returns [
// {id: 2, vector: [2, 2], name: 'Michael'}
// {id: 1, vector: [3, 3], name: 'Ye'}
// ]
```
#### Defined in
[index.ts:296](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L296)

View File

@@ -0,0 +1,36 @@
[vectordb](../README.md) / [Exports](../modules.md) / UpdateArgs
# Interface: UpdateArgs
## Table of contents
### Properties
- [values](UpdateArgs.md#values)
- [where](UpdateArgs.md#where)
## Properties
### values
**values**: `Record`\<`string`, `Literal`\>
A key-value map of updates. The keys are the column names, and the values are the
new values to set
#### Defined in
[index.ts:320](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L320)
___
### where
`Optional` **where**: `string`
A filter in the same format used by a sql WHERE clause. The filter may be empty,
in which case all rows will be updated.
#### Defined in
[index.ts:314](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L314)

View File

@@ -0,0 +1,36 @@
[vectordb](../README.md) / [Exports](../modules.md) / UpdateSqlArgs
# Interface: UpdateSqlArgs
## Table of contents
### Properties
- [valuesSql](UpdateSqlArgs.md#valuessql)
- [where](UpdateSqlArgs.md#where)
## Properties
### valuesSql
**valuesSql**: `Record`\<`string`, `string`\>
A key-value map of updates. The keys are the column names, and the values are the
new values to set as SQL expressions.
#### Defined in
[index.ts:334](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L334)
___
### where
`Optional` **where**: `string`
A filter in the same format used by a sql WHERE clause. The filter may be empty,
in which case all rows will be updated.
#### Defined in
[index.ts:328](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L328)

View File

@@ -0,0 +1,41 @@
[vectordb](../README.md) / [Exports](../modules.md) / VectorIndex
# Interface: VectorIndex
## Table of contents
### Properties
- [columns](VectorIndex.md#columns)
- [name](VectorIndex.md#name)
- [uuid](VectorIndex.md#uuid)
## Properties
### columns
**columns**: `string`[]
#### Defined in
[index.ts:338](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L338)
___
### name
**name**: `string`
#### Defined in
[index.ts:339](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L339)
___
### uuid
**uuid**: `string`
#### Defined in
[index.ts:340](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L340)

View File

@@ -0,0 +1,27 @@
[vectordb](../README.md) / [Exports](../modules.md) / WriteOptions
# Interface: WriteOptions
Write options when creating a Table.
## Implemented by
- [`DefaultWriteOptions`](../classes/DefaultWriteOptions.md)
## Table of contents
### Properties
- [writeMode](WriteOptions.md#writemode)
## Properties
### writeMode
`Optional` **writeMode**: [`WriteMode`](../enums/WriteMode.md)
A [WriteMode](../enums/WriteMode.md) to use on this operation
#### Defined in
[index.ts:774](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L774)

View File

@@ -11,6 +11,7 @@
### Classes ### Classes
- [DefaultWriteOptions](classes/DefaultWriteOptions.md)
- [LocalConnection](classes/LocalConnection.md) - [LocalConnection](classes/LocalConnection.md)
- [LocalTable](classes/LocalTable.md) - [LocalTable](classes/LocalTable.md)
- [OpenAIEmbeddingFunction](classes/OpenAIEmbeddingFunction.md) - [OpenAIEmbeddingFunction](classes/OpenAIEmbeddingFunction.md)
@@ -19,11 +20,20 @@
### Interfaces ### Interfaces
- [AwsCredentials](interfaces/AwsCredentials.md) - [AwsCredentials](interfaces/AwsCredentials.md)
- [CleanupStats](interfaces/CleanupStats.md)
- [CompactionMetrics](interfaces/CompactionMetrics.md)
- [CompactionOptions](interfaces/CompactionOptions.md)
- [Connection](interfaces/Connection.md) - [Connection](interfaces/Connection.md)
- [ConnectionOptions](interfaces/ConnectionOptions.md) - [ConnectionOptions](interfaces/ConnectionOptions.md)
- [CreateTableOptions](interfaces/CreateTableOptions.md)
- [EmbeddingFunction](interfaces/EmbeddingFunction.md) - [EmbeddingFunction](interfaces/EmbeddingFunction.md)
- [IndexStats](interfaces/IndexStats.md)
- [IvfPQIndexConfig](interfaces/IvfPQIndexConfig.md) - [IvfPQIndexConfig](interfaces/IvfPQIndexConfig.md)
- [Table](interfaces/Table.md) - [Table](interfaces/Table.md)
- [UpdateArgs](interfaces/UpdateArgs.md)
- [UpdateSqlArgs](interfaces/UpdateSqlArgs.md)
- [VectorIndex](interfaces/VectorIndex.md)
- [WriteOptions](interfaces/WriteOptions.md)
### Type Aliases ### Type Aliases
@@ -32,6 +42,7 @@
### Functions ### Functions
- [connect](modules.md#connect) - [connect](modules.md#connect)
- [isWriteOptions](modules.md#iswriteoptions)
## Type Aliases ## Type Aliases
@@ -41,13 +52,13 @@
#### Defined in #### Defined in
[index.ts:431](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L431) [index.ts:755](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L755)
## Functions ## Functions
### connect ### connect
**connect**(`uri`): `Promise`<[`Connection`](interfaces/Connection.md)\> **connect**(`uri`): `Promise`\<[`Connection`](interfaces/Connection.md)\>
Connect to a LanceDB instance at the given URI Connect to a LanceDB instance at the given URI
@@ -59,24 +70,44 @@ Connect to a LanceDB instance at the given URI
#### Returns #### Returns
`Promise`<[`Connection`](interfaces/Connection.md)\> `Promise`\<[`Connection`](interfaces/Connection.md)\>
#### Defined in #### Defined in
[index.ts:47](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L47) [index.ts:95](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L95)
**connect**(`opts`): `Promise`<[`Connection`](interfaces/Connection.md)\> **connect**(`opts`): `Promise`\<[`Connection`](interfaces/Connection.md)\>
#### Parameters #### Parameters
| Name | Type | | Name | Type |
| :------ | :------ | | :------ | :------ |
| `opts` | `Partial`<[`ConnectionOptions`](interfaces/ConnectionOptions.md)\> | | `opts` | `Partial`\<[`ConnectionOptions`](interfaces/ConnectionOptions.md)\> |
#### Returns #### Returns
`Promise`<[`Connection`](interfaces/Connection.md)\> `Promise`\<[`Connection`](interfaces/Connection.md)\>
#### Defined in #### Defined in
[index.ts:48](https://github.com/lancedb/lancedb/blob/b1eeb90/node/src/index.ts#L48) [index.ts:96](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L96)
___
### isWriteOptions
**isWriteOptions**(`value`): value is WriteOptions
#### Parameters
| Name | Type |
| :------ | :------ |
| `value` | `any` |
#### Returns
value is WriteOptions
#### Defined in
[index.ts:781](https://github.com/lancedb/lancedb/blob/7856a94/node/src/index.ts#L781)

View File

@@ -119,3 +119,100 @@ This is why it is often called **Approximate Nearest Neighbors (ANN)** search, w
always returns 100% recall. always returns 100% recall.
See [ANN Index](ann_indexes.md) for more details. See [ANN Index](ann_indexes.md) for more details.
### Output formats
LanceDB returns results in many different formats commonly used in python.
Let's create a LanceDB table with a nested schema:
```python
from datetime import datetime
import lancedb
from lancedb.pydantic import LanceModel, Vector
import numpy as np
from pydantic import BaseModel
uri = "data/sample-lancedb-nested"
class Metadata(BaseModel):
source: str
timestamp: datetime
class Document(BaseModel):
content: str
meta: Metadata
class LanceSchema(LanceModel):
id: str
vector: Vector(1536)
payload: Document
# Let's add 100 sample rows to our dataset
data = [LanceSchema(
id=f"id{i}",
vector=np.random.randn(1536),
payload=Document(
content=f"document{i}", meta=Metadata(source=f"source{i%10}", timestamp=datetime.now())
),
) for i in range(100)]
tbl = db.create_table("documents", data=data)
```
#### As a pyarrow table
Using `to_arrow()` we can get the results back as a pyarrow Table.
This result table has the same columns as the LanceDB table, with
the addition of an `_distance` column for vector search or a `score`
column for full text search.
```python
tbl.search(np.random.randn(1536)).to_arrow()
```
#### As a pandas dataframe
You can also get the results as a pandas dataframe.
```python
tbl.search(np.random.randn(1536)).to_pandas()
```
While other formats like Arrow/Pydantic/Python dicts have a natural
way to handle nested schemas, pandas can only store nested data as a
python dict column, which makes it difficult to support nested references.
So for convenience, you can also tell LanceDB to flatten a nested schema
when creating the pandas dataframe.
```python
tbl.search(np.random.randn(1536)).to_pandas(flatten=True)
```
If your table has a deeply nested struct, you can control how many levels
of nesting to flatten by passing in a positive integer.
```python
tbl.search(np.random.randn(1536)).to_pandas(flatten=1)
```
#### As a list of python dicts
You can of course return results as a list of python dicts.
```python
tbl.search(np.random.randn(1536)).to_list()
```
#### As a list of pydantic models
We can add data using pydantic models, and we can certainly
retrieve results as pydantic models
```python
tbl.search(np.random.randn(1536)).to_pydantic(LanceSchema)
```
Note that in this case the extra `_distance` field is discarded since
it's not part of the LanceSchema.

View File

@@ -1,7 +1,7 @@
# SQL filters # SQL filters
LanceDB embraces the utilization of standard SQL expressions as predicates for hybrid LanceDB embraces the utilization of standard SQL expressions as predicates for hybrid
filters. It can be used during hybrid vector search and deletion operations. filters. It can be used during hybrid vector search, update, and deletion operations.
Currently, Lance supports a growing list of expressions. Currently, Lance supports a growing list of expressions.

74
node/package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "vectordb", "name": "vectordb",
"version": "0.3.9", "version": "0.4.0",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "vectordb", "name": "vectordb",
"version": "0.3.9", "version": "0.4.0",
"cpu": [ "cpu": [
"x64", "x64",
"arm64" "arm64"
@@ -53,11 +53,11 @@
"uuid": "^9.0.0" "uuid": "^9.0.0"
}, },
"optionalDependencies": { "optionalDependencies": {
"@lancedb/vectordb-darwin-arm64": "0.3.9", "@lancedb/vectordb-darwin-arm64": "0.4.0",
"@lancedb/vectordb-darwin-x64": "0.3.9", "@lancedb/vectordb-darwin-x64": "0.4.0",
"@lancedb/vectordb-linux-arm64-gnu": "0.3.9", "@lancedb/vectordb-linux-arm64-gnu": "0.4.0",
"@lancedb/vectordb-linux-x64-gnu": "0.3.9", "@lancedb/vectordb-linux-x64-gnu": "0.4.0",
"@lancedb/vectordb-win32-x64-msvc": "0.3.9" "@lancedb/vectordb-win32-x64-msvc": "0.4.0"
} }
}, },
"node_modules/@apache-arrow/ts": { "node_modules/@apache-arrow/ts": {
@@ -317,9 +317,9 @@
} }
}, },
"node_modules/@lancedb/vectordb-darwin-arm64": { "node_modules/@lancedb/vectordb-darwin-arm64": {
"version": "0.3.9", "version": "0.4.0",
"resolved": "https://registry.npmjs.org/@lancedb/vectordb-darwin-arm64/-/vectordb-darwin-arm64-0.3.9.tgz", "resolved": "https://registry.npmjs.org/@lancedb/vectordb-darwin-arm64/-/vectordb-darwin-arm64-0.4.0.tgz",
"integrity": "sha512-irtAdfSRQDcfnMnB8T7D0atLFfu1MMZZ1JaxMKu24DDZ8e4IMYKUplxwvWni3241yA9yDE/pliRZCNQbQCEfrg==", "integrity": "sha512-cP6zGtBWXEcJHCI4uLNIP5ILtRvexvwmL8Uri1dnHG8dT8g12Ykug3BHO6Wt6wp/xASd2jJRIF/VAJsN9IeP1A==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -329,9 +329,9 @@
] ]
}, },
"node_modules/@lancedb/vectordb-darwin-x64": { "node_modules/@lancedb/vectordb-darwin-x64": {
"version": "0.3.9", "version": "0.4.0",
"resolved": "https://registry.npmjs.org/@lancedb/vectordb-darwin-x64/-/vectordb-darwin-x64-0.3.9.tgz", "resolved": "https://registry.npmjs.org/@lancedb/vectordb-darwin-x64/-/vectordb-darwin-x64-0.4.0.tgz",
"integrity": "sha512-4xXQoPheyIl1P5kRoKmZtaAHFrYdL9pw5yq+r6ewIx0TCemN4LSvzSUTqM5nZl3QPU8FeL0CGD8Gt2gMU0HQ2A==", "integrity": "sha512-ig0gV5ol1sFe2lb1HOatK0rizyj9I91WbnH79i7OdUl3nAQIcWm70CnxrPLtx0DS2NTGh2kFJbYCWcaUlu6YfA==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -341,9 +341,9 @@
] ]
}, },
"node_modules/@lancedb/vectordb-linux-arm64-gnu": { "node_modules/@lancedb/vectordb-linux-arm64-gnu": {
"version": "0.3.9", "version": "0.4.0",
"resolved": "https://registry.npmjs.org/@lancedb/vectordb-linux-arm64-gnu/-/vectordb-linux-arm64-gnu-0.3.9.tgz", "resolved": "https://registry.npmjs.org/@lancedb/vectordb-linux-arm64-gnu/-/vectordb-linux-arm64-gnu-0.4.0.tgz",
"integrity": "sha512-WIxCZKnLeSlz0PGURtKSX6hJ4CYE2o5P+IFmmuWOWB1uNapQu6zOpea6rNxcRFHUA0IJdO02lVxVfn2hDX4SMg==", "integrity": "sha512-gMXIDT2kriAPDwWIRKXdaTCNdOeFGEok1S9Y30AOruHXddW1vCIo4JNJIYbBqHnwAeI4wI3ae6GRCFaf1UxO3g==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -353,9 +353,9 @@
] ]
}, },
"node_modules/@lancedb/vectordb-linux-x64-gnu": { "node_modules/@lancedb/vectordb-linux-x64-gnu": {
"version": "0.3.9", "version": "0.4.0",
"resolved": "https://registry.npmjs.org/@lancedb/vectordb-linux-x64-gnu/-/vectordb-linux-x64-gnu-0.3.9.tgz", "resolved": "https://registry.npmjs.org/@lancedb/vectordb-linux-x64-gnu/-/vectordb-linux-x64-gnu-0.4.0.tgz",
"integrity": "sha512-bQbcV9adKzYbJLNzDjk9OYsMnT2IjmieLfb4IQ1hj5IUoWfbg80Bd0+gZUnrmrhG6fe56TIriFZYQR9i7TSE9Q==", "integrity": "sha512-ZQ3lDrDSz1IKdx/mS9Lz08agFO+OD5oSFrrcFNCoT1+H93eS1mCLdmCoEARu3jKbx0tMs38l5J9yXZ2QmJye3w==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -365,9 +365,9 @@
] ]
}, },
"node_modules/@lancedb/vectordb-win32-x64-msvc": { "node_modules/@lancedb/vectordb-win32-x64-msvc": {
"version": "0.3.9", "version": "0.4.0",
"resolved": "https://registry.npmjs.org/@lancedb/vectordb-win32-x64-msvc/-/vectordb-win32-x64-msvc-0.3.9.tgz", "resolved": "https://registry.npmjs.org/@lancedb/vectordb-win32-x64-msvc/-/vectordb-win32-x64-msvc-0.4.0.tgz",
"integrity": "sha512-7EXI7P1QvAfgJNPWWBMDOkoJ696gSBAClcyEJNYg0JV21jVFZRwJVI3bZXflesWduFi/mTuzPkFFA68us1u19A==", "integrity": "sha512-toNcNwBRE1sdsSf5hr7W8QiqZ33csc/knVEek4CyvYkZHJGh4Z6WI+DJUIASo5wzUez4TX7qUPpRPL9HuaPMCg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -4869,33 +4869,33 @@
} }
}, },
"@lancedb/vectordb-darwin-arm64": { "@lancedb/vectordb-darwin-arm64": {
"version": "0.3.9", "version": "0.4.0",
"resolved": "https://registry.npmjs.org/@lancedb/vectordb-darwin-arm64/-/vectordb-darwin-arm64-0.3.9.tgz", "resolved": "https://registry.npmjs.org/@lancedb/vectordb-darwin-arm64/-/vectordb-darwin-arm64-0.4.0.tgz",
"integrity": "sha512-irtAdfSRQDcfnMnB8T7D0atLFfu1MMZZ1JaxMKu24DDZ8e4IMYKUplxwvWni3241yA9yDE/pliRZCNQbQCEfrg==", "integrity": "sha512-cP6zGtBWXEcJHCI4uLNIP5ILtRvexvwmL8Uri1dnHG8dT8g12Ykug3BHO6Wt6wp/xASd2jJRIF/VAJsN9IeP1A==",
"optional": true "optional": true
}, },
"@lancedb/vectordb-darwin-x64": { "@lancedb/vectordb-darwin-x64": {
"version": "0.3.9", "version": "0.4.0",
"resolved": "https://registry.npmjs.org/@lancedb/vectordb-darwin-x64/-/vectordb-darwin-x64-0.3.9.tgz", "resolved": "https://registry.npmjs.org/@lancedb/vectordb-darwin-x64/-/vectordb-darwin-x64-0.4.0.tgz",
"integrity": "sha512-4xXQoPheyIl1P5kRoKmZtaAHFrYdL9pw5yq+r6ewIx0TCemN4LSvzSUTqM5nZl3QPU8FeL0CGD8Gt2gMU0HQ2A==", "integrity": "sha512-ig0gV5ol1sFe2lb1HOatK0rizyj9I91WbnH79i7OdUl3nAQIcWm70CnxrPLtx0DS2NTGh2kFJbYCWcaUlu6YfA==",
"optional": true "optional": true
}, },
"@lancedb/vectordb-linux-arm64-gnu": { "@lancedb/vectordb-linux-arm64-gnu": {
"version": "0.3.9", "version": "0.4.0",
"resolved": "https://registry.npmjs.org/@lancedb/vectordb-linux-arm64-gnu/-/vectordb-linux-arm64-gnu-0.3.9.tgz", "resolved": "https://registry.npmjs.org/@lancedb/vectordb-linux-arm64-gnu/-/vectordb-linux-arm64-gnu-0.4.0.tgz",
"integrity": "sha512-WIxCZKnLeSlz0PGURtKSX6hJ4CYE2o5P+IFmmuWOWB1uNapQu6zOpea6rNxcRFHUA0IJdO02lVxVfn2hDX4SMg==", "integrity": "sha512-gMXIDT2kriAPDwWIRKXdaTCNdOeFGEok1S9Y30AOruHXddW1vCIo4JNJIYbBqHnwAeI4wI3ae6GRCFaf1UxO3g==",
"optional": true "optional": true
}, },
"@lancedb/vectordb-linux-x64-gnu": { "@lancedb/vectordb-linux-x64-gnu": {
"version": "0.3.9", "version": "0.4.0",
"resolved": "https://registry.npmjs.org/@lancedb/vectordb-linux-x64-gnu/-/vectordb-linux-x64-gnu-0.3.9.tgz", "resolved": "https://registry.npmjs.org/@lancedb/vectordb-linux-x64-gnu/-/vectordb-linux-x64-gnu-0.4.0.tgz",
"integrity": "sha512-bQbcV9adKzYbJLNzDjk9OYsMnT2IjmieLfb4IQ1hj5IUoWfbg80Bd0+gZUnrmrhG6fe56TIriFZYQR9i7TSE9Q==", "integrity": "sha512-ZQ3lDrDSz1IKdx/mS9Lz08agFO+OD5oSFrrcFNCoT1+H93eS1mCLdmCoEARu3jKbx0tMs38l5J9yXZ2QmJye3w==",
"optional": true "optional": true
}, },
"@lancedb/vectordb-win32-x64-msvc": { "@lancedb/vectordb-win32-x64-msvc": {
"version": "0.3.9", "version": "0.4.0",
"resolved": "https://registry.npmjs.org/@lancedb/vectordb-win32-x64-msvc/-/vectordb-win32-x64-msvc-0.3.9.tgz", "resolved": "https://registry.npmjs.org/@lancedb/vectordb-win32-x64-msvc/-/vectordb-win32-x64-msvc-0.4.0.tgz",
"integrity": "sha512-7EXI7P1QvAfgJNPWWBMDOkoJ696gSBAClcyEJNYg0JV21jVFZRwJVI3bZXflesWduFi/mTuzPkFFA68us1u19A==", "integrity": "sha512-toNcNwBRE1sdsSf5hr7W8QiqZ33csc/knVEek4CyvYkZHJGh4Z6WI+DJUIASo5wzUez4TX7qUPpRPL9HuaPMCg==",
"optional": true "optional": true
}, },
"@neon-rs/cli": { "@neon-rs/cli": {

View File

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

View File

@@ -744,6 +744,11 @@ export interface IvfPQIndexConfig {
*/ */
replace?: boolean replace?: boolean
/**
* Cache size of the index
*/
index_cache_size?: number
type: 'ivf_pq' type: 'ivf_pq'
} }

View File

@@ -25,6 +25,7 @@ import { Vector, Table as ArrowTable } from 'apache-arrow'
import { HttpLancedbClient } from './client' import { HttpLancedbClient } from './client'
import { isEmbeddingFunction } from '../embedding/embedding_function' import { isEmbeddingFunction } from '../embedding/embedding_function'
import { createEmptyTable, fromRecordsToStreamBuffer, fromTableToStreamBuffer } from '../arrow' import { createEmptyTable, fromRecordsToStreamBuffer, fromTableToStreamBuffer } from '../arrow'
import { toSQL } from '../util'
/** /**
* Remote connection. * Remote connection.
@@ -194,6 +195,17 @@ export class RemoteTable<T = number[]> implements Table<T> {
return this._name return this._name
} }
get schema (): Promise<any> {
return this._client.post(`/v1/table/${this._name}/describe/`).then(res => {
if (res.status !== 200) {
throw new Error(`Server Error, status: ${res.status}, ` +
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
`message: ${res.statusText}: ${res.data}`)
}
return res.data?.schema
})
}
search (query: T): Query<T> { search (query: T): Query<T> {
return new RemoteQuery(query, this._client, this._name)//, this._embeddings_new) return new RemoteQuery(query, this._client, this._name)//, this._embeddings_new)
} }
@@ -234,8 +246,41 @@ export class RemoteTable<T = number[]> implements Table<T> {
return data.length return data.length
} }
async createIndex (indexParams: VectorIndexParams): Promise<any> { async createIndex (indexParams: VectorIndexParams): Promise<void> {
throw new Error('Not implemented') const unsupportedParams = [
'index_name',
'num_partitions',
'max_iters',
'use_opq',
'num_sub_vectors',
'num_bits',
'max_opq_iters',
'replace'
]
for (const param of unsupportedParams) {
// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
if (indexParams[param as keyof VectorIndexParams]) {
throw new Error(`${param} is not supported for remote connections`)
}
}
const column = indexParams.column ?? 'vector'
const indexType = 'vector' // only vector index is supported for remote connections
const metricType = indexParams.metric_type ?? 'L2'
const indexCacheSize = indexParams ?? null
const data = {
column,
index_type: indexType,
metric_type: metricType,
index_cache_size: indexCacheSize
}
const res = await this._client.post(`/v1/table/${this._name}/create_index/`, data)
if (res.status !== 200) {
throw new Error(`Server Error, status: ${res.status}, ` +
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
`message: ${res.statusText}: ${res.data}`)
}
} }
async countRows (): Promise<number> { async countRows (): Promise<number> {
@@ -248,7 +293,23 @@ export class RemoteTable<T = number[]> implements Table<T> {
} }
async update (args: UpdateArgs | UpdateSqlArgs): Promise<void> { async update (args: UpdateArgs | UpdateSqlArgs): Promise<void> {
throw new Error('Not implemented') let filter: string | null
let updates: Record<string, string>
if ('valuesSql' in args) {
filter = args.where ?? null
updates = args.valuesSql
} else {
filter = args.where ?? null
updates = {}
for (const [key, value] of Object.entries(args.values)) {
updates[key] = toSQL(value)
}
}
await this._client.post(`/v1/table/${this._name}/update/`, {
predicate: filter,
updates: Object.entries(updates).map(([key, value]) => [key, value])
})
} }
async listIndices (): Promise<VectorIndex[]> { async listIndices (): Promise<VectorIndex[]> {

View File

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

View File

@@ -75,8 +75,14 @@ def populate_index(index: tantivy.Index, table: LanceTable, fields: List[str]) -
The number of rows indexed The number of rows indexed
""" """
# first check the fields exist and are string or large string type # first check the fields exist and are string or large string type
nested = []
for name in fields: for name in fields:
try:
f = table.schema.field(name) # raises KeyError if not found f = table.schema.field(name) # raises KeyError if not found
except KeyError:
f = resolve_path(table.schema, name)
nested.append(name)
if not pa.types.is_string(f.type) and not pa.types.is_large_string(f.type): if not pa.types.is_string(f.type) and not pa.types.is_large_string(f.type):
raise TypeError(f"Field {name} is not a string type") raise TypeError(f"Field {name} is not a string type")
@@ -85,7 +91,16 @@ def populate_index(index: tantivy.Index, table: LanceTable, fields: List[str]) -
# write data into index # write data into index
dataset = table.to_lance() dataset = table.to_lance()
row_id = 0 row_id = 0
max_nested_level = 0
if len(nested) > 0:
max_nested_level = max([len(name.split(".")) for name in nested])
for b in dataset.to_batches(columns=fields): for b in dataset.to_batches(columns=fields):
if max_nested_level > 0:
b = pa.Table.from_batches([b])
for _ in range(max_nested_level - 1):
b = b.flatten()
for i in range(b.num_rows): for i in range(b.num_rows):
doc = tantivy.Document() doc = tantivy.Document()
doc.add_integer("doc_id", row_id) doc.add_integer("doc_id", row_id)
@@ -98,6 +113,30 @@ def populate_index(index: tantivy.Index, table: LanceTable, fields: List[str]) -
return row_id return row_id
def resolve_path(schema, field_name: str) -> pa.Field:
"""
Resolve a nested field path to a list of field names
Parameters
----------
field_name : str
The field name to resolve
Returns
-------
List[str]
The resolved path
"""
path = field_name.split(".")
field = schema.field(path.pop(0))
for segment in path:
if pa.types.is_struct(field.type):
field = field.type.field(segment)
else:
raise KeyError(f"field {field_name} not found in schema {schema}")
return field
def search_index( def search_index(
index: tantivy.Index, query: str, limit: int = 10 index: tantivy.Index, query: str, limit: int = 10
) -> Tuple[Tuple[int], Tuple[float]]: ) -> Tuple[Tuple[int], Tuple[float]]:

View File

@@ -348,3 +348,20 @@ def get_extras(field_info: pydantic.fields.FieldInfo, key: str) -> Any:
if PYDANTIC_VERSION.major >= 2: if PYDANTIC_VERSION.major >= 2:
return (field_info.json_schema_extra or {}).get(key) return (field_info.json_schema_extra or {}).get(key)
return (field_info.field_info.extra or {}).get("json_schema_extra", {}).get(key) return (field_info.field_info.extra or {}).get("json_schema_extra", {}).get(key)
if PYDANTIC_VERSION.major < 2:
def model_to_dict(model: pydantic.BaseModel) -> Dict[str, Any]:
"""
Convert a Pydantic model to a dictionary.
"""
return model.dict()
else:
def model_to_dict(model: pydantic.BaseModel) -> Dict[str, Any]:
"""
Convert a Pydantic model to a dictionary.
"""
return model.model_dump()

View File

@@ -185,14 +185,40 @@ class LanceQueryBuilder(ABC):
""" """
return self.to_pandas() return self.to_pandas()
def to_pandas(self) -> "pd.DataFrame": def to_pandas(self, flatten: Optional[Union[int, bool]] = None) -> "pd.DataFrame":
""" """
Execute the query and return the results as a pandas DataFrame. Execute the query and return the results as a pandas DataFrame.
In addition to the selected columns, LanceDB also returns a vector In addition to the selected columns, LanceDB also returns a vector
and also the "_distance" column which is the distance between the query and also the "_distance" column which is the distance between the query
vector and the returned vector. vector and the returned vector.
Parameters
----------
flatten: Optional[Union[int, bool]]
If flatten is True, flatten all nested columns.
If flatten is an integer, flatten the nested columns up to the
specified depth.
If unspecified, do not flatten the nested columns.
""" """
return self.to_arrow().to_pandas() tbl = self.to_arrow()
if flatten is True:
while True:
tbl = tbl.flatten()
has_struct = False
# loop through all columns to check if there is any struct column
if any(pa.types.is_struct(col.type) for col in tbl.schema):
continue
else:
break
elif isinstance(flatten, int):
if flatten <= 0:
raise ValueError(
"Please specify a positive integer for flatten or the boolean value `True`"
)
while flatten > 0:
tbl = tbl.flatten()
flatten -= 1
return tbl.to_pandas()
@abstractmethod @abstractmethod
def to_arrow(self) -> pa.Table: def to_arrow(self) -> pa.Table:

View File

@@ -18,6 +18,8 @@ import attrs
import pyarrow as pa import pyarrow as pa
from pydantic import BaseModel from pydantic import BaseModel
from lancedb.common import VECTOR_COLUMN_NAME
__all__ = ["LanceDBClient", "VectorQuery", "VectorQueryResult"] __all__ = ["LanceDBClient", "VectorQuery", "VectorQueryResult"]
@@ -43,6 +45,8 @@ class VectorQuery(BaseModel):
refine_factor: Optional[int] = None refine_factor: Optional[int] = None
vector_column: str = VECTOR_COLUMN_NAME
@attrs.define @attrs.define
class VectorQueryResult: class VectorQueryResult:

View File

@@ -13,7 +13,7 @@
import uuid import uuid
from functools import cached_property from functools import cached_property
from typing import Optional, Union from typing import Dict, Optional, Union
import pyarrow as pa import pyarrow as pa
from lance import json_to_schema from lance import json_to_schema
@@ -22,6 +22,7 @@ from lancedb.common import DATA, VEC, VECTOR_COLUMN_NAME
from ..query import LanceVectorQueryBuilder from ..query import LanceVectorQueryBuilder
from ..table import Query, Table, _sanitize_data from ..table import Query, Table, _sanitize_data
from ..util import value_to_sql
from .arrow import to_ipc_binary from .arrow import to_ipc_binary
from .client import ARROW_STREAM_CONTENT_TYPE from .client import ARROW_STREAM_CONTENT_TYPE
from .db import RemoteDBConnection from .db import RemoteDBConnection
@@ -273,3 +274,65 @@ class RemoteTable(Table):
self._conn._loop.run_until_complete( self._conn._loop.run_until_complete(
self._conn._client.post(f"/v1/table/{self._name}/delete/", data=payload) self._conn._client.post(f"/v1/table/{self._name}/delete/", data=payload)
) )
def update(
self,
where: Optional[str] = None,
values: Optional[dict] = None,
*,
values_sql: Optional[Dict[str, str]] = None,
):
"""
This can be used to update zero to all rows depending on how many
rows match the where clause.
Parameters
----------
where: str, optional
The SQL where clause to use when updating rows. For example, 'x = 2'
or 'x IN (1, 2, 3)'. The filter must not be empty, or it will error.
values: dict, optional
The values to update. The keys are the column names and the values
are the values to set.
values_sql: dict, optional
The values to update, expressed as SQL expression strings. These can
reference existing columns. For example, {"x": "x + 1"} will increment
the x column by 1.
Examples
--------
>>> import lancedb
>>> data = [
... {"x": 1, "vector": [1, 2]},
... {"x": 2, "vector": [3, 4]},
... {"x": 3, "vector": [5, 6]}
... ]
>>> db = lancedb.connect("db://...", api_key="...", region="...") # doctest: +SKIP
>>> table = db.create_table("my_table", data) # doctest: +SKIP
>>> table.to_pandas() # doctest: +SKIP
x vector # doctest: +SKIP
0 1 [1.0, 2.0] # doctest: +SKIP
1 2 [3.0, 4.0] # doctest: +SKIP
2 3 [5.0, 6.0] # doctest: +SKIP
>>> table.update(where="x = 2", values={"vector": [10, 10]}) # doctest: +SKIP
>>> table.to_pandas() # doctest: +SKIP
x vector # doctest: +SKIP
0 1 [1.0, 2.0] # doctest: +SKIP
1 3 [5.0, 6.0] # doctest: +SKIP
2 2 [10.0, 10.0] # doctest: +SKIP
"""
if values is not None and values_sql is not None:
raise ValueError("Only one of values or values_sql can be provided")
if values is None and values_sql is None:
raise ValueError("Either values or values_sql must be provided")
if values is not None:
updates = [[k, value_to_sql(v)] for k, v in values.items()]
else:
updates = [[k, v] for k, v in values_sql.items()]
payload = {"predicate": where, "updates": updates}
self._conn._loop.run_until_complete(
self._conn._client.post(f"/v1/table/{self._name}/update/", data=payload)
)

View File

@@ -28,7 +28,7 @@ from lance.vector import vec_to_table
from .common import DATA, VEC, VECTOR_COLUMN_NAME from .common import DATA, VEC, VECTOR_COLUMN_NAME
from .embeddings import EmbeddingFunctionConfig, EmbeddingFunctionRegistry from .embeddings import EmbeddingFunctionConfig, EmbeddingFunctionRegistry
from .pydantic import LanceModel from .pydantic import LanceModel, model_to_dict
from .query import LanceQueryBuilder, Query from .query import LanceQueryBuilder, Query
from .util import fs_from_uri, safe_import_pandas, value_to_sql from .util import fs_from_uri, safe_import_pandas, value_to_sql
from .utils.events import register_event from .utils.events import register_event
@@ -53,7 +53,9 @@ def _sanitize_data(
# convert to list of dict if data is a bunch of LanceModels # convert to list of dict if data is a bunch of LanceModels
if isinstance(data[0], LanceModel): if isinstance(data[0], LanceModel):
schema = data[0].__class__.to_arrow_schema() schema = data[0].__class__.to_arrow_schema()
data = [dict(d) for d in data] data = [model_to_dict(d) for d in data]
data = pa.Table.from_pylist(data, schema=schema)
else:
data = pa.Table.from_pylist(data) data = pa.Table.from_pylist(data)
elif isinstance(data, dict): elif isinstance(data, dict):
data = vec_to_table(data) data = vec_to_table(data)
@@ -381,6 +383,61 @@ class Table(ABC):
""" """
raise NotImplementedError raise NotImplementedError
@abstractmethod
def update(
self,
where: Optional[str] = None,
values: Optional[dict] = None,
*,
values_sql: Optional[Dict[str, str]] = None,
):
"""
This can be used to update zero to all rows depending on how many
rows match the where clause. If no where clause is provided, then
all rows will be updated.
Either `values` or `values_sql` must be provided. You cannot provide
both.
Parameters
----------
where: str, optional
The SQL where clause to use when updating rows. For example, 'x = 2'
or 'x IN (1, 2, 3)'. The filter must not be empty, or it will error.
values: dict, optional
The values to update. The keys are the column names and the values
are the values to set.
values_sql: dict, optional
The values to update, expressed as SQL expression strings. These can
reference existing columns. For example, {"x": "x + 1"} will increment
the x column by 1.
Examples
--------
>>> import lancedb
>>> import pandas as pd
>>> data = pd.DataFrame({"x": [1, 2, 3], "vector": [[1, 2], [3, 4], [5, 6]]})
>>> db = lancedb.connect("./.lancedb")
>>> table = db.create_table("my_table", data)
>>> table.to_pandas()
x vector
0 1 [1.0, 2.0]
1 2 [3.0, 4.0]
2 3 [5.0, 6.0]
>>> table.update(where="x = 2", values={"vector": [10, 10]})
>>> table.to_pandas()
x vector
0 1 [1.0, 2.0]
1 3 [5.0, 6.0]
2 2 [10.0, 10.0]
>>> table.update(values_sql={"x": "x + 1"})
>>> table.to_pandas()
x vector
0 2 [1.0, 2.0]
1 4 [5.0, 6.0]
2 3 [10.0, 10.0]
"""
raise NotImplementedError
class LanceTable(Table): class LanceTable(Table):
""" """

View File

@@ -1,9 +1,9 @@
[project] [project]
name = "lancedb" name = "lancedb"
version = "0.3.5" version = "0.4.0"
dependencies = [ dependencies = [
"deprecation", "deprecation",
"pylance==0.8.21", "pylance==0.9.0",
"ratelimiter~=1.0", "ratelimiter~=1.0",
"retry>=0.9.2", "retry>=0.9.2",
"tqdm>=4.27.0", "tqdm>=4.27.0",

View File

@@ -43,7 +43,15 @@ def table(tmp_path) -> ldb.table.LanceTable:
for _ in range(100) for _ in range(100)
] ]
table = db.create_table( table = db.create_table(
"test", data=pd.DataFrame({"vector": vectors, "text": text, "text2": text}) "test",
data=pd.DataFrame(
{
"vector": vectors,
"text": text,
"text2": text,
"nested": [{"text": t} for t in text],
}
),
) )
return table return table
@@ -89,3 +97,9 @@ def test_empty_rs(tmp_path, table, mocker):
mocker.patch("lancedb.fts.search_index", return_value=([], [])) mocker.patch("lancedb.fts.search_index", return_value=([], []))
df = table.search("puppy").limit(10).to_pandas() df = table.search("puppy").limit(10).to_pandas()
assert len(df) == 0 assert len(df) == 0
def test_nested_schema(tmp_path, table):
table.create_fts_index("nested.text")
rs = table.search("puppy").limit(10).to_list()
assert len(rs) == 10

View File

@@ -21,6 +21,7 @@ import lance
import numpy as np import numpy as np
import pandas as pd import pandas as pd
import pyarrow as pa import pyarrow as pa
from pydantic import BaseModel
import pytest import pytest
from lancedb.conftest import MockTextEmbeddingFunction from lancedb.conftest import MockTextEmbeddingFunction
@@ -141,14 +142,44 @@ def test_add(db):
def test_add_pydantic_model(db): def test_add_pydantic_model(db):
class TestModel(LanceModel): # https://github.com/lancedb/lancedb/issues/562
vector: Vector(16)
li: List[int]
data = TestModel(vector=list(range(16)), li=[1, 2, 3]) class Metadata(BaseModel):
table = LanceTable.create(db, "test", data=[data]) source: str
assert len(table) == 1 timestamp: datetime
assert table.schema == TestModel.to_arrow_schema()
class Document(BaseModel):
content: str
meta: Metadata
class LanceSchema(LanceModel):
id: str
vector: Vector(2)
li: List[int]
payload: Document
tbl = LanceTable.create(db, "mytable", schema=LanceSchema, mode="overwrite")
assert tbl.schema == LanceSchema.to_arrow_schema()
# add works
expected = LanceSchema(
id="id",
vector=[0.0, 0.0],
li=[1, 2, 3],
payload=Document(
content="foo", meta=Metadata(source="bar", timestamp=datetime.now())
),
)
tbl.add([expected])
result = tbl.search([0.0, 0.0]).limit(1).to_pydantic(LanceSchema)[0]
assert result == expected
flattened = tbl.search([0.0, 0.0]).limit(1).to_pandas(flatten=1)
assert len(flattened.columns) == 6 # _distance is automatically added
really_flattened = tbl.search([0.0, 0.0]).limit(1).to_pandas(flatten=True)
assert len(really_flattened.columns) == 7
def _add(table, schema): def _add(table, schema):

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "vectordb-node" name = "vectordb-node"
version = "0.3.9" version = "0.4.0"
description = "Serverless, low-latency vector database for AI applications" description = "Serverless, low-latency vector database for AI applications"
license = "Apache-2.0" license = "Apache-2.0"
edition = "2018" edition = "2018"

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "vectordb" name = "vectordb"
version = "0.3.9" version = "0.4.0"
edition = "2021" edition = "2021"
description = "LanceDB: A serverless, low-latency vector database for AI applications" description = "LanceDB: A serverless, low-latency vector database for AI applications"
license = "Apache-2.0" license = "Apache-2.0"

View File

@@ -359,7 +359,9 @@ mod test {
assert_eq!(t.count_rows().await.unwrap(), 100); assert_eq!(t.count_rows().await.unwrap(), 100);
let q = t let q = t
.search(Some(PrimitiveArray::from_iter_values(vec![0.1, 0.1, 0.1, 0.1]))) .search(Some(PrimitiveArray::from_iter_values(vec![
0.1, 0.1, 0.1, 0.1,
])))
.limit(10) .limit(10)
.execute() .execute()
.await .await

View File

@@ -25,6 +25,7 @@ use crate::error::Result;
pub struct Query { pub struct Query {
pub dataset: Arc<Dataset>, pub dataset: Arc<Dataset>,
pub query_vector: Option<Float32Array>, pub query_vector: Option<Float32Array>,
pub column: String,
pub limit: Option<usize>, pub limit: Option<usize>,
pub filter: Option<String>, pub filter: Option<String>,
pub select: Option<Vec<String>>, pub select: Option<Vec<String>>,
@@ -50,6 +51,7 @@ impl Query {
Query { Query {
dataset, dataset,
query_vector: vector, query_vector: vector,
column: crate::table::VECTOR_COLUMN_NAME.to_string(),
limit: None, limit: None,
nprobes: 20, nprobes: 20,
refine_factor: None, refine_factor: None,
@@ -71,7 +73,7 @@ impl Query {
if let Some(query) = self.query_vector.as_ref() { if let Some(query) = self.query_vector.as_ref() {
// If there is a vector query, default to limit=10 if unspecified // If there is a vector query, default to limit=10 if unspecified
scanner.nearest(crate::table::VECTOR_COLUMN_NAME, query, self.limit.unwrap_or(10))?; scanner.nearest(&self.column, query, self.limit.unwrap_or(10))?;
} else { } else {
// If there is no vector query, it's ok to not have a limit // If there is no vector query, it's ok to not have a limit
scanner.limit(self.limit.map(|limit| limit as i64), None)?; scanner.limit(self.limit.map(|limit| limit as i64), None)?;
@@ -87,6 +89,16 @@ impl Query {
Ok(scanner.try_into_stream().await?) Ok(scanner.try_into_stream().await?)
} }
/// Set the column to query
///
/// # Arguments
///
/// * `column` - The column name
pub fn column(mut self, column: &str) -> Query {
self.column = column.into();
self
}
/// Set the maximum number of results to return. /// Set the maximum number of results to return.
/// ///
/// # Arguments /// # Arguments
@@ -176,7 +188,10 @@ mod tests {
use std::sync::Arc; use std::sync::Arc;
use super::*; use super::*;
use arrow_array::{Float32Array, RecordBatch, RecordBatchIterator, RecordBatchReader, cast::AsArray, Int32Array}; use arrow_array::{
cast::AsArray, Float32Array, Int32Array, RecordBatch, RecordBatchIterator,
RecordBatchReader,
};
use arrow_schema::{DataType, Field as ArrowField, Schema as ArrowSchema}; use arrow_schema::{DataType, Field as ArrowField, Schema as ArrowSchema};
use futures::StreamExt; use futures::StreamExt;
use lance::dataset::Dataset; use lance::dataset::Dataset;