Skip to content

Commit 6fa46c8

Browse files
improve qps_recall chart (#618)
Signed-off-by: min.tian <[email protected]>
1 parent ae71bdb commit 6fa46c8

File tree

5 files changed

+25
-8
lines changed

5 files changed

+25
-8
lines changed

vectordb_bench/frontend/components/check_results/filters.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ def getshownResults(
3434
st,
3535
results: list[TestResult],
3636
case_results_filter: Callable[[CaseResult], bool] = lambda x: True,
37+
default_selected_task_labels: list[str] = [],
3738
**kwargs,
3839
) -> list[CaseResult]:
3940
resultSelectOptions = [
@@ -47,7 +48,7 @@ def getshownResults(
4748
"Select the task results you need to analyze.",
4849
resultSelectOptions,
4950
# label_visibility="hidden",
50-
default=resultSelectOptions,
51+
default=default_selected_task_labels or resultSelectOptions,
5152
)
5253
selectedResult: list[CaseResult] = []
5354
for option in selectedResultSelectedOptions:

vectordb_bench/frontend/components/check_results/nav.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ def NavToPages(st):
2626
options = [
2727
{"name": "Run Test", "link": "run_test"},
2828
{"name": "Results", "link": "results"},
29+
{"name": "Qps & Recall", "link": "qps_recall"},
2930
{"name": "Quries Per Dollar", "link": "quries_per_dollar"},
3031
{"name": "Concurrent", "link": "concurrent"},
3132
{"name": "Label Filter", "link": "label_filter"},

vectordb_bench/frontend/components/check_results/stPageConfig.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ def initResultsPageConfig(st):
55
st.set_page_config(
66
page_title=PAGE_TITLE,
77
page_icon=FAVICON,
8-
layout="wide",
8+
# layout="wide",
99
# initial_sidebar_state="collapsed",
1010
)
1111

vectordb_bench/frontend/components/qps_recall/charts.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ def drawBestperformance(data, y, group):
5353

5454

5555
def drawlinechart(st, data: list[object], metric, key: str):
56-
unit = metric_unit_map.get(metric, "")
5756
minV = min([d.get(metric, 0) for d in data])
5857
maxV = max([d.get(metric, 0) for d in data])
5958
padding = maxV - minV
@@ -87,11 +86,14 @@ def drawlinechart(st, data: list[object], metric, key: str):
8786
go.Scatter(
8887
x=db_data["recall"],
8988
y=db_data["qps"],
90-
mode="lines+markers",
89+
mode="lines+markers+text",
9190
name=db,
9291
line=dict(color=color_map[db]),
9392
marker=dict(color=color_map[db]),
9493
showlegend=True,
94+
hovertemplate="QPS=%{y:.4g}, Recall=%{x:.2f}",
95+
text=[f"{qps:.4g}@{recall:.2f}" for recall, qps in zip(db_data["recall"], db_data["qps"])],
96+
textposition="top right",
9597
)
9698
)
9799

@@ -107,9 +109,8 @@ def drawlinechart(st, data: list[object], metric, key: str):
107109
)
108110
)
109111

110-
fig.update_xaxes(range=xrange)
111-
fig.update_yaxes(range=yrange)
112-
fig.update_traces(textposition="bottom right", texttemplate="%{y:,.4~r}" + unit)
112+
fig.update_xaxes(range=xrange, title_text="Recall")
113+
fig.update_yaxes(range=yrange, title_text="QPS")
113114
fig.update_layout(
114115
margin=dict(l=0, r=0, t=40, b=0, pad=8),
115116
legend=dict(orientation="h", yanchor="bottom", y=1, xanchor="right", x=1, title=""),

vectordb_bench/frontend/pages/qps_recall.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import streamlit as st
2+
from vectordb_bench.backend.cases import CaseLabel
3+
from vectordb_bench.backend.filter import FilterOp
24
from vectordb_bench.frontend.components.check_results.footer import footer
35
from vectordb_bench.frontend.components.check_results.headerIcon import drawHeaderIcon
46
from vectordb_bench.frontend.components.check_results.nav import (
@@ -12,6 +14,7 @@
1214

1315
from vectordb_bench.frontend.config.styles import FAVICON
1416
from vectordb_bench.interface import benchmark_runner
17+
from vectordb_bench.models import CaseResult
1518

1619

1720
def main():
@@ -35,7 +38,18 @@ def main():
3538

3639
# results selector and filter
3740
resultSelectorContainer = st.sidebar.container()
38-
shownData, failedTasks, showCaseNames = getshownData(resultSelectorContainer, allResults)
41+
42+
def case_results_filter(case_result: CaseResult) -> bool:
43+
case = case_result.task_config.case_config.case
44+
return case.label == CaseLabel.Performance and case.filters.type == FilterOp.NonFilter
45+
46+
default_selected_task_labels = ["standard_2025"]
47+
shownData, failedTasks, showCaseNames = getshownData(
48+
resultSelectorContainer,
49+
allResults,
50+
case_results_filter=case_results_filter,
51+
default_selected_task_labels=default_selected_task_labels,
52+
)
3953

4054
resultSelectorContainer.divider()
4155

0 commit comments

Comments
 (0)