sqlite-vss
with Deno
sqlite-vss
is available to Deno developers with the x/sqlite_vss
Deno module. It works with x/sqlite3
, the native Deno SQLite module.
ts
import { Database } from "https://deno.land/x/sqlite3@0.8.0/mod.ts";
import * as sqlite_vss from "https://deno.land/x/sqlite_vss@v0.1.2/mod.ts";
const db = new Database(":memory:");
db.enableLoadExtension = true;
sqlite_vss.load(db);
db.enableLoadExtension = false;
const [version] = db
.prepare("select vss_version()")
.value<[string]>()!;
console.log(version);
bash
deno run -A --unstable main.ts
Checkout the API Reference for all available SQL functions.
Also see Putting SQLite extensions on deno.land/x
(March 2023) for more information on how Deno SQLite extensions work.
Working with Vectors in Deno
Vectors as JSON
If your vectors in Deno are represented as an array of floats, you can insert them into a vss0
table as a JSON string with JSON.stringify()
.
js
const embedding = [0.1, 0.2, 0.3];
const stmt = db.prepare("INSERT INTO vss_demo VALUES (?)");
stmt.run(JSON.stringify(embedding));
Vectors as Bytes
Alternatively, if your vectors in Node.js are represented as a Float32Array, use the .buffer
accessor to insert the underlying ArrayBuffer.
js
const embedding = new Float32Array([0.1, 0.2, 0.3]);
const stmt = db.prepare("INSERT INTO vss_demo VALUES (?)");
stmt.run(embedding.buffer);