This looks really promising and thanks for sharing! I've actually been looking into this exact type of functionality lately, for anyone else I'm just going to drop some other projects in this area (also if anyone, including OP, want's to chime in on how they compare- i know there's all sorts of trade-offs ie. the similarity algo chosen, one of these relies on wasm, etc):
https://github.com/tantaraio/voy
https://github.com/nitaiaharoni1/vector-storage
https://github.com/danielivanovz/indexed-vector-store
https://github.com/yusufhilmi/client-vector-search
Another area I've looked into briefly is also trying to generate vector embeddings fully in-browser. I know there will likely be tradeoffs with dimensionality / overall accuracy/performance but having a semi-decent way to do this in-browser would be awesome.
This project only runs in node (but there's an issue that talks about how it might be modified to run in-browser):
https://github.com/Anush008/fastembed-js
Looks like transformers.js supports embeddings in-browser:
https://github.com/xenova/transformers.js/releases/tag/2.1.0
https://github.com/pinecone-io/semantic-search-example/blob/...
Also it appears the client-vector-search supports both embeddings & vector indexing
https://github.com/yusufhilmi/client-vector-search
Hope this helps others looking into this stuff!