Spring AI 2.0.1 sends num_candidates = (int)(1.5 * topK) = 15 for topK=10 (ElasticsearchVectorStore bytecode: ldc2_w 1.5d, dmul, d2i)
same index, same 100 queries, raw _search with the num_candidates varied:
num_candidates    recall@10    p50 ms
15                    0.491       4.5
50                    0.489       3.9
100                   0.490       3.8
500                   0.490       4.0
