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…