sqlite-vec works on MacOS, Linux, Windows, Raspberry Pis, in the browser with WASM, and (theoretically) on mobile devices. I focused a lot on making it as portable as possible. It's also pretty fast - benchmarks are hard to do accurately, but I'd comfortable saying that it's a very very fast brute-force vector search solution.
One experimental feature I'm working on: You can directly query vectors that are in-memory as a contiguous block of memory (ie NumPy), without any copying or cloning. You can see the benchmarks for that feature here under "sqlite-vec static", and it's competitive with faiss/usearch/duckdb https://alexgarcia.xyz/blog/2024/sqlite-vec-stable-release/i...
The link on See Installing sqlite-vec for more details. https://alexgarcia.xyz/sqlite-vec/installing.html is a a 404 (the correct link is https://alexgarcia.xyz/sqlite-vec/installation.html presumably).
The datasette link https://datasette.io/plugins/datasette-sqlite-vec is an error 500.
On the releases page https://github.com/asg017/sqlite-vec/releases/tag/v0.1.0 can you explain what is vec0.dll vs sqlite-vec-0.1.0-loadable-windows-x86_64.tar.gz, which also contains a similarly named vec0.dll but of a different size?
the cvec0.all file can be ignored. i was debugging a issue and uploaded a mscv compiled version as that, but its not part of the official release. prefer the tar.gz version and let me know if it doesn't work
Can't seem to make the loadable version work on Windows client (using .load and the latest x64 version of sqlite).
On Windows 10 it says "Error: the specified module could not be found."
On Windows 7 the error is more detailed and complains about missing libgcc_s_seh-1.dll which, according to a quick Google search, may or may not result from a compilation problem with MinGW...?
https://alexgarcia.xyz/sqlite-vec/wasm.html
It can also be statically compiled into the Wasm used by my Go bindings.
I wouldn't completely replace keyword search with vector search, but it's a great addition that essentially lets you perform calculations on text
Everything is based on the shazam algorithm or something similar, so chunking the audio stream, and fingerprinting it. I was focused on that because it allows me to figure out where OP and ED are in some anime and allows me to add a skip button. Also since anime in the same season typically have the same OP/ED I can use that to try and auto categorize them after the first ones been identified.
TL;DR: It's all shazam look alikes, everything else was to annoying to use.
[1] https://github.com/cgzirim/seek-tune [2] https://github.com/sfluor/musig [3] https://github.com/cpuimage/shazam
We’ve also added vector search to our product, which is really useful.
OpenAI’s official examples of embedding search use cosine similarity. But here’s the cool part: since OpenAI embeddings are unit vectors, you can just run the dot product instead!
DuckDB has a super fast dot product function that you can use with SQL.
In our product, we use duckdb-wasm to do vector searches on the client side.
Curious, what is your product?
Edit: Nevermind, your recent post explained it quite well: https://news.ycombinator.com/item?id=40520073
I've been looking for something like this for a while.
The libsql vector feature only works in libsql, sqlite-vec works in all SQLite versions. The libsql vector feature works kindof like pgvector, while sqlite-vec works more like the FTS5 full text SQLite extension.
I'd say try both and see which one you like more. sqlite-vec will soon be a part of Turso's and SQLite Cloud's products.
Turso's version: https://turso.tech/vector
I'd like to do a benchmark to compare it with sqlite-vec, but I guess it is not a fair comparison given that sqlite-vec uses brute-force only.
One thing I'd recommend is to include recall rate in your benchmark data.
Brute force approach is a good starting point but doesn't scale with serious production workload.
I’m writing a new vector search SQLite Extension - https://news.ycombinator.com/item?id=40243168 - May 2024 (85 comments)
My pyenv python3.12.2's sqlite won't load extensions even after installing with what I think are the correct command line flags. Argh!
My brew installed python3.12's sqlite will load extensions though, so I can proceed.