Voice RAG

Ask in Hindi or Gujarati, by voice or text. Every answer is retrieved from the corpus and cited, or declined.

Ask a question

Tap to record

Hindi and Gujarati are detected automatically.

How it works

Chunking and indexing happen once, offline. Everything below the dashed line runs per question, and is what the 200 ms budget measures.

RAG pipeline: offline indexing, then per-query retrieval and answering BUILT ONCE, OFFLINE MS MARCO-XI 5,000 rows per language Chunking fixed 512 chars, 64 overlap 109,082 chunks 99,772 passages Vector DB e5-small, 384-dim + BM25 sparse matrix 5 alternatives measured: semantic · metadata · recursive · parent_child · token_window PER QUESTION Voice or text script sets language Speech-to-text measured separately INSIDE THE 200 ms BUDGET Safety check before any search Retrieval dense cosine, top 50 BM25 lexical, top 50 weighted RRF fusion hi 0.95 · gu 0.50 Grounding check 4 features Answer extractive, cited Hallucination check overlap + numbers must match Declined no answer invented a question mixing scripts escalates to the embedder, which is multilingual Optional LLM rewrite 2 to 6 s · cached per question and passages · falls back to the answer above

Where it runs

BrowserHindi or Gujarati, voice or text
Vercelserves this page, proxies the API paths
CaddyHTTPS on the VM, Let's Encrypt
Docker · Oracle ARM2 dedicated cores, index and both models resident

The container is the same one that runs locally, so the pipeline above is identical in both places. Only the CPU differs, which is why live timings here sit above the benchmark figures below.

Measured results

Retrieval quality

-

hit@5

Latency

-

milliseconds

Guardrail

-

false abstain rate

Index size

-

chunks indexed