Best Vector Database for Indie Developers (2026)
For most indie apps the best vector database is the Postgres you already run, with pgvector. If you want a managed store, Pinecone, Qdrant, Weaviate, Zilliz and Upstash all have free tiers, while Cloudflare Vectorize and Upstash are the cheapest pay-as-you-go options at a million vectors. Here is what each one costs on its own pricing page today.

Key takeaways
- Start with pgvector if you already use Postgres: it is under the permissive PostgreSQL License and runs on Supabase, Neon or any Postgres host.
- Free managed tiers: Pinecone Starter (2 GB), Qdrant Cloud (1 GB RAM, 4 GB disk), Weaviate (100,000 objects), Zilliz (5 GB) and Upstash Vector (1 GB, 10K queries and updates per day).
- Several paid tiers carry minimums: Pinecone Standard $50/month, Weaviate Flex from $45/month, turbopuffer Launch $16/month.
- In our 1M x 1536-dim example, Upstash pay-as-you-go and Cloudflare Vectorize land under about $25 a month on published unit prices.
- Qdrant, Chroma, LanceDB and Milvus are Apache-2.0 and Weaviate is mostly BSD-3-Clause, so self-hosting is a real exit route.
On this page 26
- TL;DR
- The vector databases compared
- The options, one by one
- pgvector: start here
- Pinecone: the managed default with a minimum
- Qdrant: best free cluster you can later self-host
- Weaviate: hybrid search out of the box
- Chroma: embedded for prototypes, Cloud when you ship
- turbopuffer: object-storage pricing with a floor
- Upstash Vector: per-request, serverless-friendly
- LanceDB: embedded, on disk or object storage
- Milvus and Zilliz Cloud
- MongoDB Atlas Vector Search
- Cloudflare Vectorize
- Redis
- Worked cost example: 1M vectors at 1536 dimensions
- Decision guide
- Migration and lock-in notes
- Frequently asked questions
- What is the best free vector database for a side project?
- Do I need a dedicated vector database or is pgvector enough?
- Which vector database is cheapest at one million vectors?
- Which vector databases support hybrid search?
- How do I avoid lock-in with a vector database?
- Ship the feature, then launch it
- Sources
Short answer: For most indie developers the best vector database is pgvector inside the Postgres you already run, because it is free, permissively licensed and keeps embeddings next to your users and permissions. If you want a separate managed store, pick Upstash Vector or Cloudflare Vectorize for the lowest pay-as-you-go bills, Qdrant or Pinecone for a free tier with room to grow, and Chroma or LanceDB for local, in-process prototypes.
This is a buyer's guide for adding semantic search, RAG or recommendations to an app with a few thousand to a few million vectors. For how vector search and HNSW work, see what a vector database is. Prices come from vendor pages checked 13 Nov 2026; advice is marked "Our read".
TL;DR#
- Default pick: pgvector. It is under the PostgreSQL License and runs on Supabase (free: 500 MB per project) or Neon (free: 1 GB per project).
- Best free managed tiers: Pinecone Starter (2 GB, 1M read units, 2M write units a month), Qdrant Cloud (1 GB RAM, 4 GB disk), Zilliz (5 GB), Weaviate (100,000 objects).
- Cheapest pay-as-you-go: Upstash Vector at $0.4 per 100K requests and $0.25 per GB, and Cloudflare Vectorize, billed per vector dimension.
- Watch the minimums: Pinecone Standard has a $50/month minimum, Weaviate Flex starts at $45/month, turbopuffer Launch at $16/month.
- Exit routes: Qdrant, Chroma, LanceDB and Milvus are Apache-2.0, so you can self-host later.
Disclosure: ZeroRaised publishes this guide and is a launch site for bootstrapped products. ZeroRaised has no commercial relationship with any vendor below and earns nothing if you sign up. Facts come from the linked sources as checked on 13 Nov 2026.
The vector databases compared#
| Option | Free tier | Entry paid price and billing unit | Self-host licence | Hybrid search | Metadata filtering |
|---|---|---|---|---|---|
| pgvector (any Postgres) | Free extension; Supabase free 500 MB/project, Neon free 1 GB/project | Your Postgres bill (Supabase Pro from $25/mo; Neon Launch $0.106/CU-hour, $0.35/GB-month) | PostgreSQL License | With Postgres full-text search | SQL WHERE |
| Pinecone | Starter: 2 GB, 1M RUs, 2M WUs/mo, 5 indexes | Standard: $50/mo minimum; $0.33/GB-month, $16-$18 per 1M RUs, $4-$4.50 per 1M WUs | Closed source | Filter-then-rank or client-side RRF | Yes |
| Qdrant | Cloud free: 0.5 vCPU, 1 GB RAM, 4 GB disk | Standard: usage-based per vCPU, GB RAM, GB disk, billed hourly | Apache-2.0 | Dense + sparse, RRF/DBSF fusion | Yes (payload filters) |
| Weaviate | Free: 100,000 objects, 1 GB memory, 10 GB disk | Flex from $45/mo; from $0.00465 per 1M vector dimensions | Mostly BSD-3-Clause | Vector + BM25F | Yes |
| Chroma | Embedded/self-host; Cloud Starter $0 + usage with $5 credits | $2.50/GiB written, $0.33/GiB-month, $0.0075/TiB queried | Apache-2.0 | Dense, sparse and hybrid | Yes |
| turbopuffer | None listed | Launch: $16/mo minimum; storage up to $0.33/GB, writes up to $2.00/GB | Closed source | Vector + BM25 with RRF | See docs |
| Upstash Vector | 1 GB, 10K queries and updates per day, up to 1,536 dims | $0.4 per 100K requests, $0.25/GB; Fixed $60/mo | Closed source | Hybrid indexes (dense + sparse) | Yes (SQL-like) |
| LanceDB | Open source, embedded | Enterprise: no public price | Apache-2.0 | Yes | Yes |
| Milvus / Zilliz Cloud | Zilliz free: 5 GB, 2.5M vCUs/mo, 5 collections | Serverless from $0/mo; Dedicated from $126/mo | Apache-2.0 (Milvus) | Dense + BM25 sparse, reranked | Yes (expr) |
| MongoDB Atlas Vector Search | Free cluster: 0.5 GB storage | Flex $8-$30/mo; M10 from $56.94/mo | Not covered here | Vector + full-text | Yes (pre-filter) |
| Cloudflare Vectorize | 5M stored, 30M queried dimensions/mo | Workers Paid ($5/mo minimum): $0.05 per extra 100M stored dims, $0.01 per extra 1M queried dims | Closed source | Not covered here | Yes (up to 10 metadata indexes) |
| Redis | Redis Cloud Free: 30 MB | Essentials from $5/mo | RSALv2 / SSPLv1 / AGPLv3 (your choice) | Vector + full-text in Redis Search | Yes |
RU and WU are Pinecone's read and write units. Sources are linked below.
The options, one by one#
pgvector: start here#
pgvector adds a vector column type and similarity search to Postgres. HNSW indexes support vector columns up to 2,000 dimensions and halfvec up to 4,000, and the README suggests using it "together with Postgres full-text search for hybrid search", merging results with Reciprocal Rank Fusion or a cross-encoder (pgvector on GitHub).
Where to run it cheaply:
- Supabase: free plan with 500 MB database per project, two active projects, paused after one week of inactivity. Pro is from $25/month with 8 GB disk per project, then $0.125 per GB, and $10/month in compute credits (Supabase pricing).
- Neon: free plan with up to 100 projects, 100 CU-hours and 1 GB per project. Launch is $0.106 per CU-hour and $0.35 per GB-month with no monthly minimum (Neon pricing).
Our free Postgres database guide compares more hosts. Our read: a 1536-dimension float vector is about 6 KB before indexing, so 500 MB holds tens of thousands of chunks, not millions.
Pinecone: the managed default with a minimum#
Starter is free (2 GB, 1M read units, 2M write units a month, 5 indexes). Standard has a $50/month minimum, a 3-week trial with $300 credits, and charges $0.33/GB-month, $16-$18 per million RUs and $4-$4.50 per million WUs by region (Pinecone pricing). A query uses 1 RU per GB of namespace (0.25 RU minimum) and an upsert 1 WU per KB (5 WU minimum) (cost docs), so per-customer namespaces keep queries cheap. Hybrid search works as filter-then-rank or client-side RRF (hybrid docs).
Qdrant: best free cluster you can later self-host#
Qdrant Cloud's free tier is a single node with 0.5 vCPU, 1 GB RAM and 4 GB disk, with no high availability. Paid Standard clusters are billed hourly on vCPU, memory and disk, with no fixed starting price published (Qdrant pricing). The engine is Apache-2.0 (GitHub), supports payload filters during search (filtering docs) and fuses dense and sparse results with rrf or dbsf (hybrid queries).
Weaviate: hybrid search out of the box#
Weaviate's free cloud tier allows one cluster, 100,000 objects, 1 GB memory, 10 GB disk and one collection. Flex is from $45/month, pay as you go, with vector dimensions from $0.00465 per million and storage from $0.12/GiB (Weaviate pricing). Hybrid search "combines the results of a vector search and a keyword (BM25F) search" and accepts filters (hybrid docs). Most of the repo is BSD-3-Clause, with a separately licensed wl/ folder (GitHub).
Chroma: embedded for prototypes, Cloud when you ship#
pip install chromadb and chromadb.Client() gives you an in-memory store "for easy prototyping"; chroma run starts a server (GitHub, Apache-2.0). The docs list metadata filtering plus "Dense, sparse, and hybrid search" (Chroma docs). Chroma Cloud Starter is $0/month plus usage with $5 in credits; usage is $2.50 per GiB written, $0.33 per GiB-month stored and $0.0075 per TiB queried (Chroma pricing).
turbopuffer: object-storage pricing with a floor#
turbopuffer has no free tier listed. Launch has a $16/month minimum, with storage up to $0.33/GB and writes up to $2.00/GB; queries are billed on data queried with a 1.28 GB minimum, and every write is billed at a minimum of 10 KB (turbopuffer pricing). It "supports vector search and BM25 full-text search" with server-side rank fusion (hybrid docs). Our read: it suits multi-tenant apps with many namespaces more than a single small index.
Upstash Vector: per-request, serverless-friendly#
Free: 1 GB of data, 10K queries and updates per day, up to 1,536 dimensions. Pay as you go: $0.4 per 100K requests, $0.25 per GB stored (50 GB max), up to 3,072 dimensions, 200 GB bandwidth free a month. Fixed is $60/month for 1M requests per day (Upstash pricing). It supports hybrid indexes (docs) and SQL-like metadata filters (filtering).
LanceDB: embedded, on disk or object storage#
LanceDB Embedded runs inside your process with data on local disk or object storage, Apache-2.0 (GitHub). The docs list vector, full-text and hybrid search, reranking, filtering and SQL (LanceDB docs). The managed LanceDB Enterprise service has no public price. Our read: a strong pick for desktop apps, CLIs and batch jobs where a server is overkill.
Milvus and Zilliz Cloud#
Milvus is Apache-2.0, and Milvus Lite installs with pip for quick starts (GitHub). It runs dense and BM25 sparse searches together, reranks with RRF and filters with expr (Milvus docs). Zilliz Cloud's free tier includes 5 GB storage, 2.5M vCUs a month and five collections; Serverless starts from $0/month and Dedicated from $126/month (Zilliz pricing).
MongoDB Atlas Vector Search#
If your data already lives in MongoDB, Atlas Vector Search pre-filters on indexed fields and supports hybrid search with full-text (MongoDB docs). The free cluster caps storage at 0.5 GB, including indexes (free cluster limits). Flex costs $8-$30 a month and M10 dedicated starts at $56.94/month (MongoDB pricing).
Cloudflare Vectorize#
Billed on dimensions, not GB. Workers Free includes 5M stored and 30M queried dimensions a month. Workers Paid includes 10M stored and 50M queried, then $0.05 per 100M stored and $0.01 per million queried (Vectorize pricing); the plan has a $5/month minimum (Workers pricing). Limits: 1,536 dimensions and 20M vectors per index, topK 50 with values or metadata (limits), and up to 10 metadata indexes, which must exist before you insert vectors (metadata filtering).
Redis#
Redis Search supports "vector search, full-text search, geospatial queries, and aggregations", and Redis 8 adds a vector set type in beta. From 8.0, Redis Open Source is under RSALv2, SSPLv1 or AGPLv3 at your option (GitHub). Redis Cloud Free is 30 MB and Essentials starts at $5/month (Redis pricing). Our read: 30 MB holds only a few thousand 1536-dim vectors, so this fits apps that already use Redis as a cache.
Worked cost example: 1M vectors at 1536 dimensions#
This is an illustrative example, not a quote. Assumptions: 1,000,000 vectors of 1,536 float32 dimensions (6,144 bytes each, about 6.1 GB raw, using 1 GB = 10^9 bytes), loaded once, then 100,000 queries a month. We ignore metadata, index overhead, bandwidth and taxes, so real bills will be higher.
| Option | Arithmetic from published unit prices | Rough monthly total |
|---|---|---|
| Upstash Vector (PAYG) | 6.1 GB x $0.25 = $1.54 storage; 1.1M requests (1M upserts + 100K queries) x $0.4/100K = $4.40 in the load month | ~$6 load month, ~$2 after |
| Cloudflare Vectorize | Stored: 1.536B dims minus 10M included = ~15.3 x 100M x $0.05 = $0.76. Queried, using Cloudflare's own formula (queries + stored vectors) x dims: 1.1M x 1,536 = 1.69B minus 50M = 1,640M x $0.01/M = $16.40 | ~$17 + $5 Workers minimum |
| Pinecone Standard | 6.1 GB x $0.33 = $2.03; each query ~6 RUs (1 RU per GB), 600K RUs x $16/M = $9.60; upserts ~6.1M WUs x $4/M = $24.58 in the load month | $50 minimum applies |
| Weaviate Flex | 1.536B dims x $0.00465/M = $7.14 | Flex from $45 applies |
| pgvector on Neon Launch | ~6.1 GB x $0.35 = $2.15 for vectors alone, plus the HNSW index and $0.106 per CU-hour of compute | Depends on compute hours |
Sources for every unit price: the pricing pages linked above. Note that 1M x 1536 is 1.536B vector-dimensions, which is over Upstash's free 200M limit and over the Pinecone Starter 2 GB storage cap.
Our read: at this size per-request and per-dimension pricing (Upstash, Vectorize) wins. Minimum-fee plans make sense once usage would exceed the minimum anyway. Smaller vectors cut every line here.
Decision guide#
| Your situation | Our pick |
|---|---|
| Already on Postgres (Supabase, Neon, RDS, your own box) | pgvector |
| Prototype or notebook, no server | Chroma or LanceDB embedded |
| Serverless app on Vercel or edge functions, low traffic | Upstash Vector |
| App already on Cloudflare Workers, up to 1,536 dims | Vectorize |
| Want a free managed tier now and self-host later | Qdrant |
| Keyword + semantic search matters (product search, docs) | Weaviate, Qdrant, or pgvector with full-text search |
| Data already in MongoDB | Atlas Vector Search |
| Need the least ops and can pay $50/month | Pinecone Standard |
| Many tenants, each with a small index | turbopuffer or Pinecone namespaces |
If you are building retrieval for an AI feature, our guide to what RAG is covers chunking and retrieval quality, which usually matter more than the store you pick.
Migration and lock-in notes#
Our read:
- Keep your main database as the source of truth. Store chunks, metadata and IDs there, so switching vendors means re-upserting from your own rows.
- Store the embedding model and version with every vector. A model change is a full re-index on any vendor.
- Wrap the store in one module (
upsert,delete,query). Filter syntax differs a lot between vendors, and that is where switching costs hide. - Check dimension caps before picking a model. Vectorize and Upstash Free stop at 1,536; pgvector HNSW stops at 2,000 for
vector. - Prefer an open source engine if a forced migration would hurt.
Frequently asked questions#
What is the best free vector database for a side project?#
If you already use Postgres, pgvector costs nothing extra and keeps vectors next to your data. For a managed free tier, Pinecone Starter gives 2 GB of storage, 1M read units and 2M write units a month; Qdrant Cloud gives a free 1 GB RAM cluster; Upstash Vector gives 1 GB and 10K queries and updates per day. For local prototypes, Chroma and LanceDB run inside your process.
Do I need a dedicated vector database or is pgvector enough?#
For thousands to a few million vectors, pgvector is usually enough and saves you running a second system. Consider a dedicated store when you measure a real limit, such as memory pressure from a large HNSW index, or you want features like built-in hybrid search fusion without writing SQL for it.
Which vector database is cheapest at one million vectors?#
In our labelled example (1M vectors at 1536 dimensions, 100,000 queries a month), Upstash Vector pay-as-you-go works out to roughly $6 a month and Cloudflare Vectorize to roughly $17 plus the $5 Workers Paid minimum, using each vendor's published unit prices. Pinecone Standard and Weaviate Flex hit their monthly minimums first.
Which vector databases support hybrid search?#
According to their docs: Weaviate (vector plus BM25F), Qdrant (dense and sparse fused with RRF or DBSF), Milvus (dense plus BM25 sparse), turbopuffer (vector plus BM25), Upstash (hybrid indexes), Chroma, LanceDB, MongoDB Atlas, Pinecone (filter-then-rank or client-side RRF) and pgvector together with Postgres full-text search.
How do I avoid lock-in with a vector database?#
Keep your source text and metadata in your main database, store the embedding model name and version with each vector, and wrap the vector store behind one small module in your code. Then switching means re-upserting from your own data, not exporting from the vendor. Open source options (pgvector, Qdrant, Chroma, LanceDB, Milvus, Weaviate) also let you self-host.
Ship the feature, then launch it#
When your search feature is live, work through how to launch a bootstrapped app, then submit your product to ZeroRaised for free. For more dev-tool guides priced for people without investors, join the ZeroRaised newsletter.
Sources#
- pgvector README and LICENSE, last checked 13 Nov 2026
- Supabase pricing, last checked 13 Nov 2026
- Neon pricing, last checked 13 Nov 2026
- Pinecone pricing, last checked 13 Nov 2026
- Pinecone: understanding cost, last checked 13 Nov 2026
- Pinecone hybrid search docs, last checked 13 Nov 2026
- Qdrant pricing, last checked 13 Nov 2026
- Qdrant GitHub, last checked 13 Nov 2026
- Qdrant filtering docs, last checked 13 Nov 2026
- Qdrant hybrid queries docs, last checked 13 Nov 2026
- Weaviate pricing, last checked 13 Nov 2026
- Weaviate hybrid search docs, last checked 13 Nov 2026
- Weaviate GitHub, last checked 13 Nov 2026
- Chroma pricing, last checked 13 Nov 2026
- Chroma docs, last checked 13 Nov 2026
- Chroma GitHub, last checked 13 Nov 2026
- turbopuffer pricing, last checked 13 Nov 2026
- turbopuffer hybrid search docs, last checked 13 Nov 2026
- Upstash Vector pricing, last checked 13 Nov 2026
- Upstash hybrid indexes, last checked 13 Nov 2026
- Upstash metadata filtering, last checked 13 Nov 2026
- LanceDB GitHub, last checked 13 Nov 2026
- LanceDB docs, last checked 13 Nov 2026
- Milvus GitHub, last checked 13 Nov 2026
- Milvus multi-vector hybrid search docs, last checked 13 Nov 2026
- Zilliz Cloud pricing, last checked 13 Nov 2026
- MongoDB Atlas pricing, last checked 13 Nov 2026
- MongoDB Vector Search overview, last checked 13 Nov 2026
- MongoDB Atlas free cluster limits, last checked 13 Nov 2026
- Cloudflare Vectorize pricing, last checked 13 Nov 2026
- Cloudflare Vectorize limits, last checked 13 Nov 2026
- Cloudflare Vectorize metadata filtering, last checked 13 Nov 2026
- Cloudflare Workers pricing, last checked 13 Nov 2026
- Redis GitHub, last checked 13 Nov 2026
- Redis pricing, last checked 13 Nov 2026
Frequently asked questions
What is the best free vector database for a side project?
If you already use Postgres, pgvector costs nothing extra and keeps vectors next to your data. For a managed free tier, Pinecone Starter gives 2 GB of storage, 1M read units and 2M write units a month; Qdrant Cloud gives a free 1 GB RAM cluster; Upstash Vector gives 1 GB and 10K queries and updates per day. For local prototypes, Chroma and LanceDB run inside your process.
Do I need a dedicated vector database or is pgvector enough?
For thousands to a few million vectors, pgvector is usually enough and saves you running a second system. Consider a dedicated store when you measure a real limit, such as memory pressure from a large HNSW index, or you want features like built-in hybrid search fusion without writing SQL for it.
Which vector database is cheapest at one million vectors?
In our labelled example (1M vectors at 1536 dimensions, 100,000 queries a month), Upstash Vector pay-as-you-go works out to roughly $6 a month and Cloudflare Vectorize to roughly $17 plus the $5 Workers Paid minimum, using each vendor's published unit prices. Pinecone Standard and Weaviate Flex hit their monthly minimums first.
Which vector databases support hybrid search?
According to their docs: Weaviate (vector plus BM25F), Qdrant (dense and sparse fused with RRF or DBSF), Milvus (dense plus BM25 sparse), turbopuffer (vector plus BM25), Upstash (hybrid indexes), Chroma, LanceDB, MongoDB Atlas, Pinecone (filter-then-rank or client-side RRF) and pgvector together with Postgres full-text search.
How do I avoid lock-in with a vector database?
Keep your source text and metadata in your main database, store the embedding model name and version with each vector, and wrap the vector store behind one small module in your code. Then switching means re-upserting from your own data, not exporting from the vendor. Open source options (pgvector, Qdrant, Chroma, LanceDB, Milvus, Weaviate) also let you self-host.