Enterprise Generative Search — Azure and Open Source · View 10 of 41 · Structure
Decisions
- Four namespaces — answer, retrieve, ingest, platform — with separate node pools and separate identities. The ingest plane's burst load must never take capacity from the query path.
- Embedding, reranking and verification run self-hosted on GPU because they are called on every query and their cost scales with traffic, not with tokens. Synthesis is managed because its quality requirement changes faster than we can chase it.
- No pod holds a source credential. Connectors use workload identity against Key Vault and exchange for a source token per run.
Numbers
- 64 application pods plus 12 GPU pods steady state; the ingest plane autoscales from 4 to 60 on queue depth.
- Azure AI Search at S3 with 12 partitions and 3 replicas holds the 320 M chunk index with headroom to about 500 M.
- PostgreSQL Flexible Server carries the ledger, the graph via Apache AGE, conversation state and Langfuse traces — four workloads, one operated service.
Assumptions and risks
- One PostgreSQL instance for four workloads is a deliberate consolidation for a platform of this size. It is the first thing to split if the ledger's write rate or the graph's read rate becomes the constraint.
- GPU capacity in the chosen region is assumed available for A10-class nodes; PTU capacity for Azure OpenAI is assumed reserved before go-live.