Capacity planning converts product growth into rows, bytes, writes, queries, CPU, memory, I/O, network, WAL, backups, and provider calls. Vector bytes begin near dimensions times bytes per coordinate, but rows, metadata, alignment, ANN indexes, replicas, and headroom add substantially. Benchmark actual storage and workload, model scenarios, and express cost per useful product outcome.
For vector single-precision coordinates, raw coordinate bytes are approximately dimensions × 4 plus type and row overhead. One million 1,536-dimensional vectors therefore begin around 6.1 GB of coordinate payload before heap rows, IDs, metadata, TOAST behavior, free space, HNSW/IVFFlat, lexical indexes, WAL, replicas, and backups. Measure with pg_total_relation_size after loading representative data.
Create low/base/high forecasts for sources, chunks per source, dimensions/type, monthly growth, change rate, queries per second, concurrency, top-k, filters, latency, retention, replicas, and regions. Add operational headroom rather than planning at 100% utilization. Define leading triggers such as storage, IOPS, p95 latency, queue age, connection wait, recall, and build duration.
Load 1–5% of projected data with realistic distributions, build intended indexes, and measure actual bytes per chunk, index ratio, build resources, write rate, and query capacity. Extrapolate with uncertainty, then rerun at larger scale to find nonlinear behavior.
Build a capacity and unit-cost model from these dimensions, row counts, growth, churn, query mix, indexes, replicas, retention, provider usage, and SLOs [values]. Show formulas, assumptions, low/base/high scenarios, uncertainty, headroom, triggers, and benchmark plan. Mark volatile prices as inputs.
Verification contract: Replace estimates with measured table/index/build/query data from a representative load before approving production capacity.