Verified sparse-first RAG & research

EvidenceFlow

A LangGraph-based RAG and research system designed around evidence rather than raw model confidence. Its retrieval architecture is sparse-first and does not depend on dense-vector search: OpenSearch inverted-index retrieval provides BM25, exact, phrase, fuzzy, and metadata-aware matching, with neural-sparse retrieval available as an additional semantic signal. Retrieval candidates can be fused with reciprocal-rank fusion and reranked with a Jina cross-encoder before evidence-grounded synthesis and citation verification.

Project story

01

Situation

RAG systems can retrieve plausible text and still produce answers that are unsupported, overconfident, or weakly cited.

02

Task

Build a research assistant where retrieval, evidence collection, citation verification, and answer policy are explicit parts of the system.

03

Action

  • Built the retrieval foundation around OpenSearch's inverted index and BM25, supporting exact, phrase, fuzzy, and metadata-aware lexical retrieval without requiring dense-vector k-NN.
  • Added optional neural-sparse retrieval as an additional semantic signal while keeping the core retrieval path vectorless.
  • Combined independently ranked retrieval candidates with reciprocal-rank fusion and Jina cross-encoder reranking.
  • Added adaptive query recovery for weak first-pass retrieval and maintained a turn-scoped evidence registry through the LangGraph workflow.
  • Verified citations and claim support against the actual evidence set and fail closed when sufficient support cannot be established.
04

Result

  • Created a RAG architecture that remains useful without a dense-vector database while still supporting an additional neural-sparse semantic retrieval signal.
  • Made retrieval strategy, evidence provenance, citations, conflicts, and failure states inspectable rather than relying on model confidence.
Interactive demo · BYOK

Try EvidenceFlow live

Bring your own provider key to create a short-lived session for this project. The portfolio does not store the credential.

Used once to create the temporary portfolio session. It is not stored by the portfolio.
One session · reusable across project pages · provider key never stored
← Back to projects