Vector Database

The Self-Hosted Vector Database with NoSQL Built In

Most vector databases store embeddings and nothing else — you still run a primary database beside them. Montycat is a self-hosted vector database and a NoSQL store in a single Rust-powered engine, so your records and their vectors live together — one engine, on your hardware, with no separate store to run and no sync to babysit.

Read the docs

What is a vector database?

A vector database stores data as high-dimensional embeddings — numeric representations of meaning — and finds the most similar items to a query using nearest-neighbor search. It is the backbone of semantic search, RAG, recommendations, and AI-agent memory.

The catch with dedicated vector databases: they hold only vectors. Your actual records — the documents, products, or messages the vectors describe — live in a separate primary database, and you run and synchronize both. Montycat removes that split.

How vector search works

Under the hood, every vector database does the same core steps. Montycat does them for you, in one engine:

  • Embedding — text is converted to a vector so that similar meanings sit close together in vector space.
  • Indexing — vectors are organized into an approximate nearest-neighbor (ANN) structure so search does not scan everything.
  • Similarity — a query vector is compared to stored vectors by cosine distance to find the closest matches.
  • Ranking — the top-k nearest neighbors are returned with similarity scores.

Montycat: vector search in your database

Montycat indexes your data in an HNSW graph via a SIMD-accelerated engine and stores the source records in the same keyspace. Writes are embedded in the background, so search stays current without a re-index pipeline, and the write path never blocks on embedding.

You query by meaning and get scored top-k results — with the underlying record right there, no join across services and no second system to keep in step.

Built for CPU, on your hardware

Montycat is engineered to run vector search well without a GPU:

  • HNSW graph index for sub-linear approximate nearest-neighbor search.
  • int8-quantized embedding models for fast on-device inference.
  • SIMD-accelerated distance kernels in a memory-safe Rust core.
  • Background, batched embedding so writes stay fast under load.

Self-hosted and open-source

Pull the semantic edition as a Docker image, install it from apt, or grab a prebuilt package. Embeddings run on-device and the data stays on your hardware — a genuinely self-hosted alternative to cloud vector databases, with MIT-licensed client libraries for Python, TypeScript, Dart, and Rust.

When to choose Montycat

Montycat is the right fit when you want vectors and records together rather than a standalone index:

  • You need semantic search or RAG but do not want to operate a separate vector database.
  • You want your data and its embeddings in one system, with nothing to sync.
  • You want self-hosting, data residency, and no per-query retrieval bill.
  • You also need real-time subscriptions or a NoSQL store — not just a vector index.

kNN search over your data (Rust)

// semantic search is on by default in the montycat-semantic edition
let hits = keyspace
    .semantic_search_get_values("Show all Bluetooth devices", None, None, false, false)
    .await;
// -> [{ __key__, __score__, __value__: { "name": "Wireless Headphones" } }, ...]  (matched by meaning, not keywords)

FAQ

How is Montycat different from a dedicated vector database?

Dedicated vector databases store only embeddings, so you run a separate primary store and sync the two. Montycat is a vector database and a NoSQL store in one engine — records and vectors together, nothing to sync.

Is it self-hosted and open-source?

Yes. Run it on your own infrastructure via Docker, apt, or prebuilt packages, with on-device embeddings and no external API.

Does it work for RAG and AI agents?

Yes — it is built as the retrieval and memory layer for RAG pipelines, AI agents, and semantic search.

Do I need a GPU?

No. Montycat uses int8-quantized models, an HNSW index, and SIMD distance kernels to run vector search efficiently on CPU.

Which languages have clients?

Official clients for Python, TypeScript/JavaScript, Dart/Flutter, and Rust, all talking to the same engine.

Explore