# Best Vector Database for Indie Developers (2026)

> The best vector database for small projects in 2026: pgvector, Pinecone, Qdrant, Chroma, Upstash and more compared on free tiers, prices and self-host licences.

- Canonical: https://zeroraised.com/blog/best-vector-database-for-indie-developers
- Published: 2026-11-13T13:30:00Z
- Author: ZeroRaised Team (https://zeroraised.com/blog/authors/zeroraised)
- Publisher: ZeroRaised (https://zeroraised.com/)
- Section: Building
- Tags: artificial-intelligence, developer-tools, databases, comparison

**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](https://zeroraised.com/blog/what-is-a-vector-database). 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](https://github.com/pgvector/pgvector/blob/master/LICENSE) and runs on [Supabase](https://supabase.com/pricing) (free: 500 MB per project) or [Neon](https://neon.com/pricing) (free: 1 GB per project).
- **Best free managed tiers:** [Pinecone Starter](https://www.pinecone.io/pricing/) (2 GB, 1M read units, 2M write units a month), [Qdrant Cloud](https://qdrant.tech/pricing/) (1 GB RAM, 4 GB disk), [Zilliz](https://zilliz.com/pricing) (5 GB), [Weaviate](https://weaviate.io/pricing) (100,000 objects).
- **Cheapest pay-as-you-go:** [Upstash Vector](https://upstash.com/pricing/vector) at $0.4 per 100K requests and $0.25 per GB, and [Cloudflare Vectorize](https://developers.cloudflare.com/vectorize/platform/pricing/), 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](https://github.com/pgvector/pgvector)).

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](https://supabase.com/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](https://neon.com/pricing)).

Our [free Postgres database guide](https://zeroraised.com/blog/free-postgres-database) 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](https://www.pinecone.io/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](https://docs.pinecone.io/guides/manage-cost/understanding-cost)), so per-customer namespaces keep queries cheap. Hybrid search works as filter-then-rank or client-side RRF ([hybrid docs](https://docs.pinecone.io/guides/search/hybrid-search)).

### 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](https://qdrant.tech/pricing/)). The engine is Apache-2.0 ([GitHub](https://github.com/qdrant/qdrant)), supports payload filters during search ([filtering docs](https://qdrant.tech/documentation/concepts/filtering/)) and fuses dense and sparse results with `rrf` or `dbsf` ([hybrid queries](https://qdrant.tech/documentation/concepts/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](https://weaviate.io/pricing)). Hybrid search "combines the results of a vector search and a keyword (BM25F) search" and accepts filters ([hybrid docs](https://docs.weaviate.io/weaviate/search/hybrid)). Most of the repo is BSD-3-Clause, with a separately licensed `wl/` folder ([GitHub](https://github.com/weaviate/weaviate)).

### 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](https://github.com/chroma-core/chroma), Apache-2.0). The docs list metadata filtering plus "Dense, sparse, and hybrid search" ([Chroma docs](https://docs.trychroma.com/docs/overview/introduction)). 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](https://www.trychroma.com/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](https://turbopuffer.com/pricing)). It "supports vector search and BM25 full-text search" with server-side rank fusion ([hybrid docs](https://turbopuffer.com/docs/hybrid)). 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](https://upstash.com/pricing/vector)). It supports hybrid indexes ([docs](https://upstash.com/docs/vector/features/hybridindexes)) and SQL-like metadata filters ([filtering](https://upstash.com/docs/vector/features/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](https://github.com/lancedb/lancedb)). The docs list vector, full-text and hybrid search, reranking, filtering and SQL ([LanceDB docs](https://docs.lancedb.com/)). 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](https://github.com/milvus-io/milvus)). It runs dense and BM25 sparse searches together, reranks with RRF and filters with `expr` ([Milvus docs](https://milvus.io/docs/multi-vector-search.md)). 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](https://zilliz.com/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](https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-overview/)). The free cluster caps storage at 0.5 GB, including indexes ([free cluster limits](https://www.mongodb.com/docs/atlas/reference/free-shared-limitations/)). Flex costs $8-$30 a month and M10 dedicated starts at $56.94/month ([MongoDB pricing](https://www.mongodb.com/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](https://developers.cloudflare.com/vectorize/platform/pricing/)); the plan has a $5/month minimum ([Workers pricing](https://developers.cloudflare.com/workers/platform/pricing/)). Limits: 1,536 dimensions and 20M vectors per index, topK 50 with values or metadata ([limits](https://developers.cloudflare.com/vectorize/platform/limits/)), and up to 10 metadata indexes, which must exist before you insert vectors ([metadata filtering](https://developers.cloudflare.com/vectorize/reference/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](https://github.com/redis/redis)). Redis Cloud Free is 30 MB and Essentials starts at $5/month ([Redis pricing](https://redis.io/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](https://zeroraised.com/blog/what-is-rag) 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.

### 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](https://zeroraised.com/blog/how-to-launch-a-bootstrapped-app), then [submit your product to ZeroRaised](https://zeroraised.com/submit) for free. For more dev-tool guides priced for people without investors, [join the ZeroRaised newsletter](https://zeroraised.com/newsletter).

## Sources

- [pgvector README](https://github.com/pgvector/pgvector) and [LICENSE](https://github.com/pgvector/pgvector/blob/master/LICENSE), last checked 13 Nov 2026
- [Supabase pricing](https://supabase.com/pricing), last checked 13 Nov 2026
- [Neon pricing](https://neon.com/pricing), last checked 13 Nov 2026
- [Pinecone pricing](https://www.pinecone.io/pricing/), last checked 13 Nov 2026
- [Pinecone: understanding cost](https://docs.pinecone.io/guides/manage-cost/understanding-cost), last checked 13 Nov 2026
- [Pinecone hybrid search docs](https://docs.pinecone.io/guides/search/hybrid-search), last checked 13 Nov 2026
- [Qdrant pricing](https://qdrant.tech/pricing/), last checked 13 Nov 2026
- [Qdrant GitHub](https://github.com/qdrant/qdrant), last checked 13 Nov 2026
- [Qdrant filtering docs](https://qdrant.tech/documentation/concepts/filtering/), last checked 13 Nov 2026
- [Qdrant hybrid queries docs](https://qdrant.tech/documentation/concepts/hybrid-queries/), last checked 13 Nov 2026
- [Weaviate pricing](https://weaviate.io/pricing), last checked 13 Nov 2026
- [Weaviate hybrid search docs](https://docs.weaviate.io/weaviate/search/hybrid), last checked 13 Nov 2026
- [Weaviate GitHub](https://github.com/weaviate/weaviate), last checked 13 Nov 2026
- [Chroma pricing](https://www.trychroma.com/pricing), last checked 13 Nov 2026
- [Chroma docs](https://docs.trychroma.com/docs/overview/introduction), last checked 13 Nov 2026
- [Chroma GitHub](https://github.com/chroma-core/chroma), last checked 13 Nov 2026
- [turbopuffer pricing](https://turbopuffer.com/pricing), last checked 13 Nov 2026
- [turbopuffer hybrid search docs](https://turbopuffer.com/docs/hybrid), last checked 13 Nov 2026
- [Upstash Vector pricing](https://upstash.com/pricing/vector), last checked 13 Nov 2026
- [Upstash hybrid indexes](https://upstash.com/docs/vector/features/hybridindexes), last checked 13 Nov 2026
- [Upstash metadata filtering](https://upstash.com/docs/vector/features/filtering), last checked 13 Nov 2026
- [LanceDB GitHub](https://github.com/lancedb/lancedb), last checked 13 Nov 2026
- [LanceDB docs](https://docs.lancedb.com/), last checked 13 Nov 2026
- [Milvus GitHub](https://github.com/milvus-io/milvus), last checked 13 Nov 2026
- [Milvus multi-vector hybrid search docs](https://milvus.io/docs/multi-vector-search.md), last checked 13 Nov 2026
- [Zilliz Cloud pricing](https://zilliz.com/pricing), last checked 13 Nov 2026
- [MongoDB Atlas pricing](https://www.mongodb.com/pricing), last checked 13 Nov 2026
- [MongoDB Vector Search overview](https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-overview/), last checked 13 Nov 2026
- [MongoDB Atlas free cluster limits](https://www.mongodb.com/docs/atlas/reference/free-shared-limitations/), last checked 13 Nov 2026
- [Cloudflare Vectorize pricing](https://developers.cloudflare.com/vectorize/platform/pricing/), last checked 13 Nov 2026
- [Cloudflare Vectorize limits](https://developers.cloudflare.com/vectorize/platform/limits/), last checked 13 Nov 2026
- [Cloudflare Vectorize metadata filtering](https://developers.cloudflare.com/vectorize/reference/metadata-filtering/), last checked 13 Nov 2026
- [Cloudflare Workers pricing](https://developers.cloudflare.com/workers/platform/pricing/), last checked 13 Nov 2026
- [Redis GitHub](https://github.com/redis/redis), last checked 13 Nov 2026
- [Redis pricing](https://redis.io/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.


