Vectors store meaning, not files
A vector database stores embeddings derived from text, images, or records so similar items can be retrieved by semantic distance.
Vector databases are the retrieval layer behind RAG, semantic search, recommendations, and AI knowledge bases. A good free-tier choice depends less on raw storage and more on vector count, metadata filters, memory, cold starts, and how you will rebuild indexes.
Use Supabase pgvector when vectors and business data belong together.
Use Qdrant or Pinecone when retrieval is a dedicated subsystem.
Do not use vector storage as the only copy of your documents.
A vector database stores embeddings derived from text, images, or records so similar items can be retrieved by semantic distance.
The vector database finds likely chunks, but object storage or SQL should still hold the original documents and canonical metadata.
Tenant IDs, timestamps, permissions, document type, and language filters often matter as much as cosine similarity.
HNSW and hybrid indexes can make queries fast, but free tiers may hit RAM, storage, or cold-start limits quickly.
Good for learning real vector database concepts: payload filters, collections, distance metrics, and memory-aware indexing.
Good when you want managed serverless vector search and clear read/write unit accounting.
Good for small apps where business rows, auth, metadata, and embeddings should live in one Postgres project.
Good for small indexes called from edge functions, routing rules, personalization, or short knowledge snippets.
Use the table for storage, query, connection, and index constraints. For RAG, also evaluate chunking, metadata filters, rebuild jobs, and citation quality.
| PROVIDER | FREE STORAGE | MONTHLY BANDWIDTH | SPECS / COMPUTE | CONNECTION LIMITS | KEY CONSTRAINTS | ACTION |
|---|---|---|---|---|---|---|
Qdrant CloudRUST NATIVE VECTOR | 4 GB Storage | Includes 1 GB dedicated RAM limits | Ultra-fast Rust-based engine; advanced payload filtering mechanism extensions | Highly scalable API endpoint pooling | Hard 1GB RAM ceiling; approaching limits causes memory swapping and performance cliff | Go to Site ↗ |
PineconeSERVERLESS VECTOR | 2 GB Storage | 1M Read Units / 2M Write Units per month | Supports hybrid dense/sparse indexing, max 5 indexes per org under Starter plan | Stateless AWS single-region endpoints | Metadata strictly locked at 40KB per vector; severe cold start query latencies on idle tiers | Go to Site ↗ |
Supabase (pgvector)POSTGRES EXTENSION | 500 MB Shared | Shared project egress allocations | Enables relational SQL JOIN queries directly between custom user schemas and vector coordinates | Bound to primary PostgreSQL connection limits | Shared storage metrics; heavy vector index generation (HNSW) aggressively drains main database memory | Go to Site ↗ |
Upstash VectorSERVERLESS EDGE VECTOR | 10,000 Vectors | 10,000 Queries + Writes per Day | 100% native REST HTTP API framework, designed for seamless calls from Cloudflare Workers | Connectionless REST execution pool | Extremely low 10k vector volume ceiling; meant for edge firewalls, not large doc RAG | Go to Site ↗ |
A thousand source documents can become tens of thousands of vectors after chunking. Free vector ceilings disappear faster than raw file size suggests.
For multi-tenant apps, every vector should carry tenant and permission metadata so retrieval never leaks private content.
Dimension size, language quality, cost, and model upgrades affect every stored vector. Re-embedding later is a batch job.
Do not judge vector search by demo queries only. Build a small evaluation set with expected source chunks and citations.
Metadata fields are often size-limited and can make indexes heavy. Store chunk text only when the provider supports it cleanly.
RAG systems need lifecycle jobs for deleted files, updated documents, embedding migrations, and stale chunks.
Vector stores are optimized for retrieval, not transactional business data. Keep canonical records in SQL or document storage.
Without source citations, users cannot verify generated answers and you cannot debug bad retrieval.
Use Postgres rows for tenants and permissions, pgvector for embeddings, storage buckets for source files, and edge functions for ingestion.
Store PDFs and markdown in object storage, push chunks to Qdrant, and keep an ingestion status table in SQL.
Use a tiny vector index near edge functions for routing, short snippets, personalization, or semantic allowlists.
It stores embeddings so apps can find semantically similar documents, products, tickets, images, or chunks. Common uses include RAG, semantic search, recommendations, deduplication, and clustering.
No. If the model can answer from the user prompt and a small amount of structured data, SQL or cache may be enough. Use vector search when retrieval over many unstructured documents becomes necessary.
Store a stable ID, source document ID, chunk position, tenant/permission fields, language, timestamps, and enough metadata to rebuild citations.
Poor chunking, weak metadata filters, the wrong embedding model, stale indexes, and missing reranking can all return plausible but irrelevant chunks.