← all runs

Glove-100 — 2026-08-12

r6i.16xlarge · peak recall 0.9981 @ 45 QPS

QPS at recall

RecallMeerkatpgvector HNSW (halfvec)pgvector HNSWpgvector-ivfflat (halfvec)pgvector-ivfflatpgvector-ivfflat (bit)Δ vs best competitor
0.904533012886763— (max r=0.564)+50%
0.952641391333029— (max r=0.564)+90%
0.9996— (max r=0.976)— (max r=0.977)99— (max r=0.564)+951%

Latency at recall

Meerkatpgvector HNSW (halfvec)pgvector HNSWpgvector-ivfflat (halfvec)pgvector-ivfflatpgvector-ivfflat (bit)Δ vs best competitor
@ recall 0.90
p502.13 ms3.39 ms3.54 ms14.60 ms15.42 ms—-37%
p953.89 ms4.35 ms4.56 ms20.78 ms22.50 ms—-11%
p994.36 ms4.78 ms5.02 ms22.28 ms24.07 ms—-9%
@ recall 0.95
p503.59 ms7.39 ms7.70 ms32.75 ms34.72 ms—-51%
p957.21 ms9.60 ms10.03 ms42.02 ms45.58 ms—-25%
p998.07 ms10.01 ms10.44 ms44.85 ms49.81 ms—-19%
@ recall 0.99
p509.31 ms——110.06 ms110.59 ms—-92%
p9520.79 ms——122.83 ms125.69 ms—-83%
p9923.13 ms——126.86 ms131.16 ms—-82%

All values are taken at exactly the stated recall: each configuration's own sweep is log-interpolated between its two surrounding measured points (measured values are used verbatim on an exact hit) and the best configuration at that recall is shown — values are never interpolated across different configurations. “—” means no single sweep spans that recall; nothing is extrapolated. Recall is distance-based (ann-benchmarks, tie-aware). Insert/update/delete workloads are not measured.

Interpolated on config — Meerkat @0.90: mkt-defaults-serial · pgvector HNSW (halfvec) @0.90: hnsw-m24-annb-halfvec · pgvector HNSW @0.90: hnsw-m24-annb · pgvector-ivfflat (halfvec) @0.90: ivfflat-glove-halfvec · pgvector-ivfflat @0.90: ivfflat-glove-fullvec · Meerkat @0.95: mkt-defaults-serial · pgvector HNSW (halfvec) @0.95: hnsw-m24-annb-halfvec · pgvector HNSW @0.95: hnsw-m24-annb · pgvector-ivfflat (halfvec) @0.95: ivfflat-glove-halfvec · pgvector-ivfflat @0.95: ivfflat-glove-fullvec · Meerkat @0.99: mkt-defaults-serial · pgvector-ivfflat (halfvec) @0.99: ivfflat-glove-halfvec · pgvector-ivfflat @0.99: ivfflat-glove-fullvec

Build comparison

Meerkatpgvector HNSW (halfvec)pgvector HNSWpgvector-ivfflat (halfvec)pgvector-ivfflatpgvector-ivfflat (bit)Δ vs best competitor
Build time83.9 s2020 s1783 s57.9 s44.3 s—+89%
Index size93.2 MB711.5 MB925.8 MB254.4 MB491.0 MB—-63%

Build stats are for the configuration backing each column's best operating point: Meerkat = mkt-defaults-serial, prewarmed · pgvector HNSW (halfvec) = hnsw-m24-annb-halfvec, prewarmed · pgvector HNSW = hnsw-m24-annb, prewarmed · pgvector-ivfflat (halfvec) = ivfflat-glove-halfvec, prewarmed · pgvector-ivfflat = ivfflat-glove-fullvec, prewarmed.

Plots

Pareto svg  ·  Distance-recall svg  ·  Per-config svg  ·  Build times svg  ·  Index sizes svg
paretodistance-recallbuild-timesbuild-sizes

Host

Instance typer6i.16xlarge
Hostnameip-172-31-15-118
CPUIntel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz (64 vCPU)
Memory496 GB
OSUbuntu 26.04 LTS
Kernel7.0.0-1010-aws

Versions

rekall0.1.0 (dd61107 / main)
PostgreSQLPostgreSQL 18.4 (Ubuntu 18.4-1.pgdg26.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0, 64-bit
meerkat0.1.0 (0c154a4)
pg_prewarm1.2
vector0.8.6

Search

k10
runs5
warmup500
num_queries10000
S3 archives3://rekall-bench/runs/glove-100/2026-08-12/r6i.16xlarge-105117/

Index builds

IndexTypeBuild timeSizeWorkers
hnsw-m16-annbpgvector-hnsw1253.1s840.6 MB0
hnsw-m24-annbpgvector-hnsw1783.3s925.8 MB0
hnsw-m24-annb-halfvecpgvector-hnsw2019.8s711.5 MB0
ivfflat-glove-bqpgvector-ivfflat24.4s45.2 MB0
ivfflat-glove-fullvecpgvector-ivfflat44.3s491.0 MB0
ivfflat-glove-halfvecpgvector-ivfflat57.9s254.4 MB0
mkt-defaults-serialmeerkat83.9s93.2 MB0
Index parameters
hnsw-m16-annb: {"ef_construction":200,"encoding":"vector","m":16}
hnsw-m24-annb: {"ef_construction":200,"encoding":"vector","m":24}
hnsw-m24-annb-halfvec: {"ef_construction":200,"encoding":"halfvec","m":24}
ivfflat-glove-bq: {"encoding":"bit","lists":1086}
ivfflat-glove-fullvec: {"encoding":"vector","lists":1086}
ivfflat-glove-halfvec: {"encoding":"halfvec","lists":1086}
mkt-defaults-serial: {"boundary_epsilon":null,"centroid_compression":null,"centroid_fastscan":null,"fan_out":null,"fastscan":null,"fastscan_bits":null,"nlist":null,"rerank_vectors":null,"soar_lambda":null}
PostgreSQL settings
effective_cache_size = 384 GB
effective_io_concurrency = 200
huge_pages = try
maintenance_work_mem = 204 GB
max_connections = 100
max_parallel_maintenance_workers = 32
max_parallel_workers = 64
random_page_cost = 1.1
shared_buffers = 128 GB
wal_level = replica
work_mem = 256 MB