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.

Editorial title card reading "Best Vector Database for Indie Developers (2026)" beside the orange ZeroRaised mark.

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
  1. TL;DR
  2. The vector databases compared
  3. The options, one by one
  4. pgvector: start here
  5. Pinecone: the managed default with a minimum
  6. Qdrant: best free cluster you can later self-host
  7. Weaviate: hybrid search out of the box
  8. Chroma: embedded for prototypes, Cloud when you ship
  9. turbopuffer: object-storage pricing with a floor
  10. Upstash Vector: per-request, serverless-friendly
  11. LanceDB: embedded, on disk or object storage
  12. Milvus and Zilliz Cloud
  13. MongoDB Atlas Vector Search
  14. Cloudflare Vectorize
  15. Redis
  16. Worked cost example: 1M vectors at 1536 dimensions
  17. Decision guide
  18. Migration and lock-in notes
  19. Frequently asked questions
  20. What is the best free vector database for a side project?
  21. Do I need a dedicated vector database or is pgvector enough?
  22. Which vector database is cheapest at one million vectors?
  23. Which vector databases support hybrid search?
  24. How do I avoid lock-in with a vector database?
  25. Ship the feature, then launch it
  26. 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#

OptionFree tierEntry paid price and billing unitSelf-host licenceHybrid searchMetadata filtering
pgvector (any Postgres)Free extension; Supabase free 500 MB/project, Neon free 1 GB/projectYour Postgres bill (Supabase Pro from $25/mo; Neon Launch $0.106/CU-hour, $0.35/GB-month)PostgreSQL LicenseWith Postgres full-text searchSQL WHERE
PineconeStarter: 2 GB, 1M RUs, 2M WUs/mo, 5 indexesStandard: $50/mo minimum; $0.33/GB-month, $16-$18 per 1M RUs, $4-$4.50 per 1M WUsClosed sourceFilter-then-rank or client-side RRFYes
QdrantCloud free: 0.5 vCPU, 1 GB RAM, 4 GB diskStandard: usage-based per vCPU, GB RAM, GB disk, billed hourlyApache-2.0Dense + sparse, RRF/DBSF fusionYes (payload filters)
WeaviateFree: 100,000 objects, 1 GB memory, 10 GB diskFlex from $45/mo; from $0.00465 per 1M vector dimensionsMostly BSD-3-ClauseVector + BM25FYes
ChromaEmbedded/self-host; Cloud Starter $0 + usage with $5 credits$2.50/GiB written, $0.33/GiB-month, $0.0075/TiB queriedApache-2.0Dense, sparse and hybridYes
turbopufferNone listedLaunch: $16/mo minimum; storage up to $0.33/GB, writes up to $2.00/GBClosed sourceVector + BM25 with RRFSee docs
Upstash Vector1 GB, 10K queries and updates per day, up to 1,536 dims$0.4 per 100K requests, $0.25/GB; Fixed $60/moClosed sourceHybrid indexes (dense + sparse)Yes (SQL-like)
LanceDBOpen source, embeddedEnterprise: no public priceApache-2.0YesYes
Milvus / Zilliz CloudZilliz free: 5 GB, 2.5M vCUs/mo, 5 collectionsServerless from $0/mo; Dedicated from $126/moApache-2.0 (Milvus)Dense + BM25 sparse, rerankedYes (expr)
MongoDB Atlas Vector SearchFree cluster: 0.5 GB storageFlex $8-$30/mo; M10 from $56.94/moNot covered hereVector + full-textYes (pre-filter)
Cloudflare Vectorize5M stored, 30M queried dimensions/moWorkers Paid ($5/mo minimum): $0.05 per extra 100M stored dims, $0.01 per extra 1M queried dimsClosed sourceNot covered hereYes (up to 10 metadata indexes)
RedisRedis Cloud Free: 30 MBEssentials from $5/moRSALv2 / SSPLv1 / AGPLv3 (your choice)Vector + full-text in Redis SearchYes

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).

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.

OptionArithmetic from published unit pricesRough 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 VectorizeStored: 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 Standard6.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 Flex1.536B dims x $0.00465/M = $7.14Flex 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 computeDepends 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 situationOur pick
Already on Postgres (Supabase, Neon, RDS, your own box)pgvector
Prototype or notebook, no serverChroma or LanceDB embedded
Serverless app on Vercel or edge functions, low trafficUpstash Vector
App already on Cloudflare Workers, up to 1,536 dimsVectorize
Want a free managed tier now and self-host laterQdrant
Keyword + semantic search matters (product search, docs)Weaviate, Qdrant, or pgvector with full-text search
Data already in MongoDBAtlas Vector Search
Need the least ops and can pay $50/monthPinecone Standard
Many tenants, each with a small indexturbopuffer 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:

  1. 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.
  2. Store the embedding model and version with every vector. A model change is a full re-index on any vendor.
  3. Wrap the store in one module (upsert, delete, query). Filter syntax differs a lot between vendors, and that is where switching costs hide.
  4. Check dimension caps before picking a model. Vectorize and Upstash Free stop at 1,536; pgvector HNSW stops at 2,000 for vector.
  5. 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.

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#

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.