$ memista

memista vs USearch (direct)

memista is USearch with SQLite and HTTP attached. Here's what each one gives you, and when the wrapper earns its keep.

vs: USearchUpdated: 2026-06-01

memista uses USearch as its vector index. The honest comparison is therefore not “library A vs library B” — it is “do I want USearch by itself, or with the metadata layer, persistence helpers, and HTTP service memista wraps around it?“

dimensionmemista 0.1.xUSearch 2.19.x (direct)
LayerLibrary + bundled HTTP serverLibrary only
Vector indexUSearch (transitive)USearch (native)
Metric availableIP (hardcoded in IndexOptions)IP, Cosine, L2, Hamming, Tanimoto, Sorensen, Haversine, Divergence
QuantizationF32 (hardcoded)F32, F16, F64, BF16, I8, B1
Embedding dimensionshardcoded to 2 in current crateruntime-set
Metadata storageSQLite (chunks_<db_id> table)none — you bring your own
Multi-tenantby database_id (one table + one index file each)by separate index instances
HTTP API/v1/insert, /v1/search, /v1/drop via Actix-webnone
OpenAPI / docs UIyes — apistos + Swagger / Redoc / RapiDoc / Scalarnone
PersistenceSQLite WAL + <db_id>.usearch file.usearch file (you call save / load)
Asyncyes (tokio, async-sqlite, actix-web)sync core, async wrappers available
Tuning surfaceaccepts USearch defaults (connectivity: 0, expansion_*: 0)full IndexOptions exposed
Statusexperimental (per README)production at Unum
LicenseGPL-3.0Apache-2.0

When to pick USearch directly

  • You only need the vector index. You already have a place for metadata (an existing Postgres, a flat file, whatever) and don’t want a second database in the picture.
  • You need to tune connectivity, expansion_add, expansion_search, or use a non-IP metric, or quantize to f16 / i8 / b1. memista’s current load_or_create_index does not expose these.
  • You want the full set of distance metrics — cosine, L2, Hamming. memista uses MetricKind::IP in the source; cosine via IP requires you to normalize vectors yourself before insertion, which memista does not do.
  • License: USearch is Apache-2.0. memista is GPL-3.0, which is meaningful if you ship a proprietary binary.

When to pick memista

  • You want HTTP-out-of-the-box. memista gives you an Actix-web server with OpenAPI documentation rendered four ways at /swagger, /redoc, /rapidoc, /scalar. USearch does not.
  • You want SQLite-backed metadata storage already wired up. memista creates a chunks_<database_id> table per logical partition, inserts text and metadata, and joins index hits back to rows for you. With USearch direct, you write that layer.
  • You want multi-tenant isolation by database_id. memista’s pattern of one SQLite table and one .usearch file per partition is in the box.
  • You are prototyping. The combination of “single cargo install,” REST endpoints, and sqlite3 memista.db for inspection is the fastest way to a working RAG demo in Rust.

What memista does not do that USearch does

  • Expose all metrics. Hardcoded to IP.
  • Expose quantization choices. Hardcoded to F32.
  • Expose tuning parameters. Passed as 0 (USearch defaults).
  • Accept arbitrary embedding dimensions. Hardcoded to 2 in src/lib.rs. You will edit this; a real release should make it configurable from IndexOptions per database_id.
  • Run at the scale USearch is tested at. memista’s README states it has not been tested past ~100k vectors.

What USearch does not do that memista does

  • Bind to a port and serve HTTP.
  • Persist metadata.
  • Render OpenAPI documentation.
  • Provide multi-tenant partitioning by string ID.

The honest summary

memista is a convenience wrapper. If you want the convenience — SQLite plus HTTP plus OpenAPI plus partitioning, in one crate — it earns its keep. If you want the full power of USearch and don’t need a service shape, use USearch directly. The two are not really competitors; memista is a configuration of USearch with batteries.

Sources: src/lib.rs and Cargo.toml in this repository; USearch documentation at https://github.com/unum-cloud/usearch.

← All comparisons

Related

Try memista

A single crate, GPL-3.0. Two files on disk and three endpoints.