You don't pick one. When you create a collection, Vector Panda runs candidate index configurations — HNSW, IVF, PQ, ScaNN, Vamana, PCA, and the rest of an eleven-strategy field — against a sample of your vectors, measures each one's recall and latency against brute-force ground truth, and serves the fastest configuration whose measured recall meets your collection's target. There is no CREATE INDEX, no ef_construction folklore, and no benchmark-paper roulette: the winner is chosen on evidence from your data, not GloVe or SIFT-1M. Your one knob is target_recall (default 0.95): raise it toward 0.999 when accuracy is everything, lower it toward 0.50 when speed is.

The whole customer-facing surface fits in a few lines:

from veep import VP, samples

df = samples.dataframe()  # 5,000 films with real 384-dim embeddings

vp = VP.from_creds()
vp.collections.create("recall-target-demo", tier="hot")
vp.vectors.upsert("recall-target-demo", dataframe=df)

col = vp.collections.get("recall-target-demo")
print(col.target_recall, col.optimization_state)
0.95 raw

Queries work immediately — raw means exact brute-force search while the measurement runs behind the scenes, so early results are never approximate. As candidates prove themselves, the serving configuration upgrades; optimization_state walks rawpca_optimizedindex_tuning_in_flightindex_optimized, and you can poll vp.collections.get() for index_optimized if you want to wait for the finalized index.

Changing the target re-evaluates the choice immediately:

col = vp.collections.update("recall-target-demo", target_recall=0.99)
print(col.target_recall, col.optimization_state)
0.99 raw

A raised target can demote a fast-but-loose index back to a more accurate one; a lowered target lets a faster candidate qualify. Either way the decision stays measured — a configuration serves only while its recall, tested against ground truth on your data, clears the bar.

What "recall" buys you

At top_k=10, recall 0.95 means that on average 9.5 of the 10 true nearest neighbors (what an exact search would return) appear in your results. For most retrieval and RAG workloads the default is indistinguishable from exact search in output quality and much faster. Where the last few tenths of a point matter — deduplication, compliance lookups — set 0.99 or higher and pay the latency difference knowingly.

How auto-optimize picks your index walks through the measurement in depth — the Pareto frontier of recall vs. p95 latency, what a real optimization run looks like, and why build cost paces but never picks the winner. The benchmarks page shows the methodology behind the numbers.

If you drive Vector Panda from an AI agent instead of code: the com.vectorpanda/database MCP server exposes the same evidence through recommend_index (read-only, returns the measured candidates) and activate_index (explicit activation), so an agent can reason about the recall/latency/cost trade-off with real numbers before touching anything.

vp.collections.delete("recall-target-demo")