KB Arena
Compare retrieval architectures on the same documentation and questions, then choose from recorded quality, latency, cost, and limits.
How it works
Same question
Send each question, from direct lookups to multi-topic chains, to the selected strategies.
4-pass evaluation
Structural checks, entity coverage, source attribution against your docs, then LLM-as-judge scoring.
Ranked report
Accuracy by tier, latency percentiles, reliability rates, and cross-strategy composite ranking across your documentation.
Strategy catalog
Naive Vector
Chunks documents, embeds each chunk, and retrieves top-k by cosine similarity as a dense baseline.
Runtime status unavailable
Contextual Vector
Prepends parent topic context to each chunk before embedding so you can measure whether document context changes retrieval.
Runtime status unavailable
QnA Pairs
Generates question-answer pairs at index time and retrieves against those pairs instead of only source chunks.
Runtime status unavailable
Knowledge Graph
Extracts entities and relationships into Neo4j, then queries the graph through intent-matched Cypher templates.
Runtime status unavailable
LightRAG
Reads the same Neo4j graph two ways: a local entity neighborhood walk and a global community summary, and labels which one produced each chunk.
Runtime status unavailable | Experimental
Hybrid
Routes by intent between vector and graph paths, then uses reciprocal rank fusion when both paths contribute.
Runtime status unavailable
RAPTOR
Builds a recursive tree of chunk clusters and summaries, then queries leaf and summary levels together.
Runtime status unavailable
PageIndex
Builds a hierarchical tree from document structure and uses model-guided traversal without an embedding index.
Runtime status unavailable
BM25
Uses BM25 keyword matching as a keyless lexical baseline with no embeddings or graph service.
Runtime status unavailable
Metadata Filtered
Applies an access filter (tags, owner, classification, doc ID allow-list) inside retrieval, so a restricted chunk never reaches the ranked list.
Runtime status unavailable | Experimental
Temporal
Prefers each document's newest version and supports an as-of date, so a superseded chunk never outranks its replacement.
Runtime status unavailable | Experimental
Rerank Vector
Naive Vector retrieves a wide candidate pool, then a cross-encoder reranker (BGE, Cohere, or Voyage) rescores and keeps the top-k for a measured latency-quality tradeoff.
Runtime status unavailable
QISS (quantum)
Rescores dense candidates with a pure-NumPy state-fidelity calculation and offers an experimental multi-query mode.
Runtime status unavailable | Experimental
SQR (optional quantum)
Experimental Qiskit Aer SWAP-test reranker. It is excluded from the default benchmark and needs the optional quantum dependency group.
Runtime status unavailable | Experimental
HyDE
Asks the model for a hypothetical answer and embeds that instead of the question before retrieving over naive_vector.
Runtime status unavailable | Experimental
Multi-Query
Asks the model for several sub-queries, retrieves each over naive_vector, and fuses the ranked lists with Reciprocal Rank Fusion.
Runtime status unavailable | Experimental
Late Interaction
ColBERT-style reranker that keeps one embedding per token and scores by MaxSim instead of a single pooled vector. Needs the optional late-interaction dependency group.
Runtime status unavailable
SPLADE
Expands a query into weighted vocabulary terms and scores against its own sparse term-weight index. Needs the optional splade dependency group.
Runtime status unavailable
Agentic (experimental)
Retrieves, judges whether the context is enough, and retrieves again with a refined query, under a hard iteration and LLM-call budget. Excluded from the default benchmark because it costs several LLM calls per question.
Runtime status unavailable | Experimental
5 difficulty tiers, auto-generated or hand-crafted
AWS Compute
Not labeled