@lancedb/lancedb 0.10.0-beta.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -34,6 +34,14 @@ export interface CreateTableOptions {
34
34
  * `stable` is the new format, which is Lance format v2.
35
35
  */
36
36
  dataStorageVersion?: string;
37
+ /**
38
+ * Use the new V2 manifest paths. These paths provide more efficient
39
+ * opening of datasets with many versions on object stores. WARNING:
40
+ * turning this on will make the dataset unreadable for older versions
41
+ * of LanceDB (prior to 0.10.0). To migrate an existing dataset, instead
42
+ * use the {@link LocalTable#migrateManifestPathsV2} method.
43
+ */
44
+ enableV2ManifestPaths?: boolean;
37
45
  /**
38
46
  * If true then data files will be written with the legacy format
39
47
  *
@@ -80,7 +80,7 @@ class LocalConnection extends Connection {
80
80
  else if (options?.useLegacyFormat !== undefined) {
81
81
  dataStorageVersion = options.useLegacyFormat ? "legacy" : "stable";
82
82
  }
83
- const innerTable = await this.inner.createTable(nameOrOptions, buf, mode, cleanseStorageOptions(options?.storageOptions), dataStorageVersion);
83
+ const innerTable = await this.inner.createTable(nameOrOptions, buf, mode, cleanseStorageOptions(options?.storageOptions), dataStorageVersion, options?.enableV2ManifestPaths);
84
84
  return new table_1.LocalTable(innerTable);
85
85
  }
86
86
  async createEmptyTable(name, schema, options) {
@@ -104,7 +104,7 @@ class LocalConnection extends Connection {
104
104
  }
105
105
  const table = (0, arrow_1.makeEmptyTable)(schema, metadata);
106
106
  const buf = await (0, arrow_1.fromTableToBuffer)(table);
107
- const innerTable = await this.inner.createEmptyTable(name, buf, mode, cleanseStorageOptions(options?.storageOptions), dataStorageVersion);
107
+ const innerTable = await this.inner.createEmptyTable(name, buf, mode, cleanseStorageOptions(options?.storageOptions), dataStorageVersion, options?.enableV2ManifestPaths);
108
108
  return new table_1.LocalTable(innerTable);
109
109
  }
110
110
  async dropTable(name) {
package/dist/indices.d.ts CHANGED
@@ -92,6 +92,35 @@ export interface IvfPqOptions {
92
92
  */
93
93
  sampleRate?: number;
94
94
  }
95
+ export interface HnswPqOptions {
96
+ distanceType?: "l2" | "cosine" | "dot";
97
+ numPartitions?: number;
98
+ numSubVectors?: number;
99
+ maxIterations?: number;
100
+ sampleRate?: number;
101
+ m?: number;
102
+ efConstruction?: number;
103
+ }
104
+ export interface HnswSqOptions {
105
+ distanceType?: "l2" | "cosine" | "dot";
106
+ numPartitions?: number;
107
+ maxIterations?: number;
108
+ sampleRate?: number;
109
+ m?: number;
110
+ efConstruction?: number;
111
+ }
112
+ /**
113
+ * Options to create a full text search index
114
+ */
115
+ export interface FtsOptions {
116
+ /**
117
+ * Whether to build the index with positions.
118
+ * True by default.
119
+ * If set to false, the index will not store the positions of the tokens in the text,
120
+ * which will make the index smaller and faster to build, but will not support phrase queries.
121
+ */
122
+ withPositions?: boolean;
123
+ }
95
124
  export declare class Index {
96
125
  private readonly inner;
97
126
  private constructor();
@@ -167,7 +196,19 @@ export declare class Index {
167
196
  *
168
197
  * For now, the full text search index only supports English, and doesn't support phrase search.
169
198
  */
170
- static fts(): Index;
199
+ static fts(options?: Partial<FtsOptions>): Index;
200
+ /**
201
+ *
202
+ * Create a hnswpq index
203
+ *
204
+ */
205
+ static hnswPq(options?: Partial<HnswPqOptions>): Index;
206
+ /**
207
+ *
208
+ * Create a hnswsq index
209
+ *
210
+ */
211
+ static hnswSq(options?: Partial<HnswSqOptions>): Index;
171
212
  }
172
213
  export interface IndexOptions {
173
214
  /**
package/dist/indices.js CHANGED
@@ -100,8 +100,24 @@ class Index {
100
100
  *
101
101
  * For now, the full text search index only supports English, and doesn't support phrase search.
102
102
  */
103
- static fts() {
104
- return new Index(native_1.Index.fts());
103
+ static fts(options) {
104
+ return new Index(native_1.Index.fts(options?.withPositions));
105
+ }
106
+ /**
107
+ *
108
+ * Create a hnswpq index
109
+ *
110
+ */
111
+ static hnswPq(options) {
112
+ return new Index(native_1.Index.hnswPq(options?.distanceType, options?.numPartitions, options?.numSubVectors, options?.maxIterations, options?.sampleRate, options?.m, options?.efConstruction));
113
+ }
114
+ /**
115
+ *
116
+ * Create a hnswsq index
117
+ *
118
+ */
119
+ static hnswSq(options) {
120
+ return new Index(native_1.Index.hnswSq(options?.distanceType, options?.numPartitions, options?.maxIterations, options?.sampleRate, options?.m, options?.efConstruction));
105
121
  }
106
122
  }
107
123
  exports.Index = Index;
@@ -0,0 +1,221 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+
4
+ /* auto-generated by NAPI-RS */
5
+
6
+ /** A description of an index currently configured on a column */
7
+ export interface IndexConfig {
8
+ /** The name of the index */
9
+ name: string
10
+ /** The type of the index */
11
+ indexType: string
12
+ /**
13
+ * The columns in the index
14
+ *
15
+ * Currently this is always an array of size 1. In the future there may
16
+ * be more columns to represent composite indices.
17
+ */
18
+ columns: Array<string>
19
+ }
20
+ /** Statistics about a compaction operation. */
21
+ export interface CompactionStats {
22
+ /** The number of fragments removed */
23
+ fragmentsRemoved: number
24
+ /** The number of new, compacted fragments added */
25
+ fragmentsAdded: number
26
+ /** The number of data files removed */
27
+ filesRemoved: number
28
+ /** The number of new, compacted data files added */
29
+ filesAdded: number
30
+ }
31
+ /** Statistics about a cleanup operation */
32
+ export interface RemovalStats {
33
+ /** The number of bytes removed */
34
+ bytesRemoved: number
35
+ /** The number of old versions removed */
36
+ oldVersionsRemoved: number
37
+ }
38
+ /** Statistics about an optimize operation */
39
+ export interface OptimizeStats {
40
+ /** Statistics about the compaction operation */
41
+ compaction: CompactionStats
42
+ /** Statistics about the removal operation */
43
+ prune: RemovalStats
44
+ }
45
+ /**
46
+ * A definition of a column alteration. The alteration changes the column at
47
+ * `path` to have the new name `name`, to be nullable if `nullable` is true,
48
+ * and to have the data type `data_type`. At least one of `rename` or `nullable`
49
+ * must be provided.
50
+ */
51
+ export interface ColumnAlteration {
52
+ /**
53
+ * The path to the column to alter. This is a dot-separated path to the column.
54
+ * If it is a top-level column then it is just the name of the column. If it is
55
+ * a nested column then it is the path to the column, e.g. "a.b.c" for a column
56
+ * `c` nested inside a column `b` nested inside a column `a`.
57
+ */
58
+ path: string
59
+ /**
60
+ * The new name of the column. If not provided then the name will not be changed.
61
+ * This must be distinct from the names of all other columns in the table.
62
+ */
63
+ rename?: string
64
+ /** Set the new nullability. Note that a nullable column cannot be made non-nullable. */
65
+ nullable?: boolean
66
+ }
67
+ /** A definition of a new column to add to a table. */
68
+ export interface AddColumnsSql {
69
+ /** The name of the new column. */
70
+ name: string
71
+ /**
72
+ * The values to populate the new column with, as a SQL expression.
73
+ * The expression can reference other columns in the table.
74
+ */
75
+ valueSql: string
76
+ }
77
+ export interface IndexStatistics {
78
+ /** The number of rows indexed by the index */
79
+ numIndexedRows: number
80
+ /** The number of rows not indexed */
81
+ numUnindexedRows: number
82
+ /** The type of the index */
83
+ indexType?: string
84
+ /** The metadata for each index */
85
+ indices: Array<IndexMetadata>
86
+ }
87
+ export interface IndexMetadata {
88
+ metricType?: string
89
+ indexType?: string
90
+ }
91
+ export interface ConnectionOptions {
92
+ /**
93
+ * (For LanceDB OSS only): The interval, in seconds, at which to check for
94
+ * updates to the table from other processes. If None, then consistency is not
95
+ * checked. For performance reasons, this is the default. For strong
96
+ * consistency, set this to zero seconds. Then every read will check for
97
+ * updates from other processes. As a compromise, you can set this to a
98
+ * non-zero value for eventual consistency. If more than that interval
99
+ * has passed since the last check, then the table will be checked for updates.
100
+ * Note: this consistency only applies to read operations. Write operations are
101
+ * always consistent.
102
+ */
103
+ readConsistencyInterval?: number
104
+ /**
105
+ * (For LanceDB OSS only): configuration for object storage.
106
+ *
107
+ * The available options are described at https://lancedb.github.io/lancedb/guides/storage/
108
+ */
109
+ storageOptions?: Record<string, string>
110
+ }
111
+ /** Write mode for writing a table. */
112
+ export const enum WriteMode {
113
+ Create = 'Create',
114
+ Append = 'Append',
115
+ Overwrite = 'Overwrite'
116
+ }
117
+ /** Write options when creating a Table. */
118
+ export interface WriteOptions {
119
+ /** Write mode for writing to a table. */
120
+ mode?: WriteMode
121
+ }
122
+ export interface OpenTableOptions {
123
+ storageOptions?: Record<string, string>
124
+ }
125
+ export class Connection {
126
+ /** Create a new Connection instance from the given URI. */
127
+ static new(uri: string, options: ConnectionOptions): Promise<Connection>
128
+ display(): string
129
+ isOpen(): boolean
130
+ close(): void
131
+ /** List all tables in the dataset. */
132
+ tableNames(startAfter?: string | undefined | null, limit?: number | undefined | null): Promise<Array<string>>
133
+ /**
134
+ * Create table from a Apache Arrow IPC (file) buffer.
135
+ *
136
+ * Parameters:
137
+ * - name: The name of the table.
138
+ * - buf: The buffer containing the IPC file.
139
+ *
140
+ */
141
+ createTable(name: string, buf: Buffer, mode: string, storageOptions?: Record<string, string> | undefined | null, dataStorageOptions?: string | undefined | null, enableV2ManifestPaths?: boolean | undefined | null): Promise<Table>
142
+ createEmptyTable(name: string, schemaBuf: Buffer, mode: string, storageOptions?: Record<string, string> | undefined | null, dataStorageOptions?: string | undefined | null, enableV2ManifestPaths?: boolean | undefined | null): Promise<Table>
143
+ openTable(name: string, storageOptions?: Record<string, string> | undefined | null, indexCacheSize?: number | undefined | null): Promise<Table>
144
+ /** Drop table with the name. Or raise an error if the table does not exist. */
145
+ dropTable(name: string): Promise<void>
146
+ }
147
+ export class Index {
148
+ static ivfPq(distanceType?: string | undefined | null, numPartitions?: number | undefined | null, numSubVectors?: number | undefined | null, maxIterations?: number | undefined | null, sampleRate?: number | undefined | null): Index
149
+ static btree(): Index
150
+ static bitmap(): Index
151
+ static labelList(): Index
152
+ static fts(withPosition?: boolean | undefined | null): Index
153
+ static hnswPq(distanceType?: string | undefined | null, numPartitions?: number | undefined | null, numSubVectors?: number | undefined | null, maxIterations?: number | undefined | null, sampleRate?: number | undefined | null, m?: number | undefined | null, efConstruction?: number | undefined | null): Index
154
+ static hnswSq(distanceType?: string | undefined | null, numPartitions?: number | undefined | null, maxIterations?: number | undefined | null, sampleRate?: number | undefined | null, m?: number | undefined | null, efConstruction?: number | undefined | null): Index
155
+ }
156
+ /** Typescript-style Async Iterator over RecordBatches */
157
+ export class RecordBatchIterator {
158
+ next(): Promise<Buffer | null>
159
+ }
160
+ /** A builder used to create and run a merge insert operation */
161
+ export class NativeMergeInsertBuilder {
162
+ whenMatchedUpdateAll(condition?: string | undefined | null): NativeMergeInsertBuilder
163
+ whenNotMatchedInsertAll(): NativeMergeInsertBuilder
164
+ whenNotMatchedBySourceDelete(filter?: string | undefined | null): NativeMergeInsertBuilder
165
+ execute(buf: Buffer): Promise<void>
166
+ }
167
+ export class Query {
168
+ onlyIf(predicate: string): void
169
+ fullTextSearch(query: string, columns?: Array<string> | undefined | null): void
170
+ select(columns: Array<[string, string]>): void
171
+ selectColumns(columns: Array<string>): void
172
+ limit(limit: number): void
173
+ offset(offset: number): void
174
+ nearestTo(vector: Float32Array): VectorQuery
175
+ execute(maxBatchLength?: number | undefined | null): Promise<RecordBatchIterator>
176
+ explainPlan(verbose: boolean): Promise<string>
177
+ }
178
+ export class VectorQuery {
179
+ column(column: string): void
180
+ distanceType(distanceType: string): void
181
+ postfilter(): void
182
+ refineFactor(refineFactor: number): void
183
+ nprobes(nprobe: number): void
184
+ bypassVectorIndex(): void
185
+ onlyIf(predicate: string): void
186
+ fullTextSearch(query: string, columns?: Array<string> | undefined | null): void
187
+ select(columns: Array<[string, string]>): void
188
+ selectColumns(columns: Array<string>): void
189
+ limit(limit: number): void
190
+ offset(offset: number): void
191
+ execute(maxBatchLength?: number | undefined | null): Promise<RecordBatchIterator>
192
+ explainPlan(verbose: boolean): Promise<string>
193
+ }
194
+ export class Table {
195
+ name: string
196
+ display(): string
197
+ isOpen(): boolean
198
+ close(): void
199
+ /** Return Schema as empty Arrow IPC file. */
200
+ schema(): Promise<Buffer>
201
+ add(buf: Buffer, mode: string): Promise<void>
202
+ countRows(filter?: string | undefined | null): Promise<number>
203
+ delete(predicate: string): Promise<void>
204
+ createIndex(index: Index | undefined | null, column: string, replace?: boolean | undefined | null): Promise<void>
205
+ update(onlyIf: string | undefined | null, columns: Array<[string, string]>): Promise<void>
206
+ query(): Query
207
+ vectorSearch(vector: Float32Array): VectorQuery
208
+ addColumns(transforms: Array<AddColumnsSql>): Promise<void>
209
+ alterColumns(alterations: Array<ColumnAlteration>): Promise<void>
210
+ dropColumns(columns: Array<string>): Promise<void>
211
+ version(): Promise<number>
212
+ checkout(version: number): Promise<void>
213
+ checkoutLatest(): Promise<void>
214
+ restore(): Promise<void>
215
+ optimize(olderThanMs?: number | undefined | null, deleteUnverified?: boolean | undefined | null): Promise<OptimizeStats>
216
+ listIndices(): Promise<Array<IndexConfig>>
217
+ indexStats(indexName: string): Promise<IndexStatistics | null>
218
+ mergeInsert(on: Array<string>): NativeMergeInsertBuilder
219
+ usesV2ManifestPaths(): Promise<boolean>
220
+ migrateManifestPathsV2(): Promise<void>
221
+ }
package/dist/query.d.ts CHANGED
@@ -94,6 +94,7 @@ export declare class QueryBase<NativeQueryType extends NativeQuery | NativeVecto
94
94
  * called then every valid row from the table will be returned.
95
95
  */
96
96
  limit(limit: number): this;
97
+ offset(offset: number): this;
97
98
  protected nativeExecute(options?: Partial<QueryExecutionOptions>): Promise<NativeBatchIterator>;
98
99
  /**
99
100
  * Execute the query and return the results as an @see {@link AsyncIterator}
package/dist/query.js CHANGED
@@ -176,6 +176,10 @@ class QueryBase {
176
176
  this.doCall((inner) => inner.limit(limit));
177
177
  return this;
178
178
  }
179
+ offset(offset) {
180
+ this.doCall((inner) => inner.offset(offset));
181
+ return this;
182
+ }
179
183
  nativeExecute(options) {
180
184
  if (this.inner instanceof Promise) {
181
185
  return this.inner.then((inner) => inner.execute(options?.maxBatchLength));
package/dist/table.d.ts CHANGED
@@ -45,6 +45,7 @@ export interface OptimizeOptions {
45
45
  * tbl.cleanupOlderVersions(new Date());
46
46
  */
47
47
  cleanupOlderThan: Date;
48
+ deleteUnverified: boolean;
48
49
  }
49
50
  /**
50
51
  * A Table is a collection of Records in a LanceDB Database.
@@ -390,4 +391,25 @@ export declare class LocalTable extends Table {
390
391
  toArrow(): Promise<ArrowTable>;
391
392
  indexStats(name: string): Promise<IndexStatistics | undefined>;
392
393
  mergeInsert(on: string | string[]): MergeInsertBuilder;
394
+ /**
395
+ * Check if the table uses the new manifest path scheme.
396
+ *
397
+ * This function will return true if the table uses the V2 manifest
398
+ * path scheme.
399
+ */
400
+ usesV2ManifestPaths(): Promise<boolean>;
401
+ /**
402
+ * Migrate the table to use the new manifest path scheme.
403
+ *
404
+ * This function will rename all V1 manifests to V2 manifest paths.
405
+ * These paths provide more efficient opening of datasets with many versions
406
+ * on object stores.
407
+ *
408
+ * This function is idempotent, and can be run multiple times without
409
+ * changing the state of the object store.
410
+ *
411
+ * However, it should not be run while other concurrent operations are happening.
412
+ * And it should also run until completion before resuming other operations.
413
+ */
414
+ migrateManifestPathsV2(): Promise<void>;
393
415
  }
package/dist/table.js CHANGED
@@ -221,7 +221,7 @@ class LocalTable extends Table {
221
221
  cleanupOlderThanMs =
222
222
  new Date().getTime() - options.cleanupOlderThan.getTime();
223
223
  }
224
- return await this.inner.optimize(cleanupOlderThanMs);
224
+ return await this.inner.optimize(cleanupOlderThanMs, options?.deleteUnverified);
225
225
  }
226
226
  async listIndices() {
227
227
  return await this.inner.listIndices();
@@ -240,5 +240,30 @@ class LocalTable extends Table {
240
240
  on = Array.isArray(on) ? on : [on];
241
241
  return new merge_1.MergeInsertBuilder(this.inner.mergeInsert(on));
242
242
  }
243
+ /**
244
+ * Check if the table uses the new manifest path scheme.
245
+ *
246
+ * This function will return true if the table uses the V2 manifest
247
+ * path scheme.
248
+ */
249
+ async usesV2ManifestPaths() {
250
+ return await this.inner.usesV2ManifestPaths();
251
+ }
252
+ /**
253
+ * Migrate the table to use the new manifest path scheme.
254
+ *
255
+ * This function will rename all V1 manifests to V2 manifest paths.
256
+ * These paths provide more efficient opening of datasets with many versions
257
+ * on object stores.
258
+ *
259
+ * This function is idempotent, and can be run multiple times without
260
+ * changing the state of the object store.
261
+ *
262
+ * However, it should not be run while other concurrent operations are happening.
263
+ * And it should also run until completion before resuming other operations.
264
+ */
265
+ async migrateManifestPathsV2() {
266
+ await this.inner.migrateManifestPathsV2();
267
+ }
243
268
  }
244
269
  exports.LocalTable = LocalTable;
package/native.d.ts ADDED
@@ -0,0 +1,208 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+
4
+ /* auto-generated by NAPI-RS */
5
+
6
+ /** A description of an index currently configured on a column */
7
+ export interface IndexConfig {
8
+ /** The name of the index */
9
+ name: string
10
+ /** The type of the index */
11
+ indexType: string
12
+ /**
13
+ * The columns in the index
14
+ *
15
+ * Currently this is always an array of size 1. In the future there may
16
+ * be more columns to represent composite indices.
17
+ */
18
+ columns: Array<string>
19
+ }
20
+ /** Statistics about a compaction operation. */
21
+ export interface CompactionStats {
22
+ /** The number of fragments removed */
23
+ fragmentsRemoved: number
24
+ /** The number of new, compacted fragments added */
25
+ fragmentsAdded: number
26
+ /** The number of data files removed */
27
+ filesRemoved: number
28
+ /** The number of new, compacted data files added */
29
+ filesAdded: number
30
+ }
31
+ /** Statistics about a cleanup operation */
32
+ export interface RemovalStats {
33
+ /** The number of bytes removed */
34
+ bytesRemoved: number
35
+ /** The number of old versions removed */
36
+ oldVersionsRemoved: number
37
+ }
38
+ /** Statistics about an optimize operation */
39
+ export interface OptimizeStats {
40
+ /** Statistics about the compaction operation */
41
+ compaction: CompactionStats
42
+ /** Statistics about the removal operation */
43
+ prune: RemovalStats
44
+ }
45
+ /**
46
+ * A definition of a column alteration. The alteration changes the column at
47
+ * `path` to have the new name `name`, to be nullable if `nullable` is true,
48
+ * and to have the data type `data_type`. At least one of `rename` or `nullable`
49
+ * must be provided.
50
+ */
51
+ export interface ColumnAlteration {
52
+ /**
53
+ * The path to the column to alter. This is a dot-separated path to the column.
54
+ * If it is a top-level column then it is just the name of the column. If it is
55
+ * a nested column then it is the path to the column, e.g. "a.b.c" for a column
56
+ * `c` nested inside a column `b` nested inside a column `a`.
57
+ */
58
+ path: string
59
+ /**
60
+ * The new name of the column. If not provided then the name will not be changed.
61
+ * This must be distinct from the names of all other columns in the table.
62
+ */
63
+ rename?: string
64
+ /** Set the new nullability. Note that a nullable column cannot be made non-nullable. */
65
+ nullable?: boolean
66
+ }
67
+ /** A definition of a new column to add to a table. */
68
+ export interface AddColumnsSql {
69
+ /** The name of the new column. */
70
+ name: string
71
+ /**
72
+ * The values to populate the new column with, as a SQL expression.
73
+ * The expression can reference other columns in the table.
74
+ */
75
+ valueSql: string
76
+ }
77
+ export interface IndexStatistics {
78
+ /** The number of rows indexed by the index */
79
+ numIndexedRows: number
80
+ /** The number of rows not indexed */
81
+ numUnindexedRows: number
82
+ /** The type of the index */
83
+ indexType?: string
84
+ /** The metadata for each index */
85
+ indices: Array<IndexMetadata>
86
+ }
87
+ export interface IndexMetadata {
88
+ metricType?: string
89
+ indexType?: string
90
+ }
91
+ export interface ConnectionOptions {
92
+ /**
93
+ * (For LanceDB OSS only): The interval, in seconds, at which to check for
94
+ * updates to the table from other processes. If None, then consistency is not
95
+ * checked. For performance reasons, this is the default. For strong
96
+ * consistency, set this to zero seconds. Then every read will check for
97
+ * updates from other processes. As a compromise, you can set this to a
98
+ * non-zero value for eventual consistency. If more than that interval
99
+ * has passed since the last check, then the table will be checked for updates.
100
+ * Note: this consistency only applies to read operations. Write operations are
101
+ * always consistent.
102
+ */
103
+ readConsistencyInterval?: number
104
+ /**
105
+ * (For LanceDB OSS only): configuration for object storage.
106
+ *
107
+ * The available options are described at https://lancedb.github.io/lancedb/guides/storage/
108
+ */
109
+ storageOptions?: Record<string, string>
110
+ }
111
+ /** Write mode for writing a table. */
112
+ export const enum WriteMode {
113
+ Create = 'Create',
114
+ Append = 'Append',
115
+ Overwrite = 'Overwrite'
116
+ }
117
+ /** Write options when creating a Table. */
118
+ export interface WriteOptions {
119
+ /** Write mode for writing to a table. */
120
+ mode?: WriteMode
121
+ }
122
+ export interface OpenTableOptions {
123
+ storageOptions?: Record<string, string>
124
+ }
125
+ export class Connection {
126
+ /** Create a new Connection instance from the given URI. */
127
+ static new(uri: string, options: ConnectionOptions): Promise<Connection>
128
+ display(): string
129
+ isOpen(): boolean
130
+ close(): void
131
+ /** List all tables in the dataset. */
132
+ tableNames(startAfter?: string | undefined | null, limit?: number | undefined | null): Promise<Array<string>>
133
+ /**
134
+ * Create table from a Apache Arrow IPC (file) buffer.
135
+ *
136
+ * Parameters:
137
+ * - name: The name of the table.
138
+ * - buf: The buffer containing the IPC file.
139
+ *
140
+ */
141
+ createTable(name: string, buf: Buffer, mode: string, storageOptions?: Record<string, string> | undefined | null, useLegacyFormat?: boolean | undefined | null): Promise<Table>
142
+ createEmptyTable(name: string, schemaBuf: Buffer, mode: string, storageOptions?: Record<string, string> | undefined | null, useLegacyFormat?: boolean | undefined | null): Promise<Table>
143
+ openTable(name: string, storageOptions?: Record<string, string> | undefined | null, indexCacheSize?: number | undefined | null): Promise<Table>
144
+ /** Drop table with the name. Or raise an error if the table does not exist. */
145
+ dropTable(name: string): Promise<void>
146
+ }
147
+ export class Index {
148
+ static ivfPq(distanceType?: string | undefined | null, numPartitions?: number | undefined | null, numSubVectors?: number | undefined | null, maxIterations?: number | undefined | null, sampleRate?: number | undefined | null): Index
149
+ static btree(): Index
150
+ }
151
+ /** Typescript-style Async Iterator over RecordBatches */
152
+ export class RecordBatchIterator {
153
+ next(): Promise<Buffer | null>
154
+ }
155
+ /** A builder used to create and run a merge insert operation */
156
+ export class NativeMergeInsertBuilder {
157
+ whenMatchedUpdateAll(condition?: string | undefined | null): NativeMergeInsertBuilder
158
+ whenNotMatchedInsertAll(): NativeMergeInsertBuilder
159
+ whenNotMatchedBySourceDelete(filter?: string | undefined | null): NativeMergeInsertBuilder
160
+ execute(buf: Buffer): Promise<void>
161
+ }
162
+ export class Query {
163
+ onlyIf(predicate: string): void
164
+ select(columns: Array<[string, string]>): void
165
+ limit(limit: number): void
166
+ nearestTo(vector: Float32Array): VectorQuery
167
+ execute(maxBatchLength?: number | undefined | null): Promise<RecordBatchIterator>
168
+ explainPlan(verbose: boolean): Promise<string>
169
+ }
170
+ export class VectorQuery {
171
+ column(column: string): void
172
+ distanceType(distanceType: string): void
173
+ postfilter(): void
174
+ refineFactor(refineFactor: number): void
175
+ nprobes(nprobe: number): void
176
+ bypassVectorIndex(): void
177
+ onlyIf(predicate: string): void
178
+ select(columns: Array<[string, string]>): void
179
+ limit(limit: number): void
180
+ execute(maxBatchLength?: number | undefined | null): Promise<RecordBatchIterator>
181
+ explainPlan(verbose: boolean): Promise<string>
182
+ }
183
+ export class Table {
184
+ name: string
185
+ display(): string
186
+ isOpen(): boolean
187
+ close(): void
188
+ /** Return Schema as empty Arrow IPC file. */
189
+ schema(): Promise<Buffer>
190
+ add(buf: Buffer, mode: string): Promise<void>
191
+ countRows(filter?: string | undefined | null): Promise<number>
192
+ delete(predicate: string): Promise<void>
193
+ createIndex(index: Index | undefined | null, column: string, replace?: boolean | undefined | null): Promise<void>
194
+ update(onlyIf: string | undefined | null, columns: Array<[string, string]>): Promise<void>
195
+ query(): Query
196
+ vectorSearch(vector: Float32Array): VectorQuery
197
+ addColumns(transforms: Array<AddColumnsSql>): Promise<void>
198
+ alterColumns(alterations: Array<ColumnAlteration>): Promise<void>
199
+ dropColumns(columns: Array<string>): Promise<void>
200
+ version(): Promise<number>
201
+ checkout(version: number): Promise<void>
202
+ checkoutLatest(): Promise<void>
203
+ restore(): Promise<void>
204
+ optimize(olderThanMs?: number | undefined | null): Promise<OptimizeStats>
205
+ listIndices(): Promise<Array<IndexConfig>>
206
+ indexStats(indexName: string): Promise<IndexStatistics | null>
207
+ mergeInsert(on: Array<string>): NativeMergeInsertBuilder
208
+ }
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "vector database",
11
11
  "ann"
12
12
  ],
13
- "version": "0.10.0-beta.0",
13
+ "version": "0.10.0",
14
14
  "main": "dist/index.js",
15
15
  "exports": {
16
16
  ".": "./dist/index.js",
@@ -92,11 +92,11 @@
92
92
  "reflect-metadata": "^0.2.2"
93
93
  },
94
94
  "optionalDependencies": {
95
- "@lancedb/lancedb-darwin-arm64": "0.10.0-beta.0",
96
- "@lancedb/lancedb-linux-arm64-gnu": "0.10.0-beta.0",
97
- "@lancedb/lancedb-darwin-x64": "0.10.0-beta.0",
98
- "@lancedb/lancedb-linux-x64-gnu": "0.10.0-beta.0",
99
- "@lancedb/lancedb-win32-x64-msvc": "0.10.0-beta.0"
95
+ "@lancedb/lancedb-darwin-arm64": "0.10.0",
96
+ "@lancedb/lancedb-linux-arm64-gnu": "0.10.0",
97
+ "@lancedb/lancedb-darwin-x64": "0.10.0",
98
+ "@lancedb/lancedb-linux-x64-gnu": "0.10.0",
99
+ "@lancedb/lancedb-win32-x64-msvc": "0.10.0"
100
100
  },
101
101
  "peerDependencies": {
102
102
  "apache-arrow": ">=13.0.0 <=17.0.0"