Frequently asked questions
Everything you need to know about memista — the lightweight vector search library for Rust.
General
General
What is memista?
memista is a lightweight vector search library for Rust. It pairs SQLite for chunk text and metadata with USearch (HNSW) for the vector index, exposing three HTTP endpoints via Actix-web. Embed it as a crate, or run the bundled server.
Is memista a vector database?
No. memista is a small library, not a distributed database. It runs as one process and writes two files per partition. It is for projects that need vector search but not a cluster to operate.
What language is memista written in?
Rust. It targets Rust 1.56 or newer, and installs with cargo add memista.
What license is memista under?
GPL-3.0. The source is on GitHub at github.com/Skelf-Research/memista and published to crates.io.
Is memista production-ready?
memista is experimental (v0.1.x) and tested under ~100k vectors. It is well suited to prototyping and small production workloads where a single binary and two files are the right shape. Validate carefully before larger scale.
Technical
Technical
What index and distance metric does memista use?
The index is USearch 2.19.x (HNSW), with SIMD via simsimd. The distance metric is Inner Product (MetricKind::IP) with F32 quantization. For normalised embeddings, inner product ranks the same way cosine does.
How is data stored?
Metadata (chunk text and a metadata string) lives in a SQLite table, chunks_
Why are embedding dimensions hardcoded to 2?
It is a demo default in the current experimental crate. Real embeddings are 384, 768, 1536, etc. You set IndexOptions::dimensions in src/lib.rs before shipping — see the guide on changing embedding dimensions.
Can I change dimensions on an existing index?
No. The on-disk USearch format is fixed at index creation. Changing dimensions requires rebuilding the index from your source vectors.
How many vectors can memista handle?
It has been tested under ~100k vectors, per the project README. That covers most embedded, per-project, and small-corpus workloads. For millions of vectors, use a distributed store.
Does memista authenticate requests?
No. The server binds to 127.0.0.1:8083 and trusts everything on the wire. If you expose it beyond the box, put a reverse proxy in front and terminate auth there.
Usage
Usage
Can I embed memista as a library?
Yes. Pull in create_app and AppState and mount the same handlers inside your own Actix-web binary, or run the bundled server as its own process.
What are the API endpoints?
POST /v1/insert (add chunks), POST /v1/search (nearest-neighbour query), and DELETE /v1/drop (drop a partition). OpenAPI docs are browsable at /swagger, /redoc, /rapidoc, and /scalar.
How do I back up a partition?
Checkpoint the SQLite WAL and cp both the .db and .usearch files. There is no separate export step because nothing is opaque.
Where can I find documentation?
Rustdoc is at docs.rs/memista and longer-form docs at docs.skelfresearch.com/memista. The source is on GitHub.