API reference¶
Full reference for the core (vecnest) and React (vecnest/react) APIs.
Core API (vecnest)¶
openDB(name?)¶
Opens the IndexedDB database.
| Parameter | Type | Default | Description |
|---|---|---|---|
name |
string |
'vecnest' |
IndexedDB database name. |
Returns: Promise<IDBDatabase>
insert(db, vector, metadata?, opts?)¶
Inserts a vector and metadata. Optionally updates the HNSW index.
import { openDB, insert } from 'vecnest';
const db = await openDB('my-db');
const id = await insert(db, [0.1, -0.2, 0.5, ...], { label: 'doc-1' }, { updateHnsw: true });
db.close();
| Parameter | Type | Description |
|---|---|---|
db |
IDBDatabase |
From openDB. |
vector |
number[] |
Vector to store. |
metadata |
object |
Optional metadata. |
opts.updateHnsw |
boolean |
Update HNSW index (default true). |
Returns: Promise<number> — Inserted record ID.
insertBatch(db, items, opts?)¶
Batch insert in a single transaction. More efficient than multiple insert calls.
import { openDB, insertBatch } from 'vecnest';
const db = await openDB('my-db');
const items = [
{ vector: [0.1, ...], metadata: { title: 'A' } },
{ vector: [0.2, ...], metadata: { title: 'B' } },
];
const ids = await insertBatch(db, items, { updateHnsw: true });
// ids: [1, 2]
db.close();
| Parameter | Type | Description |
|---|---|---|
db |
IDBDatabase |
From openDB. |
items |
Array<{ vector, metadata? }> |
Vectors and optional metadata. |
opts.updateHnsw |
boolean |
Update HNSW index (default true). |
Returns: Promise<number[]> — Inserted IDs, same order as items.
search(db, queryVector, opts?)¶
Similarity search by vector.
import { openDB, search } from 'vecnest';
const db = await openDB('my-db');
const results = await search(db, queryVector, {
k: 10,
filter: { category: 'docs' },
useHnsw: true,
useWorker: false,
});
// results: [{ id, score, metadata }, ...]
db.close();
| Parameter | Type | Description |
|---|---|---|
db |
IDBDatabase |
From openDB. |
queryVector |
number[] |
Query vector. |
opts.k |
number |
Max results (default 10). |
opts.filter |
object |
Metadata filter. See Metadata filtering. |
opts.useHnsw |
boolean |
Use HNSW (default true). |
opts.useWorker |
boolean |
Use Web Worker for brute-force (default false). |
Returns: Promise<Array<{ id: number, score: number, metadata: object }>>
update(db, id, updates)¶
Updates a vector and/or metadata by ID.
import { openDB, update } from 'vecnest';
const db = await openDB('my-db');
await update(db, 123, {
vector: newVector, // optional
metadata: { key: 'val' }, // merged with existing
});
db.close();
| Parameter | Type | Description |
|---|---|---|
db |
IDBDatabase |
From openDB. |
id |
number |
Record ID. |
updates.vector |
number[] |
New vector (optional). |
updates.metadata |
object |
Metadata to merge (optional). |
Returns: Promise<void>
remove(db, id, opts?)¶
Deletes a vector by ID. Optionally rebuilds the HNSW index.
import { openDB, remove } from 'vecnest';
const db = await openDB('my-db');
await remove(db, 123, { rebuildHnsw: true });
db.close();
| Parameter | Type | Description |
|---|---|---|
db |
IDBDatabase |
From openDB. |
id |
number |
Record ID. |
opts.rebuildHnsw |
boolean |
Rebuild HNSW after delete (default true). |
Returns: Promise<void>
count(db)¶
Returns the total number of vectors.
import { openDB, count } from 'vecnest';
const db = await openDB('my-db');
const n = await count(db);
db.close();
Returns: Promise<number>
list(db, opts?)¶
Lists vectors, newest first, with optional pagination.
import { openDB, list } from 'vecnest';
const db = await openDB('my-db');
const items = await list(db, { limit: 50, offset: 0 });
// items: [{ id, vector, metadata, created }, ...]
db.close();
| Parameter | Type | Description |
|---|---|---|
opts.limit |
number |
Max items (default 50). |
opts.offset |
number |
Skip (default 0). |
Returns: Promise<Array<{ id, vector, metadata, created }>>
getStorageEstimate()¶
Returns storage usage and quota for the current origin (bytes). Not specific to Vecnest.
Returns: Promise<{ usage: number, quota: number }>
cosineSimilarity(a, b)¶
Computes cosine similarity between two vectors.
import { cosineSimilarity } from 'vecnest';
const sim = cosineSimilarity([0.1, 0.2], [0.1, 0.2]); // 1
Returns: number (0–1 when normalized).
embed(text, opts?) / embedBatch(texts, opts?)¶
Transformers.js embeddings. Use when you need vectors without storing them.
import { embed, embedBatch } from 'vecnest';
const v = await embed('Hello');
const vs = await embedBatch(['A', 'B', 'C']);
Returns: Promise<number[]> / Promise<number[][]>
rebuildHnswIndex(db, dimensions, maxElements?, m?, efConstruction?)¶
Rebuilds the HNSW index from all vectors. Use after bulk updates/deletes.
import { openDB, rebuildHnswIndex } from 'vecnest';
const db = await openDB('my-db');
await rebuildHnswIndex(db, 384, 10000, 16, 200);
db.close();
VecnestDB¶
High-level client. Use vecnest (not raw openDB) for most apps.
Constructor¶
Methods¶
| Method | Description |
|---|---|
connect() |
Opens DB. Required before other methods. |
close() |
Closes DB. |
insert(vector, metadata?, opts?) |
Insert vector + metadata. |
addText(text, metadata?) |
Embed + insert. |
addTexts(texts, metadata?) |
Batch embed + insert. |
search(queryVector, opts?) |
Vector search. |
searchText(queryText, opts?) |
Embed query + search. |
update(id, { vector?, metadata? }) |
Update by ID. |
delete(id, opts?) |
Delete by ID. |
count() |
Total vector count. |
list(opts?) |
List with pagination. |
rebuildIndex(dimensions, opts?) |
Rebuild HNSW index. |
Static¶
| Method | Description |
|---|---|
VecnestDB.getStorageEstimate() |
{ usage, quota } in bytes. |
React API (vecnest/react)¶
useVecnest(dbName)¶
Opens the DB and returns { db, loading, error }. Closes on unmount.
useSearch(db, queryVector, opts?)¶
Runs vector search. Returns { results, loading, error }.
const { results, loading, error } = useSearch(db, queryVector, { k: 5, filter, useHnsw, useWorker });
Use a stable queryVector (e.g. useMemo) to avoid unnecessary re-runs.
useSearchText(db, queryText, opts?)¶
Embeds the query and runs search. Returns { results, loading, error }.
See also¶
- Metadata filtering — Filter syntax and examples.
- Architecture — Storage, search, and SDK design.