diff --git a/vectordb_bench/frontend/components/check_results/filters.py b/vectordb_bench/frontend/components/check_results/filters.py index 087f1fc6f..6016c0040 100644 --- a/vectordb_bench/frontend/components/check_results/filters.py +++ b/vectordb_bench/frontend/components/check_results/filters.py @@ -34,6 +34,7 @@ def getshownResults( st, results: list[TestResult], case_results_filter: Callable[[CaseResult], bool] = lambda x: True, + default_selected_task_labels: list[str] = [], **kwargs, ) -> list[CaseResult]: resultSelectOptions = [ @@ -47,7 +48,7 @@ def getshownResults( "Select the task results you need to analyze.", resultSelectOptions, # label_visibility="hidden", - default=resultSelectOptions, + default=default_selected_task_labels or resultSelectOptions, ) selectedResult: list[CaseResult] = [] for option in selectedResultSelectedOptions: diff --git a/vectordb_bench/frontend/components/check_results/nav.py b/vectordb_bench/frontend/components/check_results/nav.py index 2e72f2d63..ba4fa99c7 100644 --- a/vectordb_bench/frontend/components/check_results/nav.py +++ b/vectordb_bench/frontend/components/check_results/nav.py @@ -26,6 +26,7 @@ def NavToPages(st): options = [ {"name": "Run Test", "link": "run_test"}, {"name": "Results", "link": "results"}, + {"name": "Qps & Recall", "link": "qps_recall"}, {"name": "Quries Per Dollar", "link": "quries_per_dollar"}, {"name": "Concurrent", "link": "concurrent"}, {"name": "Label Filter", "link": "label_filter"}, diff --git a/vectordb_bench/frontend/components/check_results/stPageConfig.py b/vectordb_bench/frontend/components/check_results/stPageConfig.py index 8ddbf8b3d..9521be285 100644 --- a/vectordb_bench/frontend/components/check_results/stPageConfig.py +++ b/vectordb_bench/frontend/components/check_results/stPageConfig.py @@ -5,7 +5,7 @@ def initResultsPageConfig(st): st.set_page_config( page_title=PAGE_TITLE, page_icon=FAVICON, - layout="wide", + # layout="wide", # initial_sidebar_state="collapsed", ) diff --git a/vectordb_bench/frontend/components/qps_recall/charts.py b/vectordb_bench/frontend/components/qps_recall/charts.py index b2a180c5a..ab57dd0ce 100644 --- a/vectordb_bench/frontend/components/qps_recall/charts.py +++ b/vectordb_bench/frontend/components/qps_recall/charts.py @@ -53,7 +53,6 @@ def drawBestperformance(data, y, group): def drawlinechart(st, data: list[object], metric, key: str): - unit = metric_unit_map.get(metric, "") minV = min([d.get(metric, 0) for d in data]) maxV = max([d.get(metric, 0) for d in data]) padding = maxV - minV @@ -87,11 +86,14 @@ def drawlinechart(st, data: list[object], metric, key: str): go.Scatter( x=db_data["recall"], y=db_data["qps"], - mode="lines+markers", + mode="lines+markers+text", name=db, line=dict(color=color_map[db]), marker=dict(color=color_map[db]), showlegend=True, + hovertemplate="QPS=%{y:.4g}, Recall=%{x:.2f}", + text=[f"{qps:.4g}@{recall:.2f}" for recall, qps in zip(db_data["recall"], db_data["qps"])], + textposition="top right", ) ) @@ -107,9 +109,8 @@ def drawlinechart(st, data: list[object], metric, key: str): ) ) - fig.update_xaxes(range=xrange) - fig.update_yaxes(range=yrange) - fig.update_traces(textposition="bottom right", texttemplate="%{y:,.4~r}" + unit) + fig.update_xaxes(range=xrange, title_text="Recall") + fig.update_yaxes(range=yrange, title_text="QPS") fig.update_layout( margin=dict(l=0, r=0, t=40, b=0, pad=8), legend=dict(orientation="h", yanchor="bottom", y=1, xanchor="right", x=1, title=""), diff --git a/vectordb_bench/frontend/pages/qps_recall.py b/vectordb_bench/frontend/pages/qps_recall.py index 62d4a74f6..27f9c4691 100644 --- a/vectordb_bench/frontend/pages/qps_recall.py +++ b/vectordb_bench/frontend/pages/qps_recall.py @@ -1,4 +1,6 @@ import streamlit as st +from vectordb_bench.backend.cases import CaseLabel +from vectordb_bench.backend.filter import FilterOp from vectordb_bench.frontend.components.check_results.footer import footer from vectordb_bench.frontend.components.check_results.headerIcon import drawHeaderIcon from vectordb_bench.frontend.components.check_results.nav import ( @@ -12,6 +14,7 @@ from vectordb_bench.frontend.config.styles import FAVICON from vectordb_bench.interface import benchmark_runner +from vectordb_bench.models import CaseResult def main(): @@ -35,7 +38,18 @@ def main(): # results selector and filter resultSelectorContainer = st.sidebar.container() - shownData, failedTasks, showCaseNames = getshownData(resultSelectorContainer, allResults) + + def case_results_filter(case_result: CaseResult) -> bool: + case = case_result.task_config.case_config.case + return case.label == CaseLabel.Performance and case.filters.type == FilterOp.NonFilter + + default_selected_task_labels = ["standard_2025"] + shownData, failedTasks, showCaseNames = getshownData( + resultSelectorContainer, + allResults, + case_results_filter=case_results_filter, + default_selected_task_labels=default_selected_task_labels, + ) resultSelectorContainer.divider()