A vector search SQLite extension that runs anywhere!
Find a file
Alex Garcia 07f56e3cbe Fix #if SQLITE_VEC_ENABLE_RESCORE guards wrapping non-rescore logic
Six sites used #if SQLITE_VEC_ENABLE_RESCORE to guard _vector_chunks
skip logic that applies to ALL non-flat index types. When RESCORE was
compiled out, DiskANN and IVF columns would incorrectly access flat
chunk tables. Two sites also missed DiskANN in the skip enumeration,
which would break mixed flat+DiskANN tables.

Fix: replace all six compile-time guards with unconditional runtime
`!= VEC0_INDEX_TYPE_FLAT` checks. Also move rescore_on_delete inside
the !vec0_all_columns_diskann guard to prevent use of uninitialized
chunk_id/chunk_offset, and initialize those variables to 0.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 13:51:08 -07:00
.github rm demo gha workflow 2026-03-31 01:21:54 -07:00
benchmarks Add ANN search support for vec0 virtual table (#273) 2026-03-31 01:03:32 -07:00
benchmarks-ann Add comprehensive ANN benchmarking suite (#279) 2026-03-31 01:29:49 -07:00
bindings Add ANN search support for vec0 virtual table (#273) 2026-03-31 01:03:32 -07:00
examples node:sqlite sample 2025-01-24 13:30:14 -08:00
scripts Fix broken unzip -d line in vendor.sh 2026-03-31 13:14:18 -07:00
site Add ANN search support for vec0 virtual table (#273) 2026-03-31 01:03:32 -07:00
tests Add DiskANN index for vec0 virtual table 2026-03-31 01:21:54 -07:00
.gitignore Add comprehensive ANN benchmarking suite (#279) 2026-03-31 01:29:49 -07:00
ARCHITECTURE.md Metadata filtering (#124) 2024-11-20 00:59:34 -08:00
LICENSE-APACHE add licenses 2024-05-10 22:42:10 -07:00
LICENSE-MIT add licenses 2024-05-10 22:42:10 -07:00
Makefile Add DiskANN index for vec0 virtual table 2026-03-31 01:21:54 -07:00
README.md sponsor update 2025-01-24 12:00:41 -08:00
reference.yaml Remove vec_npy_each from default entrypoint and move to sqlite3_vec_numpy_init entrypoint 2024-09-25 23:07:17 -07:00
SECURITY.md add security doc 2024-09-26 00:22:31 -07:00
sqlite-dist.toml update sqlite-dist 2024-08-05 16:03:09 -07:00
sqlite-vec-diskann.c Add DiskANN index for vec0 virtual table 2026-03-31 01:21:54 -07:00
sqlite-vec-ivf-kmeans.c Add IVF index for vec0 virtual table 2026-03-31 01:18:47 -07:00
sqlite-vec-ivf.c Add IVF index for vec0 virtual table 2026-03-31 01:18:47 -07:00
sqlite-vec-rescore.c Add DiskANN index for vec0 virtual table 2026-03-31 01:21:54 -07:00
sqlite-vec.c Fix #if SQLITE_VEC_ENABLE_RESCORE guards wrapping non-rescore logic 2026-03-31 13:51:08 -07:00
sqlite-vec.h.tmpl cleanup 2024-11-20 06:48:13 -08:00
test.sql Metadata filtering (#124) 2024-11-20 00:59:34 -08:00
TODO Metadata filtering (#124) 2024-11-20 00:59:34 -08:00
TODO.md Add ANN search support for vec0 virtual table (#273) 2026-03-31 01:03:32 -07:00
VERSION v0.1.10-alpha.1 2026-03-31 01:31:39 -07:00

sqlite-vec

An extremely small, "fast enough" vector search SQLite extension that runs anywhere! A successor to sqlite-vss

Important

sqlite-vec is a pre-v1, so expect breaking changes!

  • Store and query float, int8, and binary vectors in vec0 virtual tables
  • Written in pure C, no dependencies, runs anywhere SQLite runs (Linux/MacOS/Windows, in the browser with WASM, Raspberry Pis, etc.)
  • Store non-vector data in metadata, auxiliary, or partition key columns

Mozilla Builders logo

sqlite-vec is a Mozilla Builders project, with additional sponsorship from Fly.io , Turso, SQLite Cloud, and Shinkai. See the Sponsors section for more details.

Installing

See Installing sqlite-vec for more details.

Language Install More Info
Python pip install sqlite-vec sqlite-vec with Python PyPI
Node.js npm install sqlite-vec sqlite-vec with Node.js npm
Ruby gem install sqlite-vec sqlite-vec with Ruby Gem
Go go get -u github.com/asg017/sqlite-vec/bindings/go sqlite-vec with Go Go Reference
Rust cargo add sqlite-vec sqlite-vec with Rust Crates.io
Datasette datasette install datasette-sqlite-vec sqlite-vec with Datasette Datasette
rqlite rqlited -extensions-path=sqlite-vec.tar.gz sqlite-vec with rqlite rqlite
sqlite-utils sqlite-utils install sqlite-utils-sqlite-vec sqlite-vec with sqlite-utils sqlite-utils
Github Release GitHub tag (latest SemVer pre-release)

Sample usage

.load ./vec0

create virtual table vec_examples using vec0(
  sample_embedding float[8]
);

-- vectors can be provided as JSON or in a compact binary format
insert into vec_examples(rowid, sample_embedding)
  values
    (1, '[-0.200, 0.250, 0.341, -0.211, 0.645, 0.935, -0.316, -0.924]'),
    (2, '[0.443, -0.501, 0.355, -0.771, 0.707, -0.708, -0.185, 0.362]'),
    (3, '[0.716, -0.927, 0.134, 0.052, -0.669, 0.793, -0.634, -0.162]'),
    (4, '[-0.710, 0.330, 0.656, 0.041, -0.990, 0.726, 0.385, -0.958]');


-- KNN style query
select
  rowid,
  distance
from vec_examples
where sample_embedding match '[0.890, 0.544, 0.825, 0.961, 0.358, 0.0196, 0.521, 0.175]'
order by distance
limit 2;
/*
┌───────┬──────────────────┐
│ rowid │     distance     │
├───────┼──────────────────┤
│ 2     │ 2.38687372207642 │
│ 1     │ 2.38978505134583 │
└───────┴──────────────────┘
*/

Sponsors

Development of sqlite-vec is supported by multiple generous sponsors! Mozilla is the main sponsor through the new Builders project.

Mozilla Builders logo

sqlite-vec is also sponsored by the following companies:

Fly.io logo Turso logo SQLite Cloud logo Shinkai logo

As well as multiple individual supporters on Github sponsors!

If your company interested in sponsoring sqlite-vec development, send me an email to get more info: https://alexgarcia.xyz

See Also

  • sqlite-ecosystem, Maybe more 3rd party SQLite extensions I've developed
  • sqlite-rembed, Generate text embeddings from remote APIs like OpenAI/Nomic/Ollama, meant for testing and SQL scripts
  • sqlite-lembed, Generate text embeddings locally from embedding models in the .gguf format