A production RAG repo layout: separating ingestion, retrieval, serving and evals
Our RAG prototype was one folder where the PDF loader, the vector client and the API route imported each other freely. Here is the layout we moved to: four packages with enforced boundaries, a shared contract module, versioned indexes and an eval gate in CI.