feat: support configurable NQ for concurrent Milvus searches - #874
Conversation
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: yanbinyang The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
8a19043 to
5625392
Compare
5625392 to
b5bf5bc
Compare
|
/assign @XuanYang-cn Hi, when you have time, could you please take a look? The workflow is awaiting maintainer approval. Thanks! |
b5bf5bc to
bbf1e38
Compare
Signed-off-by: YangYanbin <warlock.yyb@alibaba-inc.com>
bbf1e38 to
40df7e3
Compare
|
Hi @jamesgao-jpg, I have rebased this PR on main and added regression coverage in 40df7e3. All CI checks pass. When convenient, could you please take a look? Thanks! |
|
/lgtm |
Fixes #873. Concurrent searches currently send one query vector per request and do not expose a per-request query batch size. VectorDBBench therefore cannot directly measure Milvus and Zilliz Cloud batch-search workloads with NQ greater than 1.
I added
nqto the common case configuration and CLI (--nq, ornqin YAML), with the existing behavior preserved by a default of 1. Milvus advertises batch-search support through a client capability and implements one SDK search call for each fixed-size query batch; Zilliz Cloud inherits this implementation. The concurrent runner wraps through the query dataset to keep batches full, counts successful query vectors inqpsandconc_qps_list, records latency per successful batch request, and excludes failed or incomplete batches from successful query-vector counts. Serial latency and recall remain single-query measurements, while unsupported backends and workloads rejectnq > 1before data loading.A CLI unit test verifies that the configured NQ reaches the generated task configuration. Live Milvus validation used a custom runner's
run_by_dur()path with NQ=64 on Cohere and BioASQ at 1M/10M and topK=10/100; all eight combinations reported no failed batches. This was not an end-to-end run through the standard CLI, and Zilliz Cloud was not live-tested.