Skip to content
louay_amor~
2026client work

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

  1. 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.

  2. 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.

  3. 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