# Vectorize Gotchas ## Critical Warnings ### Async Mutations Insert/upsert/delete return immediately but vectors aren't queryable for 5-10 seconds. ### Batch Size Limit **Workers API: 500 vectors max per call** (undocumented, silently truncates) ```typescript // ✅ Chunk into 500 for (let i = 0; i < vectors.length; i += 500) { await env.VECTORIZE.upsert(vectors.slice(i, i + 500)); } ``` ### Metadata Truncation `returnMetadata: "indexed"` returns only first 64 bytes of strings. Use `"all"` for complete metadata (but max topK drops to 20). ### topK Limits | returnMetadata | returnValues | Max topK | |----------------|--------------|----------| | `"none"` / `"indexed"` | `false` | 100 | | `"all"` | any | **20** | | any | `true` | **20** | ### Metadata Indexes First Create BEFORE inserting - existing vectors not retroactively indexed. ```bash # ✅ Create index FIRST wrangler vectorize create-metadata-index my-index --property-name=category --type=string wrangler vectorize insert my-index --file=data.ndjson ``` ### Index Config Immutable Cannot change dimensions/metric after creation. Must create new index and migrate. ## Limits (V2) | Resource | Limit | |----------|-------| | Vectors per index | 10,000,000 | | Max dimensions | 1536 | | Batch upsert (Workers) | **500** | | Indexed string metadata | **64 bytes** | | Metadata indexes | 10 | | Namespaces | 50,000 (paid) / 1,000 (free) | ## Common Mistakes 1. **Wrong embedding shape:** Extract `result.data[0]` from Workers AI 2. **Metadata index after data:** Re-upsert all vectors 3. **Insert vs upsert:** `insert` ignores duplicates, `upsert` overwrites 4. **Not batching:** Individual inserts ~1K/min, batched ~200K+/min ## Troubleshooting **No results?** - Wait 5-10s after insert - Check namespace spelling (case-sensitive) - Verify metadata index exists - Check dimension mismatch **Metadata filter not working?** - Index must exist before data insert - Strings >64 bytes truncated - Use dot notation for nested: `"product.category"` ## Model Dimensions - `@cf/baai/bge-small-en-v1.5`: 384 - `@cf/baai/bge-base-en-v1.5`: 768 - `@cf/baai/bge-large-en-v1.5`: 1024