Skip to main content

Test Environment

All benchmark values in this section were collected from a fresh local stack on 2026-06-11.

Host System

SpecificationValue
CPU11th Gen Intel Core i9-11900 @ 2.50GHz
CPU Cores16
Total RAM~80 GB (80,279 MB)
OSLinux
TimezoneAsia/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

ComponentVersion
Python3.11+
Docker29.2.1
Docker Composev5.1.0
uv0.11.7
just1.46.0
Classification Modelonnx-community/ModernBERT-base-nli-ONNX
Reranker ModelXenova/ms-marco-MiniLM-L-6-v2 (fastembed TextCrossEncoder)
Dense EmbeddingBAAI/bge-small-en-v1.5 (384-dim)
Sparse EmbeddingQdrant/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.

OperationRuns
Banking corpus upload6 documents, first 5 pages each
Top-1 retrieval queries6
Alpha latency search5 per alpha value
Reranking latency search3
OCR upload1 image upload rerun for timing
OCR search1 query
Classification benchmark6 gold items, 3 latency runs per item
Retrieval evaluation harness20 queries across bm25, hybrid, and hybrid+rerank
Health check1

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.