Indexing workflow
From collection creation to a searching against a built index.
Indexing workflow
Create collection
↓
Choose/configure an index (optional)
↓
Build runs asynchronously
↓
Poll for status
↓
Search
See Index overview first if you haven't already — it explains the node-level vs. collection-level distinction this workflow depends on.
1. Create the collection
Create a collection with an explicit
dimension and metric. It starts with no index — search still works,
as an exact (brute-force) scan.
2. Configure an index
Once you have enough records that an exact scan is too slow, call Configure a collection's index:
{ "type": "hnsw", "parameters": { "m": 16, "ef_construction": 200 } }
This returns 202 immediately — the build runs in the background. The
collection keeps serving searches against whatever was active before
(exact scan, or a previous index) while the new one builds.
3. Poll for completion
Call Collection index state
until status settles. Both official SDKs offer a helper that does this
polling loop for you rather than writing your own:
- TypeScript:
client.collection(name).index.wait() - Python: poll
client.collection_index_status(name)yourself — no built-in wait helper exists on the Python client today.
4. Search
Once the index is active, Vector search uses it automatically — there's no separate "use this index" flag on the search request.
When to use the project-wide rebuild instead
Rebuild all indexes is a different tool for a different situation: reach for it only when you specifically need every collection's index rebuilt at once and can tolerate the write lock being held for the whole operation. For normal day-to-day indexing — one collection at a time, without blocking the rest of the project — use step 2 above.