GraphCanon updated today · GitHub synced today
Decision brief
sqlite-vss is a specialized SQLite extension that enables efficient vector similarity searches by integrating Faiss functionality into the database operations.
Good fit when
- - When you require to perform vector similarity searches within an SQLite environment and want to leverage the performance benefits of Faiss
- - If your application runs primarily on an SQLite backend and can benefit from in-database vector search capabilities without needing a separate vector database service
Avoid when
- - When a standalone, fully managed vector database service that supports additional features beyond Faiss is needed
- - In environments where the overhead of integrating a C++ extension into an SQLite database might not be feasible or acceptable
Observed Jul 17, 2026 · Source: enrich:decision_facts
Verify the decision
Maintenance and security
Full trust report- Maintenance
- Dormant (839d since push)
- As of today
- Provenance
- Not a fork · Personal account
- As of today
- Security (OSV)
- No lockfile
- As of 1mo
Public GitHub metadata and optional OSV scans. Signals, not a guarantee. Trust methodology.
Install
git clone https://github.com/asg017/sqlite-vssSimilar tools
Same-category neighbours. No typed graph edges are catalogued for this tool yet.
Evidence and technical details
Sourced facts, taxonomy, compatibility claims, README excerpt, and machine-readable endpoints.
Overview
This project is a C++ implementation of an SQLite extension that integrates Faiss for facilitating efficient vector similarity searches within database operations.
Capability facts
- Languages
- c++
Source: github.language · Aug 23, 2026
Categories
Tags
README
sqlite-vss
[!WARNING]
sqlite-vssis not in active development. Instead, my effort is now going towardssqlite-vec, which is a similar vector search SQLite extension, but should be much easier to install and use thansqlite-vss. See this blog post for more info.
sqlite-vss (SQLite Vector Similarity Search) is a SQLite extension that brings vector search capabilities to SQLite, based on Faiss. It can be used to build semantic search engines, recommendations, or questions-and-answering tools.
See Introducing sqlite-vss: A SQLite Extension for Vector Search (February 2023) for more details and a live example!
If your company or organization finds this library useful, consider supporting my work!
Usage
.load ./vector0
.load ./vss0
select vss_version(); -- 'v0.0.1'
sqlite-vss has a similar API to the fts5 Full-Text Search Extension. Use the vss0 module to create virtual tables that can efficiently store and query your vectors.
-- 384 == number of dimensions for this example
create virtual table vss_articles using vss0(
headline_embedding(384),
description_embedding(384),
);
sqlite-vss is a Bring-your-own-vectors database, it is compatable with any embedding or vector data you have. Consider using OpenAI's Embeddings API, HuggingFace's Inference API, sentence-transformers, or any of these open source model. In this example, we are using sentence-transformers/all-MiniLM-L6-v2 to generate embeddings from our text, which have 384 dimensions.
You can insert vectors into vss0 tables as JSON or raw bytes.
insert into vss_articles(rowid, headline_embedding)
select rowid, headline_embedding from articles;
To query for similar vectors ("k nearest neighbors"), use the vss_search function in the WHERE clause. Here we are searching for the 100 nearest neighbors to the embedding in row #123 in the articles table.
select rowid, distance
from vss_articles
where vss_search(
headline_embedding,
(select headline_embedding from articles where rowid = 123)
)
limit 100;
You can INSERT and DELETE into these tables as necessary, but UPDATE operations aren't supported yet. This can be used with triggers for automatically updated indexes. Also note that "small" INSERT/DELETE operations that only insert a few rows can be slow, so batch where necessary.
begin;
delete from vss_articles
where rowid between 100 and 200;
insert into vss_articles(rowid, headline_embedding, description_embedding)
values (:rowid, :headline_embedding, :description_embedding)
commit;
You can pass in custom Faiss factory strings for specific columns to control how the Faiss index is stored and queried. By default the factory string is "Flat,IDMap2", which can be slow to query as your database grows. Here, we add an inverted file index with 4096 centroids, a non-exhaustive option that makes large database queries much faster.
create virtual table vss_ivf_articles using vss0(
headline_embedding(384) factory="IVF4096,Flat,IDMap2",
description_embedding(384) factory="IVF4096,Flat,IDMap2"
);
This IVF will require training! You can define training data wi
For agents
This page has a .md twin and JSON over the API.