
1.1k stars · Elastic Licence 2.0: free inside a project under an OSI-approved open-source licence, commercial licence required for production or managed-service use · 1.1.2, 11 September 2026 · Track this in Scout
An add-on that gives the single-file SQLite database meaning-based search, with its own accuracy figures printed in the README.
▶Repo detailsthe review · specs · pros & cons · install
What it does
SQLite is a complete database that lives in one ordinary file, with no server, and it is already inside most phones and browsers. This extension, which is a piece of code SQLite loads at run time, stores lists of numbers that represent meaning — called vectors — in normal columns, with no special tables and no index to build first. You call vector_init to declare a column's size and distance measure, vector_quantize to build a compressed index, and vector_quantize_scan to find nearest matches. It offers several compression levels, from full precision down to a single bit per number, and runs on iOS, Android, Windows, Linux, macOS and in the browser. Memory use defaults to about 30 MB, and the project shows the trade: a one-million-row index at full precision needs 2,930 MB on disk against 740 MB compressed, and streaming within a 30 MB limit costs roughly three times the waiting time. What it does not do is pretend. Its own benchmark table on one million random 768-number vectors reports recall at 100 per cent for full precision, 99.5 per cent for 8-bit signed, 81.8 per cent and 45.2 per cent for two of its fast modes, 33.8 per cent for 8-bit unsigned, and 10.0 per cent for the single-bit mode. The README says plainly: "1BIT is a filter, not an answer."
Why it matters
Who it suits. Anyone building search-by-meaning into something that has to work on a phone, offline, or inside one process with no database server to run. The appeal is the absence of moving parts: no service, no network call, no second system to deploy. It also suits anyone who has been burned by a vector database that quietly returned poor results, because this project tells you the accuracy of each setting before you choose. Skip it if your data already lives in PostgreSQL, and skip it if you cannot accept a licence that is not open source.
Verdict. Worth an afternoon if a single-file database is where your data already is, and worth reading for an hour even if it is not, because the benchmark table is an education in what compression costs. Two warnings. The licence is the Elastic License 2.0: free inside a project that is itself under an approved open-source licence, but production or hosted use needs a commercial agreement with the company behind it. And the figures above come from uniform random data, which the project itself calls the hardest case, so measure your own embeddings rather than trusting either the good numbers or the bad ones. asg017/sqlite-vec is the alternative to weigh first, because it does a similar job under Apache-2.0 and MIT.
- Publishes recall figures for every compression mode, including the embarrassing ones, which almost no comparable project does.
- No separate tables and no server: vectors sit in ordinary columns of a file that is already there.
- Runs on iOS, Android, desktop and in the browser, with ready-made packages for Python, Android, Swift and Dart.
- The Elastic License 2.0 is not an open-source licence. Production and hosted use need a commercial agreement.
- The fast compression modes lose a great deal of accuracy, and one is accurate 10 per cent of the time, so a second full-precision pass is usually needed.
- Small project, 1,100 stars, and one company behind it, so the future depends on that company's plans.
asg017/sqlite-vecThe same idea of vector search inside SQLite with no server, under a genuinely open licence.
Track this in Scout
pgvector/pgvectorThe same job for PostgreSQL, which is the right answer when a server already exists.
Track this in Scout
supervc-stack/VectorChordA PostgreSQL extension aimed at large indexes that do not fit in memory.
Track this in Scout
python3 -m venv venv source venv/bin/activate pip install sqliteai-vector
