asg017 / sqlite-vec

Work-in-progress vector search SQLite extension that runs anywhere.
Apache License 2.0
967 stars 19 forks source link

sqlite-vec

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

[!IMPORTANT] sqlite-vec is a work-in-progress and not ready for general usage! I plan to launch a "beta" version in the next month or so. Watch this repo for updates, and read this blog post for more info.

Mozilla Builders logo

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

## Sample usage ```sql .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 goes brrrr 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 │ └───────┴──────────────────┘ */ ``` ## Roadmap Not currently implemented, but planned in the future (after initial `v0.1.0` version): - Approximate nearest neighbors search (DiskANN, IVF, maybe HNSW?) - Metadata filtering + custom internal partitioning - More vector types (float16, int16, sparse, etc.) and distance functions Additionally, there will be pre-compiled and pre-packaged packages of `sqlite-vec` for the following platforms: - `pip` for Python - `npm` for Node.js / Deno / Bun - `gem` for Ruby - `cargo` for Rust - A single `.c` and `.h` amalgammation for C/C++ - Go module for Golang (requires CGO) - Datasette and sqlite-utils plugins - Pre-compiled loadable extensions on Github releases ## 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 As well as multiple individual supporters on [Github sponsors](https://github.com/sponsors/asg017/)! If your company interested in sponsoring `sqlite-vec` development, send me an email to get more info: https://alexgarcia.xyz ## See Also - [**`sqlite-ecosystem`**](https://github.com/asg017/sqlite-ecosystem), Maybe more 3rd party SQLite extensions I've developed - [**`sqlite-rembed`**](https://github.com/asg017/sqlite-rembed), Generate text embeddings from remote APIs like OpenAI/Nomic/Ollama, meant for testing and SQL scripts - [**`sqlite-lembed`**](https://github.com/asg017/sqlite-lembed), Generate text embeddings locally from embedding models in the `.gguf` format