Skip to main content

RAG Architecture

Executive view

Fund architecture that names **owners and SLAs per stage**, not a single “AI platform” line. Challenge always-on complexity: multi-index, multi-hop and rewrite layers must earn their keep on labeled query classes.

Decision required: Which topology is the production default, what eval gap would force an upgrade, and what is the cost envelope per 1k successful answers?

Technical view

Draw the reference path with fusion, rerank k, assembly rules and fail-closed ACL. Separate offline ingest from online query path. Measure precision/recall and p95 by intent class before adding hops or indexes.

Prefer parent-child and query routing over premature GraphRAG; escalate to graph only when relationship recall stays broken after deep vector patterns.

Why this matters

Topic 13 teaches the RAG contract: authorised evidence, citations, ACL, eval. Deep architecture answers the partner question: how is the system put together so that contract holds at scale? Teams that skip this step ship a flat vector index, enable every retrieval trick in a framework tutorial, and discover in UAT that p95 is 4.2s, cross-BU leakage exists, and multi-hop questions still fail.

Architecture debt in RAG shows up as: one index for every corpus so product SKUs drown policy text; no parent-child so citations point at orphan sentences; rewrite without logging so faithfulness drifts after a prompt change; rerank on every FAQ hit so contact-centre SLAs break; ACL as a UI filter after generation; full re-embed every content tweak because delta ingest was never designed.

The AI Solution Engineer produces a reference architecture with stage owners, an index topology ADR, a query-path matrix by intent class, a context assembly contract, an online/offline eval plan, and a decision matrix that stops re-litigating “should we add HyDE?” every sprint. Weak designs look clever in notebooks. Strong designs survive FinOps, CISO ACL suites and on-call reindex incidents.

Connect to Retrieval-Augmented Generation for the baseline pipeline, Graph RAG Architecture when relationships dominate, RAG playbook for workshops, and Architecture Layer 6 for platform placement.

13.1 RAG architecture flowchart

Preview fits the page width — use the expand icon for the full flowchart.

Learn

RAG architecture types — where Agentic RAG sits

Architecture ladder (choose with evidence, not slogans):

Naive → Advanced → Modular → Agentic → Graph (13.2)

RAG architecture type ladder

Preview fits the page width — use the expand icon for the full flowchart.

Do not jump to agents. Each step adds cost and failure surface.

TypeHow it worksUse whenAvoid when
Naive RAGEmbed query → top-k vector chunks → generateTiny FAQ pilotsEnterprise ACL, IDs, multi-hop
Advanced RAGQuery rewrite, hybrid BM25+vector, rerank, metadata filters, parent-childDefault enterprise grounded QAYou have not measured a naive baseline
Modular RAGComposable modules + intent router (lookup / compare / refuse / tool)Multi-domain corpora, mixed intentsSingle homogeneous FAQ
Agentic RAGAgent decides when/how to retrieve, may loop, call tools, critiqueMulti-step research, mixed tools + corpusSimple lookup with tight p95 SLA
Graph RAGRelationship retrieve via graph (+ chunks)Multi-hop / connection questionsFlat FAQ; no curator — see 13.2

Decision rule: Stay on Advanced/Modular until eval proves a gap. Agentic RAG is not “better RAG”; it is a control loop around retrieval and tools (Agentic AI).

Agentic RAG types

Flow: classify complexity → pick path (FAQ / Advanced RAG / single-agent / multi-agent) → plan → retrieve or tool → critique → budgets/HITL → cited answer or refuse.

Agentic patternBehaviourEnterprise fit
Single-agentOne agent with retrieve + optional tools; ReAct-style loopDefault when agentic is justified
Multi-agentPlanner / retriever / critic (sometimes writer)Only if single-agent eval fails; high ops cost
Corrective / self-RAGAgent checks evidence; re-queries or refuses if weakHigh hallucination risk domains
AdaptiveClassifier picks no-retrieve / one-shot / multi-stepCost control at scale
Agentic + GraphAgent chooses vector vs graph expand vs toolRelationship + tool workloads — see 13.2

Hard bounds (non-negotiable):

  • Max retrieve rounds and tool calls (e.g. 2–3)
  • Token / £ budget per request
  • Tool allow-list; mutating tools behind HITL
  • Same ACL fail-closed as non-agentic RAG — agents must not bypass filters
  • Offline golden set for agentic paths (task completion, citation, loop/timeout cases)

When not agentic: FAQ, SKU lookup, policy extract with stable Advanced RAG gates. Agents add latency and opaque failure modes.

Reference architecture — stages, owners and SLAs

RAG architecture is a pipeline with two tempos: offline (ingest → index) and online (query → answer). Every stage needs an owner and a measurable SLA. Document each stage with owner, SLA and failure mode before sign-off.

StageWhat “done” meansTypical ownerExample SLA
Ingest / parseIdempotent job; provenance; OCR gatesData engineeringPolicy change searchable ≤24h
Chunk / metadataStructure preserved; ACL fields presentASE + corpus ownerSpot-check pass rate ≥98%
Index (dense + sparse)Versioned snapshot; rollback testedSearch platformIndex health green; rebuild window agreed
Query transformLogged; no factual injectionASERewrite A/B shows faithfulness Δ ≤1 pt
Retrieve + fuseHybrid tuned on labeled setSearch + ASERecall@k gate by intent class
RerankOptional; latency budgetedASEp95 within tier budget
Context assemblyDedup, pack order, refuse thresholdASEEmpty/low evidence → structured refuse
Generate + citeCitation IDs match retrieved setASE + productCitation correctness gate
EvaluateOffline CI + online shadowEval ownerRelease blocked on gate fail

Worked example: A UK insurer servicing assistant targets p95 2.5s end-to-end. Budget: retrieve 200ms, fuse 20ms, rerank 400ms (top 40→8), assembly 30ms, LLM 1.6s, margin 250ms. Always-on cross-encoder on top-100 breaks the budget—architecture chooses top-40 or FAQ-tier skip-rerank.

Index topologies — flat, hierarchical, multi-index, hot/cold

Topology is an architecture decision, not a library default.

TopologyShapeUse whenAvoid when
Flat corpusOne chunk indexHomogeneous FAQ or single product lineMulti-domain enterprises
Parent-childSmall child for retrieve; parent for generateNeed precise cite + surrounding sectionCorpus already short cards
Hierarchical / summary indexSummaries retrieve → expand to childrenLong reports, annual filingsLatency-critical FAQ
Multi-index by domainSeparate indexes (policy, product, ops) + routerVocabulary clash across domainsTiny pilots (<5k docs)
Versioned / effective-datedCurrent primary + archiveRegulated superseded textStatic marketing copy
Hot / coldHot SSD/low-latency; cold cheaperHigh QPS head corpusUniform low traffic

Multi-index routing: Classify intent (rules + small classifier) → query one or two indexes → merge with score normalisation. Mis-routing is a first-class failure mode—golden set must include “wrong index” traps.

Versioning contract: Primary index holds is_current=true only. Archive index serves audit queries with explicit as_of parameter. Rerank boosts current. Eval includes “superseded clause trap” queries.

Pitfall: Creating five indexes without a router and unioning top-k from all—latency and noise explode. Prefer router precision over naive federation.

Index topology router

Preview fits the page width — use the expand icon for the full flowchart.

This diagram covers vector / hybrid index topologies only. Relationship-heavy queries that need a graph path belong in Graph RAG Architecture—not as another index branch here.

Router mistakes are a first-class failure mode—golden sets must include wrong-index traps.

Advanced retrieval patterns — earn each hop

Start from hybrid BM25 + dense + metadata filters (topic 13 default). Add patterns only when a labeled intent class shows a measurable gap.

Hybrid fusion

  • Score normalisation (min-max or RRF — reciprocal rank fusion)
  • Tunable weights per corpus (SKU-heavy → BM25 weight up)
  • Metadata pre-filter before expensive vector k (tenant, product, jurisdiction)

Multi-query and decomposition

  • Expand one user question into N sub-queries (glossary + cautious LLM)
  • Retrieve per sub-query; fuse; dedup by chunk_id
  • Guardrail: sub-queries must not invent entity IDs or policy numbers

HyDE-style rewrite

  • Generate a hypothetical answer passage, embed that for dense retrieve
  • High risk of drift; log every rewrite; A/B faithfulness
  • Prefer controlled glossary rewrite before open HyDE in regulated domains

Iterative / multi-hop retrieve-then-read

  • Round 1: retrieve seed evidence
  • Model extracts missing entities or follow-up questions
  • Round 2: retrieve with constraints; hard cap rounds (e.g. 2) and token budget
  • Stop on evidence sufficiency score or refuse

Tool-routed retrieval vs pure RAG

  • Account balances, live prices, ticket state → API tools, not corpus RAG
  • Architecture must route: RAG for documents; tools for systems of record
  • Mixing live facts into the vector index creates stale-truth incidents

Online RAG query sequence

Preview fits the page width — use the expand icon for the full flowchart.

When not to deepen: If hybrid + structure-aware chunking already hits recall/faithfulness gates, stop. Deep patterns are cost and failure surface.

Context assembly — packing, dedup, refuse

Retrieval quality is wasted if assembly dumps noise into the prompt.

Assembly contract (minimum):

  1. Dedup near-identical chunks (simhash / same parent section)
  2. Pack order — highest rerank first; optional lost-in-middle mitigation (critical chunks at start/end)
  3. Token budget — hard cap; drop lowest scores before truncating mid-chunk
  4. Citation locators — every included chunk carries source_id, section, page/span, version
  5. Refuse threshold — if top score < τ or zero candidates after ACL → structured refusal, no speculative generation
  6. Delimiter schema — consistent tags so the model cannot confuse instructions with evidence (Prompt and Context Engineering)

Pitfall: Passing top-20 “just in case” when the model only uses three—raises cost and hallucination from contradictory clauses. Prefer smaller, higher-precision packs after rerank.

Security and tenancy in the path

Deep architecture treats ACL as a retrieve-time invariant, not a display filter.

ControlRequirement
IdentitySSO groups / roles on every query
FilterMandatory allowed_groups / tenant / BU predicates in search
Fail closedIdentity service down → no retrieve
Forbidden suiteCI fails if any restricted chunk appears in top-k
ProvenanceOriginal URI + ingest hash for audit replay
TombstonesRetractions remove or mark unsearchable within SLA
PIIClassification at ingest; high-sensitivity corpora may be browse-only

Multi-tenant: Shared index with mandatory tenant_id or per-tenant indexes. Golden set includes cross-tenant leakage attempts. Second-BU onboarding without this design forces expensive reindex.

Worked example: Wealth platform shared a service account at ingest → all chunks ACL=internal. Architecture fix: per-document ACL from source permissions graph, forbidden suite of 40 cases, UI banner when results filtered. See negative cases in topic 13 for incident cost.

Runtime vs offline — delta ingest, re-embed, eval gates

ConcernOfflineOnline
Content changeDelta ingest by content_hashServe current snapshot only
Embedding model upgradeDual-write or blue/green indexCutover after offline eval pass
EvalGolden set in CI on PRsShadow traffic + faithfulness sampling
CostAmortise reindexCost per successful answer
IncidentRollback to prior index tagKill-switch / degrade (skip rerank, FAQ cache)

Re-embed strategy: Never silent full re-embed in production path. Stage new vectors; run offline gates; switch alias; keep previous snapshot for rollback.

Online gates: Latency burn, citation correctness sample, ACL canary queries, cost per 1k. Tie to MLOps, LLMOps and Observability runbooks.

Architecture decision matrix — simple vs deep

SignalStay on Advanced / Modular RAGEscalate
CorpusSingle domain, stableMulti-domain → modular router
QueriesLookup / FAQCompare / multi-hop → iterative or Graph (13.2)
Eval gapGates metRecall gap ≥10–15 pts on a class
LatencyBudget holds with rerankTiered paths; FAQ skip rerank
TenancySingle BUMulti-tenant / BU isolation
Autonomy needFixed pipeline enoughAgentic RAG with round/tool budgets
RelationshipsRareGraph RAG
Ops maturitySmall teamNamed corpus, search, eval owners

Use this matrix in ADRs. Default enterprise choice: Advanced/Modular hybrid + ACL fail closed. Escalate to Agentic or Graph only with evidence.

Caching in the deep RAG path

Caching is an architecture lever, not only a FinOps afterthought. Place caches deliberately so ACL and freshness cannot be bypassed.

Cache layerWhat to storeInvalidationRisk if wrong
EmbeddingQuery / chunk vectorsModel version changeStale similarity
RetrievalTop-k chunk IDs per normalised query + identityCorpus version / ACL changeACL leak if identity omitted from key
RerankReordered IDsSame as retrievalServing reordered restricted set
AnswerFinal grounded responseCorpus tag + prompt versionHallucinated “cached truth”

Rules: Cache keys must include tenant/BU + principal groups (or a hash of effective ACL). Prefer caching retrieval IDs over full answers for high-risk classes. See LLM Response Caching for RAG and Agents.

Observability and tracing for architecture reviews

RAG architecture without traces cannot be debugged in partner review. Minimum span set:

  1. route.intent — class + indexes selected
  2. query.transform — rewrite text + model/version
  3. retrieve.hybrid — k, filters, fusion weights
  4. rerank — in/out k, model, latency
  5. assemble — token count, dropped chunks, refuse flag
  6. generate — model, citation IDs emitted
  7. verify.citations — pass/fail

Correlate with corpus_snapshot_id and index_alias. Online faithfulness sampling without these spans becomes unactionable opinion.

Anti-patterns catalogue (architecture)

Anti-patternWhy it failsReplace with
One giant index for all BUsVocabulary clash + ACL complexityMulti-index or mandatory tenant filter
Rerank everythingp95 deathTiered paths
Prompt-only “multi-hop”Model invents linksBounded retrieve rounds or GraphRAG
Embed live CRM fieldsStale operational truthTool route
UI-only security trimPen-test failuresQuery-time predicates
Framework default chunk 512Boundary splits on exclusionsStructure-aware + eval
“We’ll tune in prod”No baselineOffline golden gates first

Engagement deliverable pack (what good looks like)

When ASE exits design phase, the pack should include:

  1. One-page reference architecture (offline/online)
  2. Topology ADR signed by search + security
  3. Intent-class matrix with owners
  4. Latency and cost worksheets
  5. Assembly + citation schema
  6. Forbidden ACL suite (sample attached)
  7. Offline golden set size and gates
  8. Online degrade/rollback runbooks
  9. Explicit GraphRAG adopt/defer (link or memo)

If any item is missing, the programme is still in prototype mode regardless of UI polish.

Frameworks and methods

CFRV for deep architecture

Extend corpus readiness into architecture readiness:

LetterAsk
C CorpusDomains, versions, OCR risk, owners
F FiltersACL, tenant, jurisdiction fields on every chunk
R RetrievalTopology, fusion, k, rewrite policy
V VerificationCitation check, refuse, offline/online gates

Intent-class query matrix

Intent classRetrieval pathGeneration style
LookupNarrow k, hybrid boost IDsShort extractive
CompareMulti-doc, optional second hopTable / structured JSON
ProceduralBoost how-to chunksNumbered steps + cites
Multi-hop documentIterative retrieve-then-readCap rounds; cite each hop
Relationship-heavyEscalate to GraphRAG evalSee graph companion
Out of scope / emptySkip or empty retrieveRefusal template
Live account dataTool route, not RAGNo corpus generation

Latency budget worksheet

Decompose p95 by stage; assign degrade path (skip rewrite → skip rerank → cached FAQ). Never treat average latency as the design target.

Real-world scenarios

Scenario A — Global bank: multi-index policy and product corpus

Context: 180k policy pages + 40k product sheets. Flat index: product SKU queries polluted by policy boilerplate; recall@8 for SKU class 48%. Contact-centre p95 target 3s.

Intervention:

  1. Split policy and product indexes; intent router (rules on SKU patterns + classifier fallback).
  2. Parent-child on policy sections; product sheets chunked by tariff table with SKU metadata.
  3. Hybrid fusion with higher BM25 weight on product index; rerank top 30→8 only on policy path; product FAQ tier skips rerank.
  4. Forbidden ACL suite + tenant filter for ring-fenced private-bank corpus.

Measurable outcomes:

  • SKU recall@8 48% → 93%
  • Policy faithfulness on golden 76% → 91%
  • p95 4.1s → 2.7s (FAQ tier 1.4s)
  • Cross-tenant leakage attempts 0/120 in pen test

Lesson: Topology and routing beat “bigger embedding model” for multi-domain clash.

Scenario B — Telecom: iterative retrieve for plan comparison

Context: Consumer plan comparison (“which plan is cheaper if I roam 12 days in EU?”). Single-shot hybrid retrieved one plan page; missed fair-usage clause in separate annex. Complaint rate on AI answers +18% QoQ.

Intervention:

  1. Intent class compare → force multi-query decomposition (price, fair usage, roaming).
  2. Max two retrieve rounds; assembly requires ≥1 chunk per sub-topic or refuse “incomplete evidence.”
  3. Citation verifier rejects answers that assert price without a locator on the price chunk.
  4. Offline golden set of 80 compare queries; CI gate on unsupported-claim rate.

Measurable outcomes:

  • Unsupported claim rate 14% → 3%
  • Compare-class faithfulness 69% → 90%
  • Average LLM tokens +22% but complaint-driven contacts −31%
  • Decision: defer GraphRAG—document multi-hop closed the gap

Lesson: Iterative retrieve-then-read can postpone graph complexity when relations are still textual annexes.

Scenario C — Public sector: hot/cold indexes for statutory guidance

Context: Central government department indexes current statutory guidance (hot) and 15 years of archived circulars (cold). Analysts occasionally need historical interpretation; citizens never should see withdrawn text in the primary assistant. Flat index mixed eras; superseded guidance cited in 11% of citizen-facing answers during soft launch.

Intervention:

  1. Hot indexis_current=true only; citizen and most staff paths.
  2. Cold archive index — opt-in as_of / research mode with watermarked UI (“historical — not in force”).
  3. Router blocks cold index for public channel; staff research role may federate with explicit flag.
  4. Rerank boost + metadata filter on effective_to null/open.
  5. Golden set: 40 “superseded trap” queries expecting current-only; 20 historical queries expecting archive + watermark.

Measurable outcomes:

  • Citizen-facing superseded citation rate 11% → 0.4%
  • Research-mode historical recall@10 72% → 90%
  • Hot index size −63% vs flat; p95 retrieve −35%
  • Comms pack for policy owners: “withdrawn ⇒ tombstone ≤2 hours”

Lesson: Versioned/hot-cold topology is a product and safety control, not only a storage optimisation.

Practice exercises

Primary exercise — RAG architecture one-pager (3 hours)

Brief: Mid-size insurer wants an adviser-facing assistant over underwriting guidelines (digital PDF) and product wordings (mixed Word + scanned schedules). Two BUs sharing a platform. Risk class: medium-high.

Tasks:

  1. Draw reference architecture (offline + online) with owners and SLAs.
  2. Choose index topology and justify in ≤1 page ADR.
  3. Fill intent-class matrix for lookup, compare, procedural, refuse, live-data.
  4. Specify hybrid + rerank parameters and a latency budget with degrade path.
  5. Define assembly contract including refuse threshold and citation fields.
  6. List 10 golden queries that would force multi-index or multi-hop if topology is wrong.

Acceptance criteria:

  • ACL and bu_id appear on the retrieve arrow, not after generation
  • At least one degrade path preserves SLA without silent quality loss
  • ADR states what evidence would trigger GraphRAG evaluation

Stretch exercise — Architecture review pack (full day)

Brief: Same insurer; leadership asks why not “agentic multi-hop GraphRAG platform.”

Tasks:

  1. Run decision matrix: simple hybrid vs deep patterns vs GraphRAG.
  2. Design blue/green re-embed cutover with offline gates.
  3. Write incident runbook: “p95 > SLA for 15 minutes” and “faithfulness −5 pts after ingest.”
  4. Produce FinOps model per 1k queries at two QPS levels.
  5. Facilitate a half-day review agenda (corpus, ACL, topology, golden set, CFRV).

Acceptance criteria:

  • GraphRAG adopt/defer is evidence-based, not preference
  • Rollback to prior index snapshot is testable
  • Review output is a signed one-pager, not “more research”

Questions you should be able to answer

  1. What is the default topology, and what eval gap upgrades it?
  2. Who owns each pipeline stage and what is the SLA?
  3. How are dense and sparse scores fused, and on which labeled set?
  4. When is rerank skipped, and what quality risk does that accept?
  5. How does the intent router choose indexes or tools?
  6. What is the context assembly refuse threshold?
  7. How is ACL/tenancy enforced at retrieve time?
  8. What is the delta ingest key (source_id + hash), and tombstone SLA?
  9. How do you cut over an embedding model upgrade safely?
  10. What online metrics trigger degrade vs rollback?
  11. Which query classes use iterative multi-hop, and what is the round cap?
  12. Why is this not GraphRAG yet—or why is it?
  13. Which RAG type is production default (Naive / Advanced / Modular / Agentic)—and why?
  14. If Agentic: which pattern (single / multi / corrective / adaptive), and what are the round and tool caps?
  15. What is cost per successful answer at target QPS?
  16. How do superseded documents stay out of primary retrieve?
  17. Where does RAG hand off to Agentic AI tool loops?

Negative cases — when RAG architecture fails

Failure modeSymptomPrevention
Complexity theatreEvery pattern on; gates flatDecision matrix + ADR
Agent by defaultSlow FAQ, opaque failuresAdaptive classifier; agent only on hard class
Unbounded agent loopCost/latency explosionRound, token, £ caps + kill-switch
Router blindnessWrong index every timeRouter golden set
Unbounded hopsLatency/cost explosionHard round and token caps
Rewrite driftFaithfulness drop after prompt tweakLog + A/B + CI
Assembly stuffingContradictory chunks in promptDedup + smaller pack
ACL after generateLeakage in pen testFilter in search query
Silent re-embedWeekend outage, no rollbackBlue/green + snapshot
Tool facts in indexStale balances in answersRoute live data to APIs
Average-latency designp95 breaches SLABudget worksheet on p95
Graph leapUnmaintained edgesExhaust deep vector patterns first

Case study: federation without routing. A manufacturer unioned top-20 from six indexes per query. p95 6.8s; faithfulness 62%. Router to two indexes + RRF restored p95 2.9s and faithfulness 88%.

Case study: HyDE in claims. Hypothetical-answer embeddings retrieved plausible but wrong clause families; citation correctness 71%. Replaced with glossary rewrite; correctness 93% on same set.

Operating-model notes

RoleDeep-RAG focusKPI
ASETopology ADR, assembly contract, intent matrixGates green on golden
Search platformIndex aliases, fusion infra, p95 retrieveRollback drill quarterly
Data engineeringDelta ingest, tombstonesFreshness SLA
SecurityForbidden suite, tenant testsZero leakage
Eval ownerOffline CI + online sampleGate breach → block
FinOpsCost per 1k / reindexWithin envelope

Workshop agenda (half day): topology options → latency budget → ACL path walkthrough → intent matrix → golden traps → ADR sign-off.

Capacity planning sketch

Architecture reviews ask whether the design holds at launch QPS. Answer with a transparent model:

ComponentDriversNotes
Embed (query)QPS × model latencyCache normalised queries
Sparse retrieveIndex size, filter selectivityTenant filters reduce fan-out
Dense retrievek, ANN parametersTrade recall vs latency
RerankCandidates × cross-encoderOften dominates after LLM
LLMPacked input + output tokensAssembly discipline caps input
IngestDocs/day × parse + embedSeparate pool from online path

State assumptions (concurrency, cache hit rate, rewrite rate). Revisit monthly with FinOps. Under-provisioned rerank is a common silent quality cut when autoscaling is LLM-only.

Migration path from pilot to deep topology

  1. Pilot — flat hybrid, one domain, SSO ACL, ≥50 golden queries
  2. Prove gap — intent classes failing recall or latency
  3. ADR — choose parent-child, multi-index, and/or iterative hops
  4. Shadow — dual-run new path on a traffic percentage; compare gates
  5. Cutover — index alias switch; keep prior snapshot for rollback
  6. Reassess GraphRAG — only if the relationship class still fails

Skipping step 2 produces complexity theatre. Skipping step 4 produces weekend incidents.

Hand-off to agents and tools

RAG architecture remains a retrieve–assemble–generate system. When the user needs multi-step side effects (create ticket, update CRM), hand off to Agentic AI and Workflow Automation with RAG as a read tool inside a bounded workflow—not an open agent with raw index access. Agents that bypass assembly contracts and ACL filters recreate every failure mode in this chapter.

Worked example — writing the topology ADR

Title: Multi-index routing for Policy vs Product corpora
Context: Single flat index; SKU recall@8 = 48%; p95 = 4.1s.
Decision: Split indexes; rules+classifier router; policy path keeps rerank; product FAQ skips rerank.
Rejected: Larger embedding model only (does not fix vocabulary clash); naive six-index federation (latency).
Upgrade trigger: Relationship-class recall gap >15 pts after this topology → open GraphRAG spike.
Rollback: Previous flat alias retained 14 days.
Owners: ASE (router), Search (aliases), Security (ACL suite).

Copy this shape on every topology change so debates stay evidence-based.

Checklist before calling the architecture “deep”

  • Offline and online paths drawn with owners
  • At least one labeled class justifies each non-default pattern
  • p95 budget with degrade path documented
  • ACL/tenancy on retrieve predicates tested
  • Assembly refuse threshold numeric
  • Corpus snapshot IDs in traces
  • GraphRAG explicitly adopted, deferred, or spiked—with date

If three or more boxes are unchecked, you still have a pilot with optional complexity—not a deep RAG architecture.

Practice checklist

  • I separated offline ingest from online query path with owners
  • I justified topology with an ADR, not a framework default
  • I defined fusion, k values and when rerank is skipped
  • I documented assembly refuse threshold and citation locators
  • I enforced ACL/tenancy on the retrieve path with forbidden tests
  • I specified delta ingest, tombstone and re-embed cutover
  • I filled the simple vs deep vs GraphRAG decision matrix with evidence
  • I linked design to Retrieval-Augmented Generation and RAG playbook

Discussion

Comments

Share feedback or questions about this page. No account required.

Loading comments…