35 · 容量规划与成本估算一句话先估向量数据 索引要多少内存和磁盘再倒推该用什么配置、花多少钱避免上线才发现内存不够。1. 为什么要提前估算向量检索要快索引最好在内存里。上线前不估算常见翻车内存放不下索引 → 查询频繁读磁盘 → 慢。磁盘没预留够 → 数据涨满。选了过小的机器 → 被迫紧急扩容。2. 单条向量占用vector(n) ≈ n × 4 字节 少量开销 halfvec(n) ≈ n × 2 字节常见维度类型每条vector(1536)~6 KBhalfvec(1536)~3 KBvector(1024)~4 KBvector(768)~3 KB3. 原始数据大小估算原始向量数据 ≈ 条数 × 单条向量大小例1000 万条vector(1536)10,000,000 × 6 KB ≈ 60 GB再加上content、元数据等业务列实际更大。4. HNSW 索引大小估算HNSW 索引除了存向量还要存图的连接。粗略经验HNSW 索引 ≈ 向量数据大小 × (1 系数) 系数受 m 影响m16 时索引常和数据量相当甚至更大粗估索引大小 ≈ 1~1.5 倍向量数据大小。例60 GB 向量数据HNSW 索引再算 ~60-90 GB。所以向量 索引要按2~2.5 倍原始向量数据预留内存。5. 内存规划理想向量索引能放进内存shared_buffers 系统页缓存。建议可用内存 ≥ 索引大小 常用数据 PG 自身开销例索引 ~80 GB → 机器内存建议 128 GB 以上才能让索引常驻。内存不够怎么办按优先级用halfvec→ 索引直接减半。降维Matryoshka→ 进一步减。二值量化 重排 → 极致减。上 pgvectorscale磁盘友好第 34 章。加内存 / 分区分片。6. 一张估算表vector(1536)HNSW条数向量数据索引(≈2x)建议内存100 万~6 GB~12 GB16 GB1000 万~60 GB~120 GB128 GB1 亿~600 GB~1.2 TB考虑 halfvec/分区/pgvectorscale用 halfvec 可把上面的内存需求砍半。7. 成本的另一半Embedding 生成费用别只算存储生成向量本身也要钱在线 API生成成本 ≈ 总 token 数 × 每 token 单价大批量首次灌库可能是一笔不小的一次性费用。之后新增/更新数据持续产生费用。自托管开源模型可省 API 费但要算 GPU/机器成本。8. 快速估算 SQL已有数据时-- 看实际表和索引占用SELECTpg_size_pretty(pg_total_relation_size(items))AStotal,pg_size_pretty(pg_relation_size(items))AStable_only,pg_size_pretty(pg_indexes_size(items))ASindexes;先小规模灌一批如 10 万条用它实测单位成本再线性外推到目标规模比纯理论更准。9. 规划流程1. 定规模预计多少条向量、什么维度 2. 估存储条数 × 单条大小 × (2~2.5 含索引) 3. 定内存尽量让索引常驻内存 4. 估生成费token 量 × 单价或 GPU 成本 5. 超预算 → halfvec/降维/量化/pgvectorscale 优化 6. 小规模实测 → 外推校准10. 一句话总结按条数 × 单条大小 × 2~2.5含索引估存储并让索引尽量常驻内存别忘了 embedding 生成费用超预算就用 halfvec/降维/量化并先小规模实测再外推。➡️ 下一章36-监控运维与备份高可用.md让向量库稳定跑在线上。