Skip to content

Add full-text search benchmark support#794

Merged
XuanYang-cn merged 131 commits into
zilliztech:mainfrom
jamesgao-jpg:fts_impl_only
Jun 26, 2026
Merged

Add full-text search benchmark support#794
XuanYang-cn merged 131 commits into
zilliztech:mainfrom
jamesgao-jpg:fts_impl_only

Conversation

@jamesgao-jpg

@jamesgao-jpg jamesgao-jpg commented Jun 5, 2026

Copy link
Copy Markdown
Collaborator

Context

VDBBench did not have a dedicated native full-text search benchmark path. This PR adds FTS as a first-class benchmark workload so BM25-based text search can be evaluated through the same task, runner, dataset, frontend, and result pipeline used by the rest of VDBBench.

Summary

  • Add full-text search benchmark support centered on BM25 text retrieval.
  • Introduce FTS performance cases that load text documents, run text queries, and report comparable performance results.
  • Wire FTS through backend execution, dataset preparation, runner orchestration, Streamlit task generation, and result formatting.
  • Use manifest-driven FTS ground truth so recall is measured against generated mathematical BM25 neighbors rather than semantic relevance labels.

Backends Covered

  • Milvus: native BM25 full-text indexing/search configuration and execution path.
  • Zilliz Cloud: FTS routing through the Milvus-compatible API with Cloud sparse auto-index handling, sharing the Milvus optimize/compaction path.
  • ElasticCloud / Elasticsearch: BM25 text indexing/search path with configurable BM25 k1/b support.
  • Vespa: BM25 schema/query path plus Vespa feed-client loading for large FTS document ingestion.
  • Turbopuffer: namespace-based full-text benchmark path.

Testing Infra Touched

  • Dataset layer: add MS MARCO and HotpotQA FTS dataset definitions, document/query loading, and S3-hosted mathematical BM25 ground-truth loading.
  • Case layer: add FTS performance case definitions, payload profiles, and task assembly support.
  • Runner layer: support FTS document loading plus serial recall and concurrent text-query search execution while preserving the existing backend insert contract.
  • Backend layer: route Vespa FTS loading through its backend insert path, where the Vespa feed client is managed for high-throughput ingestion.
  • Frontend layer: expose FTS cases and generate backend-specific FTS task configs from Streamlit.
  • Result layer: format FTS benchmark outputs alongside existing VDBBench results.

Datasets Supported

  • MS MARCO: small 100K, medium 1M, large 8.8M documents.
  • HotpotQA: small 100K, medium 1M, large 5.2M documents.

Metrics

  • Search metric type: BM25.
  • Accuracy metric: recall@k against generated mathematical BM25 ground truth.
  • Performance metrics: serial latency p95/p99, concurrent QPS, load duration, optimize duration, inserted count, payload profile, batch size, and load concurrency.

Denise2004 and others added 30 commits June 1, 2026 04:00
Co-authored-by: zilliz <zilliz@zillizdeMacBook-Pro.local>
James Gao added 2 commits June 24, 2026 14:44
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>

@XuanYang-cn XuanYang-cn left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requesting changes on the FTS benchmark correctness contract. Inline comments preserve the existing architecture review draft structure for the blocking and medium findings.

Comment thread vectordb_bench/backend/clients/api.py
Comment thread vectordb_bench/backend/task_runner.py Outdated
Comment thread vectordb_bench/frontend/config/dbCaseConfigs.py Outdated
Comment thread vectordb_bench/backend/dataset.py
Comment thread vectordb_bench/metric.py
Comment thread vectordb_bench/frontend/pages/full_text_search.py
Comment thread vectordb_bench/backend/cases.py Outdated
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
James Gao added 5 commits June 25, 2026 02:51
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
James Gao added 10 commits June 25, 2026 04:25
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
Signed-off-by: jamesgao-jpg <james.gao@zilliz.com>
@sre-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: jamesgao-jpg, XuanYang-cn

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@XuanYang-cn XuanYang-cn merged commit fad979c into zilliztech:main Jun 26, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants