Test Environment
All benchmark values in this section were collected from a fresh local stack on 2026-06-11.
Host System
| Specification | Value |
|---|---|
| CPU | 11th Gen Intel Core i9-11900 @ 2.50GHz |
| CPU Cores | 16 |
| Total RAM | ~80 GB (80,279 MB) |
| OS | Linux |
| Timezone | Asia/Kuala_Lumpur |
Runtime Configuration (Auto-Tuned)
The production runtime was generated by just prod-up:
PROD_API_WORKERS=2
PROD_EMBEDDING_TOTAL_SLOTS=8
PROD_EMBEDDING_CONCURRENCY=1
PROD_EMBEDDING_REPLICA_1_SCALE=4
PROD_EMBEDDING_REPLICA_2_SCALE=4
PROD_EMBEDDING_CPU_PER_WORKER=1
PROD_EMBEDDING_MEMORY_PER_WORKER=2560M
PROD_PREPROCESSING_TOTAL_SLOTS=2
PROD_PREPROCESSING_CONCURRENCY=2
PROD_PREPROCESSING_REPLICAS=1
Dependency Versions
| Component | Version |
|---|---|
| Python | 3.11+ |
| Docker | 29.2.1 |
| Docker Compose | v5.1.0 |
| uv | 0.11.7 |
| just | 1.46.0 |
| Classification Model | onnx-community/ModernBERT-base-nli-ONNX |
| Reranker Model | Xenova/ms-marco-MiniLM-L-6-v2 (fastembed TextCrossEncoder) |
| Dense Embedding | BAAI/bge-small-en-v1.5 (384-dim) |
| Sparse Embedding | Qdrant/bm25 |
Reranker Details
- Implementation:
fastembed.rerank.cross_encoder.TextCrossEncoder - Model:
Xenova/ms-marco-MiniLM-L-6-v2(ONNX-based) - Lifecycle: Pre-loaded as singleton at application startup
Methodology
Benchmark methodology
The benchmark stack started with 0 documents. The banking corpus was embedded first, then search, OCR, classification, and retrieval-evaluation checks were run against the populated stack.
| Operation | Runs |
|---|---|
| Banking corpus upload | 6 documents, first 5 pages each |
| Top-1 retrieval queries | 6 |
| Alpha latency search | 5 per alpha value |
| Reranking latency search | 3 |
| OCR upload | 1 image upload rerun for timing |
| OCR search | 1 query |
| Classification benchmark | 6 gold items, 3 latency runs per item |
| Retrieval evaluation harness | 20 queries across bm25, hybrid, and hybrid+rerank |
| Health check | 1 |
Latency tables report API query_time_ms where available. Upload and pipeline tables report the script-measured upload, poll, and wall-clock timings from the real run.