Competitive single-thread latency, scale-to-zero idle cost, and capabilities no other store has.
Cost proof
And it's 10-80x cheaper at scale.
Cost is the closer, not the opener. The model works because idle namespaces scale to zero and vectors persist on your object storage.
Cost calculatorEstimate your monthly MVS bill based on vector count, dimensions, and usage. All pricing is pay-as-you-go with no upfront commitments.
vs Competitors: 50K vectors, 768d, concurrency=1
p50 Latency
QPS (concurrency=10)
Recall@10
MVS stores vectors on your object storage (S3/GCS/B2) with PQ-compressed indexes in RAM. Competitive latency at single-thread, scale-to-zero idle cost, 10-80x cheaper than Pinecone/Weaviate at scale. Full benchmark methodology.
Pure Usage-Based Pricing
No per-vector caps. No namespace limits. Pay only for what you use.
$0.023
per GB / month
Storage
S3 / GCS / B2 pass-through
$25
per GB / month
Hot Cache
PQ indexes in RAM, sub-10ms
$1
per 1M writes
Writes
Upsert, update, delete
$1
per 1M queries
Queries
Idle namespaces scale to zero
How MVS compares at scale
| Vectors | MVS | Qdrant | Pinecone | Weaviate |
|---|---|---|---|---|
| 1M | Free | $120 | $500 | $73 |
| 10M | $50 | $460 | $2,700 | $730 |
| 100M | $299 | $1,255 | $25,000 | $7,300 |
| 1B | $1,999 | $12,500 | $26,000 | $73,000 |
| 5B | $7,999 | Contact sales | Contact sales | Contact sales |
| 10B | $14,999 | Contact sales | Contact sales | Contact sales |
Competitor prices from public pricing calculators (768d, ~100 QPS). Qdrant = dedicated cluster; Pinecone = serverless read units; Weaviate = per-dimension pricing. MVS includes scale-to-zero; idle namespaces cost only storage. Benchmark repo.
Support Tiers
Same usage rates on every tier. Tiers gate support level, not features.
Managed path
Need Mixpeek to extract the embeddings too?
Start with your own vectors in MVS. When you want faces, scenes, transcripts, OCR, or other features generated for the same objects, move that workload to Managed without rebuilding your retrieval layer.
What Managed adds
Feature extractors
Vision, audio, text -- embeddings generated for you on ingest
Automatic indexing
Upload a file, get searchable vectors without writing pipeline code
Pipeline orchestration
Multi-step processing with branching, retries, and monitoring
Webhooks and alerts
Real-time notifications on ingest completion, anomalies, and threshold triggers
How to upgrade
Same namespace
Your existing vectors, metadata, and indexes stay exactly where they are
No migration
Managed builds on top of MVS -- your data is already in the right place
One click in Studio
Toggle your namespace from Standalone to Managed in the dashboard
Incremental adoption
Start with one extractor, add more as you need them -- no all-or-nothing switch
Feature Comparison
S3 Vectors is a cheap index. MVS is a database with agent-native retrieval. Different tools.
| Capability | Pinecone | Qdrant | S3 Vectors | MVS |
|---|---|---|---|---|
| Database operations on your vectors | ||||
| Dense vector search (ANN)Approximate nearest neighbor search over high-dimensional embeddings. The baseline capability every vector store needs. | ||||
| Native dense + sparse + BM25 hybrid searchFuse semantic, sparse, and keyword relevance in one query plan. S3 Vectors is an index; MVS runs hybrid retrieval natively. | Dense + sparse | Dense + sparse | Dense + sparse + BM25 | |
| Semantic JOINs across namespacesJoin two namespaces by vector similarity, like a SQL JOIN but on embeddings. No denormalization or data duplication required. | ||||
| Aggregations (GROUP BY, COUNT, SUM, AVG)Run analytics directly on your vector store. Group documents by metadata fields and compute counts, averages, and sums without ETL. | ||||
| Cross-shard transactionsAtomic writes across multiple shards using two-phase commit, so multi-namespace changes remain all-or-nothing. | ||||
| Time-travel queriesQuery data as it existed at a past point in time by replaying the write-ahead log. Useful for debugging, auditing, and reproducibility. | ||||
| Object storage-native persistenceData lives in your object storage. S3 Vectors gives you a cheap index; MVS adds database operations on the same storage foundation. | ||||
| Built for agentic workloads | ||||
| Streaming partial resultsGet results as shards respond instead of waiting for every shard. Agents can evaluate early hits and decide whether to refine or cancel. | ||||
| Query cancellationCancel in-flight fan-out queries that an agent no longer needs. Freed shard work returns to the pool instead of burning through the loop. | ||||
| Per-agent budget limitsEnforce max queries, writes, and compute per agent or API key at the coordinator level. Prevent runaway autonomous loops from running up spend. | ||||
| Standing queriesRegister a persistent query that fires a webhook whenever a newly ingested document matches. | ||||
| Multi-stage retrieval pipelinesChain retrieval stages such as broad recall, filtering, joining, and reranking in one request instead of wiring round trips in application code. | ||||
| Query audit logFull audit trail of every query: who ran it, when, and what was returned. Agents need inspectable retrieval, not black-box calls. | ||||
Quick Start
Start searching in 60 seconds
Generate embeddings with any provider. Upsert to MVS. Search.
from openai import OpenAIfrom mixpeek import Mixpeekopenai = OpenAI()mvs = Mixpeek(api_key="YOUR_KEY")# Generate embeddingresp = openai.embeddings.create(model="text-embedding-3-small",input="red sports car on a mountain road")embedding = resp.data[0].embedding# Upsert to MVSmvs.namespaces.documents.upsert(namespace="ns_demo",documents=[{"id": "doc_1","dense_embedding": embedding,"metadata": {"source": "catalog", "type": "image"}}])# Searchresults = mvs.namespaces.documents.search(namespace="ns_demo",queries=[{"vector": embedding, "top_k": 10}])
Works with any provider that outputs a float array. Bring your own model, your own dimensions.
API Examples
Capabilities you will not find in any other vector database.
Write documents with dense, sparse, and metadata in a single call.
from mixpeek import Mixpeekclient = Mixpeek(api_key="YOUR_KEY")client.namespaces.upsert(namespace="products",documents=[{"id": "doc-001","dense_embedding": [0.12, -0.34, ...], # 768-d"sparse_embedding": {"tokens": [1204, 879], "weights": [0.9, 0.4]},"metadata": {"category": "electronics", "price": 299.99},"text": "Noise-cancelling wireless headphones"}])
Write documents with dense, sparse, and metadata in a single call.
from mixpeek import Mixpeekclient = Mixpeek(api_key="YOUR_KEY")client.namespaces.upsert(namespace="products",documents=[{"id": "doc-001","dense_embedding": [0.12, -0.34, ...], # 768-d"sparse_embedding": {"tokens": [1204, 879], "weights": [0.9, 0.4]},"metadata": {"category": "electronics", "price": 299.99},"text": "Noise-cancelling wireless headphones"}])
How it works
Watch a request flow through the architecture.
SDK / REST API
1 per namespace · consistent-hash routing
Snapshot on S3
Any S3-compatible object store
Free Proof of Concept
See it working on your data
Book a 60-minute architecture review. We'll run MVS on your actual workload and benchmark it against your current vector database.
Ethan Steininger
Founder & CEO, Mixpeek
In 60 minutes, you will get:
10-80x
Lower cost range
at scale
< 1hr
Typical migration
for 100M vectors
10B+
Vectors supported
per index
Benchmark, stated plainly
Competitive single-thread latency, scale-to-zero idle cost, and database operations the cheap object-storage indexes do not expose.
Review the benchmark methodologyNeed Mixpeek to extract the embeddings too?
Use MVS for your own vectors. When you need faces, scenes, transcripts, OCR, or multimodal embeddings generated from the same objects, move that workload to Managed without rebuilding retrieval.
Already stitching extractors, indexes, and retrievers together? Start with MVS, then climb to Managed






