Files
landing_page/qdrant-landing/themes/qdrant/layouts/partials/benchmark_chart.html
T
GeorgeandAndrey Vasnetsov faad182279 Filtered search benchmarks (#112)
* new: add filtered search bench draft

* new: update filtered search benchmark post

* new: render article

* refactoring: add newlines

* new: add filtered search bench file structure, add chart

* fix: fix plot preselect

* fix: fix canvas id

* debug: debug js

* debug: add benchmark filter search script to header

* fix: fix filter search plot selection

* new: update benchmark data

* refactoring: remove commented code

* fix: fix bench data

* new: fix labels order

* new: sort dataset labels

* new: add some text

* fix: fix descriptions

* debug: fix mapping not allowed yaml parsing error

* new: update bench data

* fix: fix dataset name

* new: update bench data

* fix: fix qdrant kw small vocab

* text for the articles

* upd text

* fix: fix typos

* new: replace bars with scatter plots

* fix: fix method calls

* debug: add initializer

* fix: replace debug const with variable

* new: remove data based split, remain only one plot

* fix: remove geo data for milvus

* new: remove range data for weaviate

* new: remove int 2048 for milvus, as it crashes at the moment

* upd graphs

* link

---------

Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com>
2023-02-16 15:40:22 +01:00

136 lines
3.7 KiB
HTML

<div class="benchmark-wrapper">
<label for="datasets-selector-{{ .Params.id }}">Dataset:</label>
<select name="datasets" id="datasets-selector-{{ .Params.id }}" onchange="renderSelected('{{ .Params.id }}')">
</select>
<label for="parallel-selector-{{ .Params.id }}">Search threads:</label>
<select name="parallel" id="parallel-selector-{{ .Params.id }}" onchange="renderSelected('{{ .Params.id }}')">
</select>
Plot values:
<!-- Radio button group to select values to render -->
<label>
<input checked type="radio" name="plot-value-{{ .Params.id }}" value="rps" onclick="renderSelected('{{ .Params.id }}', this.value)"/>
RPS
</label> |
<label>
<input type="radio" name="plot-value-{{ .Params.id }}" value="mean_time" onclick="renderSelected('{{ .Params.id }}', this.value)"/>
Latency
</label> |
<label>
<input type="radio" name="plot-value-{{ .Params.id }}" value="p95_time" onclick="renderSelected('{{ .Params.id }}', this.value)"/>
p95 latency
</label> |
<label>
<input type="radio" name="plot-value-{{ .Params.id }}" value="total_upload_time" onclick="renderSelected('{{ .Params.id }}', this.value)"/>
Index time
</label>
<canvas id="chart-{{ .Params.id }}"></canvas>
<div class="form-group" style="margin-left: 5%; margin-right: 1%;">
<input type="range" class="custom-range" id="precision-selector-{{ .Params.id }}" onchange="updateLine('{{ .Params.id }}', this.value)">
</div>
<div id="table-{{ .Params.id }}"></div>
<i> Download raw data: <a href="{{ .Params.data }}">here</a> </i>
</div>
<!--<script type="module" src="/benchmark.js"></script>-->
<script type="module">
let url = "{{ .Params.data }}";
let datasetSelector = document.getElementById("datasets-selector-{{ .Params.id }}");
let parallelSelector = document.getElementById("parallel-selector-{{ .Params.id }}");
let precisionSelector = document.getElementById("precision-selector-{{ .Params.id }}");
const config = {
type: 'line',
data: {
datasets: []
},
options: {
responsive: true,
interaction: {
intersect: false,
},
scales: {
x: {
type: 'linear',
title: {
display: true,
text: 'Precision'
},
},
y: {
type: 'linear',
title: {
display: true,
text: ''
},
}
},
plugins: {
tooltip: {
callbacks: {
label: function (tooltipItem) {
return [
" - " + tooltipItem.parsed.setup_name,
JSON.stringify(tooltipItem.parsed.engine_params)
];
},
title: function (tooltipItem) {
return "Precision: " + tooltipItem[0].parsed.x + ", y: " + tooltipItem[0].parsed.y;
}
}
},
}
}
};
const chart = new Chart(
document.getElementById('chart-{{ .Params.id }}'),
config
);
fetch(url)
.then(res => res.json())
.then(data => {
const datasets = getDatasetsList(data);
updataDropdown(datasetSelector, datasets);
// reverse parallels list to have the highest number of parallel threads first
const parallels = getParallelOptions(data).reverse();
updataDropdown(parallelSelector, parallels);
let parallelsInt = parseInt(parallels[0]);
let selectedData = filterData(data, {
"dataset_name": datasets[0],
"parallel": parallelsInt
});
window.datasets = { "{{ .Params.id }}": data, ...window.datasets }
window.charts = { "{{ .Params.id }}": chart, ...window.charts }
renderSelected("{{ .Params.id }}");
// Chart js set min x value
});
</script>