先看现象。自建 Qdrant 集群 3 副本,云盘账单每月 2400 元,实际向量数据只有 180GB,账单显示的占用是 540GB,财务问为什么差三倍。
把日志和配置对完,能解释这个现象的基本就这几处。副本数会按倍数计入存储。也可能是快照与 WAL 也占容量。
另外,没开量化,向量按 float32 原样存。
少数情况下是旧 collection 没有清理。
先统计每个 collection 的实际点数与维度
python -c "import requests;print(requests.get('http://localhost:6333/collections').json())"
随后看磁盘占用里快照与 WAL 的比例
du -sh /var/lib/qdrant/snapshots /var/lib/qdrant/storage 2>/dev/null
然后开标量量化把向量压到 int8
curl -X PATCH http://localhost:6333/collections/docs -H 'Content-Type: application/json' -d '{"optimizers_config":{"memmap_threshold":20000}}'
剩下的就是删除过期 collection 并重算容量
curl -X DELETE http://localhost:6333/collections/old_docs
中途换过一次思路,把范围缩到最小的那一层,反而快了。
中间停过一次,把已经改的东西回滚干净,再重新来一遍。
恢复的判定其实很直接。磁盘占用回落到 200GB 以内,账单与实测容量的差距在副本倍数可解释范围内。
算存储成本时要把副本、快照、量化方式一起算,只看原始向量大小会低估一倍以上。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
