Vector Search indexes not deployed to any endpoint that still show billed cost
What does ZopNight detect here?
Vector Search charges $3.00 per GiB of data processed when an index is built or updated, and bills serving only while the index is deployed. ZopNight flags indexes that are not deployed to any endpoint yet carry billed cost, usually from recent builds or streaming updates, and suggests deleting the index if it is unused.
Signal and threshold
| Field | Value |
|---|---|
| Rule IDs | RC-1215 |
| Category | orphan |
| Severity | low |
| Metric | none — pure configuration read |
| Threshold | not deployed and billed cost above $0 |
| Source | ZopNight |
| Permissions used | aiplatform.indexes.list · aiplatform.indexes.get |
Where it applies
What an index costs when nothing serves it
Vertex AI pricing lists Vector Search charges as per node hour pricing for each VM hosting a deployed index, plus a cost for building new indexes, updating existing ones and streaming updates. Building and batch updates cost $3.00 per GiB processed; streaming inserts cost $0.45 per GiB ingested, and compaction of streamed data is billed again at the batch rate.
An index that is not deployed has no serving nodes, so it has no standing serving charge. What it can keep generating is build and update cost: a scheduled pipeline that rebuilds an index every night, or a stream still writing to it, spends money on an index nobody queries.
Spotting indexes without a deployment
gcloud ai indexes list --region=us-central1gcloud ai index-endpoints list --region=us-central1Compare the two lists. An index that no endpoint references is undeployed. Then look for the jobs that update it: batch update pipelines, or clients calling streaming upserts.
How ZopNight knows an index is undeployed
The deployment state comes from a live read of the Vertex AI API, which reports each index’s deployed indexes. ZopNight fires when that list is empty and the billed cost attributed to the index in the billing data is above zero.
Limits of the signal
A billed figure here reflects recent build or update activity, not a guaranteed monthly charge. If the pipeline that rebuilt the index has already stopped, the cost will fall away without any action. There is no minimum age, since the index resource keeps no record of when it was last undeployed, so an index built minutes before its first deployment can appear. With no billed cost, there is no finding.
Sizing the saving on this card
saving = billed cost attributed to the index in the last monthDeleting the index prevents paying to rebuild and maintain it; it does not stop a storage charge, because Vector Search does not bill standing storage for an undeployed index.
Retiring an unused index
- Confirm no release process is about to deploy it, and that no endpoint or application expects it.
- Stop the batch or streaming jobs that update it; otherwise they may fail or recreate cost.
- Delete it with
gcloud ai indexes delete INDEX_ID --region=us-central1. Google’s index management guide notes that an index cannot be deleted until all of its deployed indexes are undeployed. - Keep the embeddings source data if you may rebuild later.