Ship and recap
You have taken a baseline RAG pipeline and added query rewriting, sub-graph decomposition, PII scrubbing, RAGAS scoring, an offline eval harness, and live streaming. Every piece is isolated, testable, and swappable. That is the shape of a system you can actually maintain.
The full pipeline
Every box is a LangGraph node or a compiled sub-graph. Every arrow is a state transition.
Ordering exercise: Put the full request flow in order
Loading practice…
A few high-impact upgrades. Swap the child graph for a hybrid retriever that combines dense and sparse search, since that usually improves context precision without any prompt changes. Add a reranker between retrieval and synthesis to re-order chunks by cross-encoder relevance. And instrument the pipeline with Phoenix or Langfuse so every production request is traced, scored, and inspectable. Each of those is a one-node or one-integration change now that your graph is properly composed.
Checkpoint: Final checkpoint
Loading practice…