← all runs

Cohere-100M — 2026-10-15

r8i.4xlarge · peak recall 0.9974 @ 19 QPS

QPS at recall

RecallPRISMvchordrqΔ vs best competitor
0.9045463+620%
0.9521025+755%
0.9949— (max r=0.981)—

Throughput under load

Recall · clientsPRISMvchordrqΔ vs best competitor
0.95 · 1 client243 (243)
p50 4.04 ms · p95 5.38 ms
39 (39)
p50 25.52 ms · p95 30.45 ms
+528%
0.95 · 16 clients (1x of 16 CPUs)2,362 (2,363) · 9.7×
p50 6.66 ms · p95 8.80 ms
408 (408) · 10.5×
p50 38.85 ms · p95 46.30 ms
+479%
0.95 · 32 clients (2x of 16 CPUs)2,312 (2,314) · 9.5×
p50 13.57 ms · p95 21.84 ms
369 (370) · 10.4×
p50 86.40 ms · p95 118.02 ms
+526%
0.99 · 1 client72 (72)
p50 13.72 ms · p95 18.11 ms
11 (11)
p50 90.69 ms · p95 103.23 ms
+553%
0.99 · 16 clients (1x of 16 CPUs)677 (677) · 9.4×
p50 23.23 ms · p95 30.75 ms
113 (113) · 10.3×
p50 140.67 ms · p95 161.02 ms
+499%
0.99 · 32 clients (2x of 16 CPUs)670 (671) · 9.3×
p50 47.26 ms · p95 73.09 ms
104 (104) · 9.4×
p50 309.25 ms · p95 384.77 ms
+546%

Each configuration is measured at its operating point for the target: its fastest sweep point whose recall reaches it. Values are measured there, not interpolated, so the recall can be above the target. Each cell is wall-clock QPS over the whole run, then in parentheses the throughput while every client is busy, which leaves out the drain at the end, and below them the p50 and p95 query latency over all clients. With more than one client, N× is the speedup: wall-clock QPS over the same configuration's single-client wall-clock QPS at that target. Ideal scaling matches the client count until the host's CPUs saturate, after which it flattens. Clients are concurrent connections from rekall, and CPU counts are the rekall host's. Wall-clock QPS includes rekall's own work between queries, so the 1-client row reads a little below QPS at recall, which comes from query latency. Recall is distance-based (ann-benchmarks, tie-aware).

Measured on config — PRISM @0.95: prism-defaults (r=0.966) · vchordrq @0.95 with 1, 16 clients: vchordrq-100m (r=0.958) · vchordrq @0.95 with 32 clients: vchordrq-100m-rerank-table (r=0.957) · PRISM @0.99: prism-defaults (r=0.992) · vchordrq @0.99: vchordrq-100m (r=0.991)

Latency at recall

PRISMvchordrqΔ vs best competitor
@ recall 0.90
p502.17 ms15.60 ms-86%
p952.89 ms19.23 ms-85%
p993.44 ms21.42 ms-84%
@ recall 0.95
p504.67 ms40.30 ms-88%
p956.22 ms47.28 ms-87%
p997.45 ms51.42 ms-86%
@ recall 0.99
p5020.23 ms——
p9526.33 ms——
p9932.06 ms——

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 — PRISM @0.90: prism-defaults · vchordrq @0.90: vchordrq-100m · PRISM @0.95: prism-defaults · vchordrq @0.95: vchordrq-100m · PRISM @0.99: prism-defaults

Build comparison

PRISMvchordrqΔ vs best competitor
Build time6165 s6977 s-12%
Index size24.9 GB376.5 GB-93%

Build stats are for the configuration backing each column's best operating point: PRISM = prism-defaults, prewarmed · vchordrq = vchordrq-100m, prewarmed.

Plots

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

Host

Instance typer8i.4xlarge
Hostnameip-172-31-45-159
CPUIntel(R) Xeon(R) 6975P-C (16 vCPU)
Memory124 GB
OSUbuntu 26.04.1 LTS
Kernel7.0.0-1014-aws

Versions

rekall0.1.0 (c084f47 / main)
PostgreSQLPostgreSQL 18.6 (Ubuntu 18.6-1.pgdg26.04+2) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0, 64-bit
pg_prewarm1.2
pg_vectorsearch0.2.0-dev (7a9716b)
vchord1.1.1
vector0.8.7

Search

k10
runs3
warmup500
num_queries10000
S3 archives3://rekall-bench/runs/cohere-100m/2026-10-15/r8i.4xlarge-084525/

Index builds

IndexTypeBuild timeSizeWorkers
prism-defaultsprism6164.7s24.9 GB8
vchordrq-100mvchordrq6976.7s376.5 GB8
vchordrq-100m-rerank-tablevchordrq7268.9s17.3 GB8
Index parameters
prism-defaults: {"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}
vchordrq-100m: {"build_pin":2,"build_threads":16,"hierarchical_kmeans":true,"kmeans_dimension":100,"kmeans_iterations":null,"lists":[400,160000],"rerank_n":200,"residual_quantization":true,"sampling_factor":64,"spherical_centroids":true}
vchordrq-100m-rerank-table: {"build_pin":2,"build_threads":16,"hierarchical_kmeans":true,"kmeans_dimension":100,"kmeans_iterations":null,"lists":[400,160000],"rerank_in_table":true,"rerank_n":200,"residual_quantization":true,"sampling_factor":64,"spherical_centroids":true}
Instance settings (observed)
instance type          r8i.4xlarge
vCPU (observed)        16
memory (observed)      123.8 GiB
cpu model              Intel(R) Xeon(R) 6975P-C
kernel                 7.0.0-1014-aws
data directory         /var/lib/postgresql/18/main
mount point            /
filesystem             ext4
media                  ebs
device                 nvme0n1
device size            2147 GB
ebs volume             vol-01f87d1479c6b9aa7
ebs volume type        gp3
provisioned IOPS       16000
provisioned throughput 1000 MB/s
io scheduler           none
nr_requests            63
read_ahead_kb          128
PostgreSQL settings
checkpoint_completion_target = 0.9
cluster_name = 18/main
data_directory = /var/lib/postgresql/18/main
effective_cache_size = 96 GB
effective_io_concurrency = 256
huge_pages = try
jit = off
maintenance_io_concurrency = 256
maintenance_work_mem = 51 GB
max_connections = 82
max_parallel_maintenance_workers = 8
max_parallel_workers = 16
max_wal_size = 32 GB
random_page_cost = 1.1
server_version = 18.6 (Ubuntu 18.6-1.pgdg26.04+2)
shared_buffers = 32 GB
wal_level = replica
work_mem = 1 GB