{"id":44377,"library":"bare-sqlite-vector","title":"bare-sqlite-vector","description":"SQLite Vector bindings for Bare that statically embed the sqlite-vector extension for vector encoding, nearest-neighbour search, and quantization-based ANN search. Version 0.1.1 is the current stable release, with no active release cadence. Key differentiators: tight integration with bare-sqlite, idempotent per-connection registration, and support for FLOAT32 vectors with L2 distance. No npm download statistics available; it is targeted at Bare runtime environments.","status":"active","version":"0.1.1","language":"javascript","source_language":"en","source_url":"https://github.com/holepunchto/bare-sqlite-vector","tags":["javascript","typescript"],"install":[{"cmd":"npm install bare-sqlite-vector","lang":"bash","label":"npm"},{"cmd":"yarn add bare-sqlite-vector","lang":"bash","label":"yarn"},{"cmd":"pnpm add bare-sqlite-vector","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required for database connections; the vector extension registers against a bare-sqlite DatabaseSync instance.","package":"bare-sqlite","optional":false}],"imports":[{"note":"Package is ESM-only; named export for register function.","wrong":"const register = require('bare-sqlite-vector').register","symbol":"register","correct":"import { register } from 'bare-sqlite-vector'"},{"note":"CommonJS require works but returns the whole module; use vector.register(). Named export destructuring from require fails.","wrong":"const { register } = require('bare-sqlite-vector')","symbol":"default (require)","correct":"const vector = require('bare-sqlite-vector')"},{"note":"TypeScript types are shipped; import type for type-only usage.","wrong":null,"symbol":"TypeScript type imports","correct":"import type { SQLiteVector } from 'bare-sqlite-vector'"}],"quickstart":{"code":"import { DatabaseSync } from 'bare-sqlite';\nimport { register } from 'bare-sqlite-vector';\n\nconst db = new DatabaseSync(':memory:');\nregister(db);\n\ndb.exec(`\n  CREATE TABLE points (id INTEGER PRIMARY KEY, v BLOB);\n  INSERT INTO points (v) VALUES (vector_as_f32('[1.0, 0.0, 0.0, 0.0]'));\n  INSERT INTO points (v) VALUES (vector_as_f32('[0.0, 1.0, 0.0, 0.0]'));\n`);\n\ndb.prepare(\"SELECT vector_init('points', 'v', 'type=FLOAT32,dimension=4,distance=L2')\").get();\n\nconst rows = db\n  .prepare(\n    \"SELECT rowid, distance FROM vector_full_scan('points', 'v', vector_as_f32('[0.9, 0.1, 0.0, 0.0]'), 2)\"\n  )\n  .all();\n\nconsole.log(rows);","lang":"typescript","description":"Shows import, registration, table creation, vector initialization, and nearest-neighbour query using bare-sqlite-vector."},"warnings":[{"fix":"Call `register(db)` for every new database connection.","message":"Vector extension must be registered per-connection; each new DatabaseSync instance requires a separate register() call.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Ensure the database is open before calling register() and before any vector operations.","message":"If the database connection is closed, register() throws 'DATABASE_NOT_OPEN'. Trying to use vector functions on a closed connection will fail.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Use ESM `import { register }` or CommonJS `const vector = require('bare-sqlite-vector')` and call `vector.register(db)`.","message":"Import style: Named export `register` is only available via ESM `import { register }`. CommonJS `require('bare-sqlite-vector')` returns the whole module object, and destructuring (`const { register } = require(...)`) will be `undefined` if the module uses ESM interop incorrectly.","severity":"gotcha","affected_versions":">=0.0.0"}],"env_vars":null,"search_vec":"'0.1.1':32 'activ':40 'ann':29 'avail':68 'bare':2,9,49,73 'bare-sqlit':48 'bare-sqlite-vector':1 'base':28 'bind':7 'cadenc':42 'connect':54 'current':35 'differenti':44 'distanc':63 'download':66 'emb':12 'encod':20 'environ':75 'extens':17 'float32':59 'idempot':51 'integr':46 'javascript':76 'key':43 'l2':62 'nearest':22 'nearest-neighbour':21 'neighbour':23 'npm':65 'per':53 'per-connect':52 'quantiz':27 'quantization-bas':26 'registr':55 'releas':37,41 'runtim':74 'search':24,30 'sqlite':3,5,15,50 'sqlite-vector':14 'stabl':36 'static':11 'statist':67 'support':57 'target':71 'tight':45 'typescript':77 'vector':4,6,16,19,60 'version':31","created_at":"2026-06-07T12:49:50.627291+00:00","updated_at":"2026-06-07T12:49:50.627291+00:00","problems":[{"fix":"Use `const vector = require('bare-sqlite-vector')` then call `vector.register(db)`.","cause":"Using destructured require when the module does not support named require destructuring.","error":"TypeError: register is not a function"},{"fix":"Create a new DatabaseSync or reopen the database before calling register().","cause":"Calling register() on a closed DatabaseSync instance.","error":"Error: DATABASE_NOT_OPEN"},{"fix":"Ensure vectors match the dimension and type specified in vector_init (e.g., FLOAT32 dimension=4).","cause":"Passing a vector with mismatched dimensions or unsupported type.","error":"RangeError: Invalid vector dimension"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/holepunchto/bare-sqlite-vector#readme","github":"https://github.com/holepunchto/bare-sqlite-vector","docs":null,"changelog":null,"pypi":null,"npm":"bare-sqlite-vector","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}