Reasona RAG
I build RAG pipelines where reranking tracking and telemetry come firstEverything is explainable and measured
problem
The challenge: RAG systems must retrieve the right data not just sound confident
I make sure every answer can be traced and tested
- Built streaming RAG with FAISS retrieval
- Added reranking before generation for quality
- MLflow tracks every experiment for ID and recall
- Monitoring built in from the start
pipeline
decisions
Add cross-encoder reranking on top of dense FAISS retrieval.
tradeoffHigher serving latency per query and a second model to host.
outcomeNarrow, high-precision chunks reach the generator and reduce hallucination pressure on surface facts.
Treat index, inference, and evaluation as separate, idempotent exports.
tradeoffMore CLI surface than a single monolithic script.
outcomeAn index or a prompt change lands as its own step, whose artifacts can be compared against each other.
Register every reminder, generation run, evaluation table, and prompt actually used.
tradeoffTracking ceremony before serving.
outcomeA degraded answer traces to its generation session, which is the only way to debug RAG more than once.
results
- retrieval
- reranked
- FAISS dense → cross-encode
- serving
- streaming
- token-level output
- governance
- MLflow
- index, prompt, eval per run
stack
Retrieval
- FAISS
- sentence-transformers
- cross-encoder
Generation
- Mistral-7B
- LangChain
- streaming
MLOps
- MLflow
- evaluation table runs
Serving
- Flask
- Python