Home/Vector Databases/vector-db-benchmark
vector-db-benchmark logo

vector-db-benchmark

qdrant/vector-db-benchmark

Framework for benchmarking vector search engines

GraphCanon updated 2d · GitHub synced 2d

368 stars153 forksLast push 4d Python Apache-2.0

Decision brief

vector-db-benchmark is a Python-based framework that focuses on benchmarking vector search engines critical for applications ranging from recommendation systems to semantic search.

Good fit when

  • Use this tool when you need precisely measured performance metrics of vector databases, especially in environments where decision-making is driven by nuanced data comparisons and analysis.
  • Consider leveraging it if your project involves developing or enhancing a recommendation system or another application requiring accurate semantic search capabilities.

Avoid when

  • Avoid this tool if you are looking to benchmark non-vector database types, as its focus specifically lies on vector databases used in specialized scenarios like the ones mentioned.
  • Do not use vector-db-benchmark when your project does not require deep analysis or comparison of vector search performance, as it might add unnecessary complexity.

Observed Jul 14, 2026 · Source: enrich:decision_facts

Verify the decision

Adoption

Package downloads where a registry match exists. GitHub stars (368) are secondary evidence.

Docker Hub pulls (30d)
89,514·Docker Hub API·2d

Maintenance and security

Full trust report
Maintenance
Very active (1d since push)
As of 2d
Provenance
Not a fork · Organization account
As of 2d
Security (OSV)
No lockfile
As of 1mo

Public GitHub metadata and optional OSV scans. Signals, not a guarantee. Trust methodology.

Backing

Company context for Qdrant. Display-only - separate from trust and ranking.

Company
Qdrant·GitHub org profile·1mo
Funding
$28,000,000 (2024-01)·GraphCanon curated seed (public press)·1mo
Commercial model
Open core·GraphCanon curated seed·1mo

Install

pip install vector-db-benchmark
PyPI

How it fits your stack(1)

Typed graph edges - alternatives, integrations, successors, and dependencies. Ranked by relationship type, not raw GitHub stars.

Relationship graph

Optional deeper exploration of typed edges and category neighbours.

Similar tools

Same-category neighbours not already linked as typed edges.

Evidence and technical details

Sourced facts, taxonomy, compatibility claims, README excerpt, and machine-readable endpoints.

Overview

Provides tools and benchmarks to evaluate performance of various vector databases used in applications such as recommendation systems and semantic search.

Capability facts

Deploy
Self-host

Source: dockerfile:Dockerfile · Aug 23, 2026

Docker
Dockerfile present

Source: dockerfile:Dockerfile · Aug 23, 2026

Languages
python

Source: github.language+pyproject.toml · Aug 23, 2026

Categories

Graph entities

Compatibility

Sourced claims from the README excerpt - not unsourced marketing copy.

Python runtimePython

Source: README excerpt (regex_v1, Aug 23, 2026)

$ python run.py --help
Source link

Tags

README

vector-db-benchmark

View results

There are various vector search engines available, and each of them may offer a different set of features and efficiency. But how do we measure the performance? There is no clear definition and in a specific case you may worry about a specific thing, while not paying much attention to other aspects. This project is a general framework for benchmarking different engines under the same hardware constraints, so you can choose what works best for you.

Running any benchmark requires choosing an engine, a dataset and defining the scenario against which it should be tested. A specific scenario may assume running the server in a single or distributed mode, a different client implementation and the number of client instances.

How to run a benchmark?

Benchmarks are implemented in server-client mode, meaning that the server is running in a single machine, and the client is running on another.

Run the server

All engines are served using docker compose. The configuration is in the servers.

To launch the server instance, run the following command:

cd ./engine/servers/<engine-configuration-name>
docker compose up

Containers are expected to expose all necessary ports, so the client can connect to them.

Run the client

Install dependencies:

pip install poetry
poetry install

Run the benchmark:

$ poetry shell
$ python run.py --help

Usage: run.py [OPTIONS]

  Examples:

  python3 run.py --engines "qdrant-rps-m-*-ef-*" --datasets "dbpedia-openai-100K-1536-angular" # Qdrant RPS mode

  python3 run.py --engines "*-m-*-ef-*" --datasets "glove-*" # All engines and their configs for glove datasets

Options:
  --engines TEXT                  [default: *]
  --datasets TEXT                 [default: *]
  --host TEXT                     [default: localhost]
  --skip-upload / --no-skip-upload
                                  [default: no-skip-upload]
  --install-completion            Install completion for the current shell.
  --show-completion               Show completion for the current shell, to
                                  copy it or customize the installation.
  --help                          Show this message and exit.

Command allows you to specify wildcards for engines and datasets. Results of the benchmarks are stored in the ./results/ directory.

How to update benchmark parameters?

Each engine has a configuration file, which is used to define the parameters for the benchmark. Configuration files are located in the configuration directory.

Each step in the benchmark process is using a dedicated configuration's path:

  • connection_params - passed to the client during the connection phase.
  • collection_params - parameters, used to create the collection, indexing parameters are usually defined here.
  • upload_params - parameters, used to upload the data to the server.
  • search_params - passed to the client during the search phase. Framework allows multiple search configurations for the same experiment run.

Exact values of the parameters are individual for each engine.

How to register a dataset?

Datasets are configured in the datasets/datasets.json file. Framework will automatically download the dataset and store it in the datasets directory.

How to implement a new engine?

There are a few base classes that you can use to implement a new engine.

  • BaseConfigurator - defines methods to create collections, setup indexing parameters.
  • BaseUploader - defines methods to upload the data to the server.
  • BaseSearcher - defines methods to search the data.

See the examples in the clients directory.

Once all the necessary classes are implemented, you can register the engine in the ClientFactory.

For agents

This page has a .md twin and JSON over the API.

Was this helpful?

Anonymous feedback helps us improve pages and translations.