mirror of
https://github.com/qdrant/landing_page.git
synced 2026-09-25 22:18:30 +02:00
* 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>
136 lines
3.7 KiB
HTML
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> |