RAG quality gates

Stop shipping RAG chunking regressions.

Compare a pull request's chunk boundaries and retrieval results against a baseline — then fail CI when quality drops.

When a check fails, inspect the exact changed chunks.

Illustrative concept — SplitBench is not available yet
Concept: app.splitbench.dev/pipeline-eval
Strategy A: Semantic Splitter
Recall @ 5: 94.2% Latency: 42ms
Parsed document1,280 tokens
Chunk #01 · Tokens 0-340 · Topic: Auth & Sessions“OAuth2 token validation requires validating the asymmetric signature against the JWKS endpoint. Expired JWTs return HTTP 401 with code invalid_token.”
Chunk #02 · Tokens 341-690 · Topic: Rate Limiting Matrix“Tier 1 customers receive 10,000 req/min with token bucket bursts. Table: [Endpoint | Burst | Penalty]. Non-burst queries throttle at 200 req/s.”
Chunk #03 · Tokens 691-1020 · Topic: Error Fallbacks“When Redis is unavailable, the fallback circuit breaker switches to in-memory LRU cache with a 60s TTL.”
Evaluation Results+18.4% vs Baseline
Context Preservation96%
Table Boundary Integrity100%
Boundary contamination0% (Clean)

✓ 3 strategies benchmarked across 24 test queries.

SplitBench identified 2 semantic break points preserved over fixed-size.

This is a design mockup showing planned functionality, not a working product.

Initial beta focus: Markdown and code documentation in GitHub Actions

Planned compatibility: common vector databases (Pinecone, Weaviate, pgvector, Chroma) and embedding providers (OpenAI, Cohere, local models)

Vector DBs:
PineconeWeaviatepgvectorChroma
Embeddings:
OpenAICohereLocal models

THE PROBLEM

Chunking is the least visible, most breakable part of RAG

Most teams treat document chunking as an afterthought — until chunk regressions and poor top-k recall corrupt retrieval accuracy.

40%+ noisy chunks

Boilerplate pollution

In some document sets, footer and header text can end up in 40%+ of your chunks, cluttering embeddings so your retriever keeps surfacing junk instead of real content.

01 // failure_mode
Silent accuracy drop

Confidently wrong answers

The scariest failures aren't obvious hallucinations — they're answers that look completely correct and only fall apart when you manually check them against the source.

02 // failure_mode
Recall suppression

Overlap misconfiguration

Chunk overlap set too low silently kills recall. Teams routinely see major retrieval gains just from tuning overlap from a fixed token count to 20–25% of chunk size — but only after shipping broken retrieval for weeks.

03 // failure_mode
Pipeline drift

Inconsistent rebuilds

The same document can produce different chunks on every rebuild, and retrieval quality swings with it — with no visibility into what changed.

04 // failure_mode

HOW IT WORKS

From raw docs to a scored comparison in minutes

Diagnose chunk boundaries, optimize overlap ratios, and establish automated pre-production regression testing.

01

Connect your docs

Upload a sample doc set or connect your existing repository source.

Markdown, PDF, HTML, JSON, and code repos.
02

Tune overlap & chunk boundaries

Dynamically compare static fixed-token overlap against 20–25% chunk-size ratios to eliminate dead zones between sentences.

Visual boundary inspection with token loss heatmaps.
03

Run every strategy in parallel

Benchmark fixed-size, semantic splitters, and parent-document chunking simultaneously against your eval query set.

Instant side-by-side recall, latency, and context metrics.
04

Gate your build in CI

Enforce quality baselines. If a rebuild introduces boilerplate bleed or drops recall, SplitBench fails your build automatically.

Zero dashboard monitoring required — simple pass/fail.
Visual Feature Focus

Overlap Tuning: Fixed Token Overlap vs. Adaptive Ratio Overlap

strategy_eval: overlap_gain
50 token fixed overlapLower recall in this example
Chunk A: “...auth tokens expire in 3600 seconds. Next, ensure that all endpoints”
✕ Context Boundary Severed: Sentence fragment severed mid-logic
Chunk B: “ensure that all endpoints validate the cryptographic signature...”

Static token counts drop cross-chunk semantic continuity, causing vector search to miss multi-sentence answers.

20–25% chunk-size overlapHigher recall in this example
Chunk A: “...auth tokens expire in 3600 seconds. Next, ensure that all endpoints validate the cryptographic signature...”
✓ Full Sentence Preserved in both chunks with semantic bridge
Chunk B: “Next, ensure that all endpoints validate the cryptographic signature before dispatching queries...”

Proportional window preserves complete semantic clauses across chunks, boosting top-k recall on multi-clause queries.

Example result on this test set — actual gains vary by document structure, chunk size, and embedding model.

WHY NOT JUST USE X?

Isn't this just Chonkie / Ragas / ChunkViz?

Short answer: no — but you probably need some of them too. Here's the difference.

ToolWhat it's forWhat it doesn't do
Chonkie
Chunking Library
Fast, lightweight chunking library with basic visualization
Doesn't diagnose why a specific chunk broke retrieval, doesn't gate in CI on chunk quality regressions
Ragas / LangSmith / Langfuse
Aggregate RAG Evals & Traces
Aggregate RAG evaluation — faithfulness, relevance, recall scores
Not primarily designed to provide versioned, chunk-boundary diffs and merge-blocking checks — focuses on aggregate evaluation and production traces
ChunkViz
Manual Visualizer
Free, manual, one-off visual inspection of chunk boundaries
No regression tracking across rebuilds, no CI integration, no team collaboration
The SplitBench Difference

“Chonkie and Ragas tell you IF your chunks are good in aggregate. SplitBench shows you WHICH specific chunk broke and WHY — and fails your build automatically if it happens again.”

Planned Workflow · Private Beta

Built for the moment before you deploy

Stop waiting for user complaints or silent hallucinations. Turn chunk quality into a deterministic pass/fail gate in CI.

Proposed workflow (Example GitHub Actions output)This is a design mockup, not a working integration
.github/workflows/rag-eval.yml
Proposed CI gate

# Add SplitBench check before vector store indexing

- name: SplitBench Chunk Quality Gate

run: splitbench check --fail-on-regression --baseline=main

env:

SPLITBENCH_API_KEY: ${{ secrets.SPLITBENCH_API_KEY }}

Example output:

ℹ Analyzing 1,420 chunks across 38 markdown files...

✓ Context preservation score: 96.4% (Baseline: 94.0%)

✓ Header/footer noise ratio: 0.8% (Allowed: < 2.0%)

✓ SUCCESS: No chunk regressions detected. Build passing.

Your documents stay in your pipeline — SplitBench receives only aggregate metrics and diffs unless you explicitly enable hosted inspection.
01

Runs as a GitHub Action or CLI step

Designed to embed into your existing workflow in minutes. No major architectural changes required.

02

Fails the build if chunk quality drops

Automatically compares PR branches against your `main` baseline to catch boilerplate bleed or context fragmentation before merges.

03

No dashboard-checking required

It's a deterministic pass/fail gate just like your unit tests and linter — actionable in code review comments.

Built by an ML engineer who's shipped local LLM inference pipelines — for anyone building production RAG.

Join early engineers already on the list
Priority Early Access

Get early access before public launch

Join early engineers establishing deterministic chunking gates, catching regressions, and preventing silent retrieval failures.

🔒 No spam. We'll only contact you about SplitBench and the private beta.
Private beta participants may receive:
  • Help setting up one representative evaluation
  • A baseline report on a sample document collection
  • Direct feedback with the founder while the workflow is shaped
Frequently Asked Questions

Everything you need to know before joining

Clear positioning on how SplitBench fits alongside your existing stack, libraries, and eval workflows.