← all runs
Glove-100 — 2026-08-12
r6i.16xlarge · peak recall 0.9981 @ 45 QPS
QPS at recall
| Recall | Meerkat | pgvector HNSW (halfvec) | pgvector HNSW | pgvector-ivfflat (halfvec) | pgvector-ivfflat | pgvector-ivfflat (bit) | Δ vs best competitor |
|---|
| 0.90 | 453 | 301 | 288 | 67 | 63 | — (max r=0.564) | +50% |
| 0.95 | 264 | 139 | 133 | 30 | 29 | — (max r=0.564) | +90% |
| 0.99 | 96 | — (max r=0.976) | — (max r=0.977) | 9 | 9 | — (max r=0.564) | +951% |
Latency at recall
| Meerkat | pgvector HNSW (halfvec) | pgvector HNSW | pgvector-ivfflat (halfvec) | pgvector-ivfflat | pgvector-ivfflat (bit) | Δ vs best competitor |
|---|
| @ recall 0.90 | | | | | | | |
| p50 | 2.13 ms | 3.39 ms | 3.54 ms | 14.60 ms | 15.42 ms | — | -37% |
| p95 | 3.89 ms | 4.35 ms | 4.56 ms | 20.78 ms | 22.50 ms | — | -11% |
| p99 | 4.36 ms | 4.78 ms | 5.02 ms | 22.28 ms | 24.07 ms | — | -9% |
| @ recall 0.95 | | | | | | | |
| p50 | 3.59 ms | 7.39 ms | 7.70 ms | 32.75 ms | 34.72 ms | — | -51% |
| p95 | 7.21 ms | 9.60 ms | 10.03 ms | 42.02 ms | 45.58 ms | — | -25% |
| p99 | 8.07 ms | 10.01 ms | 10.44 ms | 44.85 ms | 49.81 ms | — | -19% |
| @ recall 0.99 | | | | | | | |
| p50 | 9.31 ms | — | — | 110.06 ms | 110.59 ms | — | -92% |
| p95 | 20.79 ms | — | — | 122.83 ms | 125.69 ms | — | -83% |
| p99 | 23.13 ms | — | — | 126.86 ms | 131.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
| Meerkat | pgvector HNSW (halfvec) | pgvector HNSW | pgvector-ivfflat (halfvec) | pgvector-ivfflat | pgvector-ivfflat (bit) | Δ vs best competitor |
|---|
| Build time | 83.9 s | 2020 s | 1783 s | 57.9 s | 44.3 s | — | +89% |
| Index size | 93.2 MB | 711.5 MB | 925.8 MB | 254.4 MB | 491.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 svgHost
| Instance type | r6i.16xlarge |
| Hostname | ip-172-31-15-118 |
| CPU | Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz (64 vCPU) |
| Memory | 496 GB |
| OS | Ubuntu 26.04 LTS |
| Kernel | 7.0.0-1010-aws |
Versions
| rekall | 0.1.0 (dd61107 / main) |
| PostgreSQL | PostgreSQL 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 |
| meerkat | 0.1.0 (0c154a4) |
| pg_prewarm | 1.2 |
| vector | 0.8.6 |
Search
Index builds
| Index | Type | Build time | Size | Workers |
|---|
| hnsw-m16-annb | pgvector-hnsw | 1253.1s | 840.6 MB | 0 |
| hnsw-m24-annb | pgvector-hnsw | 1783.3s | 925.8 MB | 0 |
| hnsw-m24-annb-halfvec | pgvector-hnsw | 2019.8s | 711.5 MB | 0 |
| ivfflat-glove-bq | pgvector-ivfflat | 24.4s | 45.2 MB | 0 |
| ivfflat-glove-fullvec | pgvector-ivfflat | 44.3s | 491.0 MB | 0 |
| ivfflat-glove-halfvec | pgvector-ivfflat | 57.9s | 254.4 MB | 0 |
| mkt-defaults-serial | meerkat | 83.9s | 93.2 MB | 0 |
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