Implementations of
polystore::VectorStorefor multiple backends, plus an optional HTTP server bin.
- Lib-first:
VectorStoretrait impls for multiple backends, each gated by a feature flag. Embed directly into your application. - Bin-optional: an HTTP server (
vector-serverbin) for distributed access. Only compiled when a backend feature is enabled. - Backends as features: pick one or many; runtime CLI flag selects which backend the bin uses.
| Feature | Crate dep | Status |
|---|---|---|
qdrant-backend (default) |
reqwest (HTTP API) |
placeholder |
memory-backend |
— | placeholder |
use vector_store::{VectorStore, QdrantStore};
let store = QdrantStore::connect("http://localhost:6333", "my-collection")?;
store.upsert("id-1", &[0.1, 0.2, 0.3], serde_json::json!({"kind": "doc"})).await?;
let hits = store.search(&[0.1, 0.2, 0.3], 10).await?;Disable defaults to ship without Qdrant :
[dependencies]
vector-store = { git = "https://github.com/anatta-rs/vector-store", default-features = false, features = ["memory-backend"] }cargo install --git https://github.com/anatta-rs/vector-store --features qdrant-backend
QDRANT_URL=http://localhost:6333 QDRANT_COLLECTION=anatta vector-serverCLI flags pick the backend at runtime when multiple are compiled in.
GET /health → 200 OK
POST /upsert → upsert vector {id, vector, payload}
GET /vector/{id} → 200 + JSON {vector, payload} | 404
DELETE /vector/{id} → 204
POST /search → 200 + JSON top-K hits {query, k, filter?}
POST /batch/upsert → 201 (body = list of {id, vector, payload})
| 🟡 qdrant-backend (HTTP impl) | |
| 🟡 memory-backend (in-memory impl) | |
| 🟡 HTTP server bin | |
| 🟡 hannoy-backend (pure-Rust ANN) |
MIT.