# RAG Maturity Model — Progressiv modenhetsmodell for Microsoft AI

**Last updated:** 2026-02
**Status:** Reference Architecture
**Category:** RAG Architecture & Decision Framework

---

## Introduksjon

RAG (Retrieval-Augmented Generation) er ikke én teknikk, men et spektrum av arkitekturer med økende sofistikering. Organisasjoner som starter med enkel vektorsøk kan gradvis utvide til avanserte mønstre som agentic RAG, multimodal retrieval og selvreflekterende systemer — uten å måtte bygge om fra scratch.

Denne modenhetsmodellen definerer 11 nivåer som representerer en progressiv stige fra basic RAG til enterprise-grade kunnskapssystemer. Hvert nivå bygger på foregående og kan implementeres inkrementelt med Microsoft AI-tjenester. Modellen er basert på Ottomator-rammeverkets 11 strategier, organisert som en logisk progresjon med konkrete Microsoft-implementeringer.

**Nøkkelprinsipp:** Start på nivå 1-3, mål kvaliteten, og avanser kun når det er beviselig behov. Over-engineering er en vanligere feil enn under-engineering.

---

## Modenhetsmodellen

### Nivå 1: Naive RAG (Grunnleggende)

**Beskrivelse:** Enkel retrieve-then-generate pipeline. Dokumenter chunkes, embeddes og søkes med vektorsøk. Ingen pre- eller post-processing.

| Aspekt | Detaljer |
|--------|---------|
| **Flyt** | Embed query → Vector search → Top-K chunks → LLM prompt → Svar |
| **Microsoft-tjenester** | Azure AI Search (Basic tier), Azure OpenAI (text-embedding-3-small, GPT-4o) |
| **Kompleksitet** | Lav — kan settes opp på én dag |
| **Kostnad** | ~1 000-2 000 NOK/mnd (Basic Search + PAYG OpenAI) |
| **Typisk presisjon** | 50-65% recall@5 |

**Når tilstrekkelig:** MVP, proof-of-concept, intern FAQ med <1 000 dokumenter.

**Begrensninger:** Ingen reranking, ingen query-forståelse, chunks mister kontekst.

---

### Nivå 2: Reranking (Kvalitetssikring av resultater)

**Beskrivelse:** Legger til et reranking-steg etter initial retrieval for å sortere resultater etter semantisk relevans, ikke bare vektorsimilaritet.

| Aspekt | Detaljer |
|--------|---------|
| **Flyt** | Embed query → Vector search → Top-K → Semantic Ranker → Reranked top-N → LLM |
| **Microsoft-tjenester** | Azure AI Search Semantic Ranker (Standard tier+), Azure OpenAI |
| **Kompleksitet** | Lav-medium — én konfigurasjon i søkeindeks |
| **Kostnad** | +500-1 000 NOK/mnd (Standard tier krev) |
| **Typisk forbedring** | +10-25% precision over nivå 1 |

**Nøkkeltjeneste:** Azure AI Search Semantic Ranker — cross-encoder modell som re-evaluerer query-dokument-par.

**Implementering:**
```json
{
  "search": "Hvordan integrere AI Builder med Power Automate?",
  "vectorQueries": [{"vector": [...], "k": 50, "fields": "contentVector"}],
  "queryType": "semantic",
  "semanticConfiguration": "my-semantic-config",
  "top": 5
}
```

**Eksisterende skill:** `semantic-ranker-reranking.md` (komplett dekning)

---

### Nivå 3: Query Understanding (Spørringsoptimalisering)

**Beskrivelse:** Transformerer brukerens spørsmål til optimaliserte søkespørringer gjennom rewriting, expansion og intent classification.

| Aspekt | Detaljer |
|--------|---------|
| **Teknikker** | Query rewriting, expansion, decomposition, HyDE, filter extraction |
| **Microsoft-tjenester** | Azure OpenAI (GPT-4o-mini for rewriting), Azure AI Search (synonym maps, fuzzy search) |
| **Kompleksitet** | Medium |
| **Kostnad** | +200-500 tokens per query (~2-6 NOK/1000 queries) |
| **Typisk forbedring** | +15-30% precision over nivå 2 |

**Eksisterende skill:** `rag-query-understanding.md` (komplett + multi-query RAG-utvidelse)

---

### Nivå 4: Context-Aware Chunking (Intelligent oppdeling)

**Beskrivelse:** Erstatter fast chunk-størrelse med dokumentstruktur-bevisst chunking som bevarer semantiske enheter.

| Aspekt | Detaljer |
|--------|---------|
| **Teknikker** | Document Layout chunking, semantisk chunking, struktur-basert splitting |
| **Microsoft-tjenester** | Azure AI Document Intelligence (Layout skill), Azure Content Understanding |
| **Kompleksitet** | Medium |
| **Kostnad** | +0,01-0,05 NOK/side (Document Intelligence) |
| **Typisk forbedring** | +10-20% retrieval-kvalitet for strukturerte dokumenter |

**Eksisterende skill:** `chunking-strategies.md` (komplett + context-aware-utvidelse)

---

### Nivå 5: Contextual Retrieval (Kontekstuell berikelse)

**Beskrivelse:** Beriker hver chunk med dokumentnivå-kontekst før embedding, slik at isolerte chunks beholder informasjon om hvor de hører hjemme.

| Aspekt | Detaljer |
|--------|---------|
| **Teknikk** | Prepend kontekst (dokument-tittel, seksjon, sammendrag) til hver chunk før embedding |
| **Microsoft-tjenester** | Azure OpenAI (kontekstgenerering), Azure AI Search (custom skill for prepending) |
| **Kompleksitet** | Medium-høy |
| **Kostnad** | +100-500 tokens per chunk (én gang ved indeksering) |
| **Typisk forbedring** | 35-49% reduksjon i retrieval failures (Anthropic research) |

**Ny skill:** `contextual-retrieval.md`

---

### Nivå 6: Multi-Query RAG (Parallell spørringsutvidelse)

**Beskrivelse:** Genererer multiple varianter av brukerens spørsmål, kjører parallelle søk, og fusjonerer resultater med deduplisering.

| Aspekt | Detaljer |
|--------|---------|
| **Teknikk** | LLM genererer 3-5 query-varianter → parallelle søk → Reciprocal Rank Fusion |
| **Microsoft-tjenester** | Azure OpenAI (query-generering), Azure AI Search (parallelle queries) |
| **Kompleksitet** | Medium |
| **Kostnad** | 3-5x søkekostnad per query |
| **Typisk forbedring** | +10-20% recall (bredere dekning) |

**Utvidelse i:** `rag-query-understanding.md` (multi-query RAG-seksjon)

---

### Nivå 7: Hierarchical RAG (Multi-nivå retrieval)

**Beskrivelse:** Organiserer kunnskap i hierarkiske nivåer — sammendrag → seksjoner → chunks — og søker fra grovt til fint.

| Aspekt | Detaljer |
|--------|---------|
| **Teknikk** | Parent-child indekser, summary → section → chunk cascading |
| **Microsoft-tjenester** | Azure AI Search (index projections, parent-child), Azure OpenAI (summary-generering) |
| **Kompleksitet** | Høy |
| **Kostnad** | +50-100% lagring (multiple representasjoner) |
| **Typisk forbedring** | Opptil 47% høyere Hit@1, vesentlig token-reduksjon |

**Ny skill:** `hierarchical-rag-patterns.md`

---

### Nivå 8: Fine-tuned Embeddings (Domenespesifikk tuning)

**Beskrivelse:** Tilpasser embedding-modeller til domenespesifikk terminologi for bedre semantisk matching.

| Aspekt | Detaljer |
|--------|---------|
| **Teknikk** | Fine-tuning av embedding-modeller med domene-spesifikke treningspar |
| **Microsoft-tjenester** | Azure AI Foundry (fine-tuning), Azure OpenAI (text-embedding-3-large med custom tuning) |
| **Kompleksitet** | Høy — krever treningsdata og evalueringsrammeverk |
| **Kostnad** | Variabel (fine-tuning compute + evaluering) |
| **Typisk forbedring** | +15-30% retrieval-kvalitet i spesialiserte domener |

**Utvidelse i:** `embedding-models-selection.md` (fine-tuning-seksjon)

---

### Nivå 9: Knowledge Graphs + RAG (GraphRAG)

**Beskrivelse:** Kombinerer vektorsøk med kunnskapsgrafer for relasjonell reasoning og multi-hop spørsmål.

| Aspekt | Detaljer |
|--------|---------|
| **Teknikk** | Entity extraction → Graph construction → Graph + Vector hybrid search |
| **Microsoft-tjenester** | Microsoft GraphRAG (open-source), Azure Cosmos DB (Gremlin API), Azure AI Search |
| **Kompleksitet** | Svært høy |
| **Kostnad** | Betydelig (graph storage + LLM-basert entity extraction) |
| **Typisk forbedring** | +40-70% for relasjonelle spørsmål (hvem-hva-hvordan) |

**Eksisterende skill:** `graphrag-knowledge-graphs.md` (komplett dekning)

---

### Nivå 10: Agentic RAG (Agent-styrt retrieval)

**Beskrivelse:** Agenter som autonomt planlegger retrieval-strategi, velger verktøy og itererer basert på mellomresultater.

| Aspekt | Detaljer |
|--------|---------|
| **Teknikk** | LLM-agent med retrieval-verktøy, router-mønster, multi-backend søk |
| **Microsoft-tjenester** | Microsoft Agent Framework, Semantic Kernel (VectorStore bridge), Azure AI Foundry Agent Service |
| **Kompleksitet** | Svært høy |
| **Kostnad** | 5-20x enkelt søk (multiple LLM-kall per query) |
| **Typisk forbedring** | +30-50% for komplekse, multi-step spørsmål |

**Ny skill:** `agentic-rag-patterns.md`

---

### Nivå 11: Self-Reflective RAG (Selvevaluerende systemer)

**Beskrivelse:** Agenter som evaluerer kvaliteten på egne retrieval-resultater og iterativt forbedrer ved behov (CRAG/Self-RAG).

| Aspekt | Detaljer |
|--------|---------|
| **Teknikk** | Confidence scoring → evaluering → re-retrieval/re-generation loop |
| **Microsoft-tjenester** | Azure AI Foundry Evaluators (Groundedness, Relevance, Retrieval), Semantic Kernel |
| **Kompleksitet** | Svært høy |
| **Kostnad** | 10-30x enkelt søk (evaluering + re-retrieval loops) |
| **Typisk forbedring** | +20-40% groundedness, vesentlig reduksjon i hallusinasjoner |

**Ny skill:** `self-reflective-rag.md`

---

## Decision Tree: Hvilket nivå trenger du?

```
START
│
├─ Har du < 1000 dokumenter og enkle spørsmål?
│  → Nivå 1-2 (Naive RAG + Reranking)
│
├─ Har brukerne multi-turn samtaler eller vage spørsmål?
│  → Nivå 3 (Query Understanding)
│
├─ Er dokumentene strukturerte (PDF-rapporter, regelverk)?
│  → Nivå 4 (Context-Aware Chunking)
│
├─ Mister chunks viktig kontekst (anaforer, implisitte referanser)?
│  → Nivå 5 (Contextual Retrieval)
│
├─ Har brukerne komplekse sammenligningsspørsmål?
│  → Nivå 6 (Multi-Query RAG)
│
├─ Trenger du søk på ulike granularitetsnivåer?
│  → Nivå 7 (Hierarchical RAG)
│
├─ Har du domenespesifikk terminologi som feiltolkes?
│  → Nivå 8 (Fine-tuned Embeddings)
│
├─ Trenger du relasjonell reasoning (hvem jobber med hvem)?
│  → Nivå 9 (Knowledge Graphs)
│
├─ Krever spørsmålene multiple retrieval-strategier?
│  → Nivå 10 (Agentic RAG)
│
└─ Trenger du garantert kvalitet med self-correction?
   → Nivå 11 (Self-Reflective RAG)
```

---

## Sammendragstabell

| Nivå | Strategi | Microsoft-tjenester | Kompleksitet | Ekstra kostnad | Presisjonsforbedring |
|------|----------|---------------------|-------------|----------------|---------------------|
| 1 | Naive RAG | AI Search Basic, OpenAI | Lav | Baseline | Baseline |
| 2 | Reranking | AI Search Semantic Ranker | Lav | +500 NOK/mnd | +10-25% |
| 3 | Query Understanding | OpenAI (rewriting) | Medium | +2-6 NOK/1K queries | +15-30% |
| 4 | Context-Aware Chunking | Document Intelligence | Medium | +0,01-0,05/side | +10-20% |
| 5 | Contextual Retrieval | OpenAI (context gen) | Medium-høy | +100-500 tokens/chunk | +35-49% |
| 6 | Multi-Query RAG | OpenAI (multi-query) | Medium | 3-5x søkekost | +10-20% recall |
| 7 | Hierarchical RAG | AI Search (projections) | Høy | +50-100% lagring | +47% Hit@1 |
| 8 | Fine-tuned Embeddings | AI Foundry | Høy | Variabel | +15-30% domene |
| 9 | Knowledge Graphs | GraphRAG, Cosmos DB | Svært høy | Betydelig | +40-70% relasjon |
| 10 | Agentic RAG | Agent Framework, SK | Svært høy | 5-20x per query | +30-50% kompleks |
| 11 | Self-Reflective RAG | Foundry Evaluators | Svært høy | 10-30x per query | +20-40% groundedness |

---

## Migrasjonssti mellom nivåer

### Nivå 1→2: Legg til Semantic Ranker
- **Krav:** Oppgrader Azure AI Search til Standard tier
- **Endring:** Legg til `semanticConfiguration` og `queryType: semantic`
- **Risiko:** Lav — bakoverkompatibel

### Nivå 2→3: Legg til Query Rewriting
- **Krav:** GPT-4o-mini deployment for rewriting
- **Endring:** Legg til pre-processing steg før søk
- **Risiko:** Lav — original query kan beholdes som fallback

### Nivå 3→4: Oppgrader chunking
- **Krav:** Azure AI Document Intelligence, re-indeksering
- **Endring:** Bytt fra Text Split til Document Layout skill
- **Risiko:** Medium — krever full re-indeksering

### Nivå 4→5: Legg til kontekstuell berikelse
- **Krav:** Custom skill (Azure Functions) + re-indeksering
- **Endring:** Prepend kontekst til chunks i indekseringspipeline
- **Risiko:** Medium — øker indekseringstid og token-kostnad

### Nivå 5→6: Legg til multi-query
- **Krav:** Minimal — kun kode-endring i query-pipeline
- **Endring:** Parallelle søk med fusion
- **Risiko:** Lav — øker latency med 2-3x

### Nivå 6→7: Legg til hierarkisk indeks
- **Krav:** Ny indeksstruktur med index projections
- **Endring:** Parent-child relasjoner, summary-generering
- **Risiko:** Høy — ny arkitektur, kompleks indekshåndtering

### Nivå 7→8: Fine-tune embeddings
- **Krav:** Treningsdata (query-dokument-par), Azure AI Foundry
- **Endring:** Custom embedding-modell, full re-indeksering
- **Risiko:** Høy — krever ML-kompetanse

### Nivå 8→9: Legg til Knowledge Graph
- **Krav:** Azure Cosmos DB, GraphRAG toolkit, entity extraction
- **Endring:** Parallell graph-pipeline ved siden av vektor-pipeline
- **Risiko:** Svært høy — ny infrastruktur og datapipeline

### Nivå 9→10: Agentic orchestration
- **Krav:** Semantic Kernel / Agent Framework, tool definitions
- **Endring:** Agent wrapper rundt retrieval-pipeline
- **Risiko:** Høy — ikke-deterministisk oppførsel, debugging-utfordringer

### Nivå 10→11: Self-reflection loop
- **Krav:** Azure AI Foundry Evaluators, confidence thresholds
- **Endring:** Evaluerings- og re-retrieval loop
- **Risiko:** Høy — øker latency vesentlig, krever tydelige kvalitetsgrenser

---

## Offentlig sektor (Norge) — Anbefalinger

### Anbefalt utgangspunkt per virksomhetstype

| Virksomhet | Anbefalt startnivå | Typisk mål-nivå | Begrunnelse |
|------------|-------------------|-----------------|-------------|
| Kommuner (liten/mellom) | 1-2 | 3-4 | Begrenset kompetanse, moderate volumer |
| Statlige etater | 2-3 | 5-7 | Strukturerte dokumenter, compliance-krav |
| Helsesektoren | 3-4 | 7-8 | Domenespesifikk terminologi, høye krav til presisjon |
| Forsvarssektoren | 4-5 | 8-11 | Gradert informasjon, relasjonelle spørsmål |
| Justissektoren | 3-4 | 7-9 | Juridisk terminologi, relasjonell reasoning |

### Compliance-hensyn per nivå

| Nivå | GDPR | AI Act | Forvaltningsloven | Schrems II |
|------|------|--------|-------------------|------------|
| 1-3 | Standard DPA | Lav risiko | Minimal logging | EU-regioner OK |
| 4-6 | PII i chunks | Dokumentasjonskrav | Kildehenvisning påkrevd | EU-regioner OK |
| 7-9 | Utvidet DPIA | Transparenskrav | Full audit trail | Vurder Norway East |
| 10-11 | Full DPIA | Høyrisiko-kategori mulig | Forklarbarhet påkrevd | Norway East anbefalt |

---

## Kostnad/kompleksitet-diagram

```
Kostnad (NOK/mnd)
│
│                                                    ● 11 Self-Reflective
│                                               ● 10 Agentic
│                                          ● 9 GraphRAG
│                                     ● 8 Fine-tuned
│                                ● 7 Hierarchical
│                           ● 6 Multi-Query
│                      ● 5 Contextual
│                 ● 4 Context-Aware
│            ● 3 Query Understanding
│       ● 2 Reranking
│  ● 1 Naive
└─────────────────────────────────────────────────── Kompleksitet
  Lav                Medium              Høy            Svært høy
```

---

## Tilleggsmønstre (ortogonale)

Disse mønstrene kan kombineres med ethvert nivå og er ikke del av den lineære progresjonen:

| Mønster | Beskrivelse | Når bruke | Skill |
|---------|-------------|-----------|-------|
| **Multimodal RAG** | Bilder, tabeller, diagrammer i pipeline | Dokumenter med visuelt innhold | `multimodal-rag.md` |
| **Late Chunking** | Chunk etter embedding for kontekstbevaring | Long-context embedding-modeller tilgjengelig | `late-chunking-patterns.md` |
| **Streaming RAG** | Strømming av svar under generering | Lav-latency krav | `streaming-rag-responses.md` |
| **RBAC RAG** | Sikkerhetstrimming av resultater | Multi-tenant, klassifisert innhold | `rag-security-rbac.md` |
| **Citation Tracking** | Kildehenvisning i svar | Compliance, etterprøvbarhet | `citation-tracking.md` |

---

## For arkitekten (Cosmo)

### Spørsmål for å plassere kunden på riktig nivå

1. **"Hva er den viktigste svakheten med dagens søk/RAG?"**
   - Dårlig presisjon → Nivå 2-3
   - Mister kontekst → Nivå 4-5
   - For smalt søk → Nivå 6
   - Trenger relasjonell info → Nivå 9

2. **"Hvor mange dokumenter skal indekseres?"**
   - <1 000 → Nivå 1-3 tilstrekkelig
   - 1 000-100 000 → Nivå 3-7
   - >100 000 → Nivå 4-8

3. **"Hva slags spørsmål stiller brukerne?"**
   - Enkle lookup → Nivå 1-3
   - Sammenligninger → Nivå 6-7
   - Multi-step reasoning → Nivå 9-11

4. **"Hva er budsjettrammen?"**
   - Pilot (<5 000 NOK/mnd) → Nivå 1-4
   - Produksjon (5 000-20 000 NOK/mnd) → Nivå 3-7
   - Enterprise (>20 000 NOK/mnd) → Nivå 5-11

5. **"Hvilken kompetanse har teamet?"**
   - Citizen developers → Nivå 1-3 (Copilot Studio)
   - Utviklere → Nivå 1-8
   - ML-ingeniører → Nivå 1-11

### Fallgruver

- **Over-engineering:** "Vi trenger agentic RAG" — nei, 80% av organisasjoner klarer seg med nivå 1-4
- **Hoppe over nivåer:** Nivå 9 uten nivå 2-3 gir dårligere resultater enn nivå 3 alene
- **Ingen baseline:** Alltid mål kvalitet på nåværende nivå før oppgradering
- **Kostnadsblindhet:** Nivå 10-11 koster 10-30x per query — beregn ROI først
- **Compliance-ignorering:** Nivå 7+ i offentlig sektor krever DPIA og arkitekturdokumentasjon

### Neste steg for ulike scenarioer

| Kunden sier | Anbefalt handling |
|-------------|-------------------|
| "Vi har ingen RAG i dag" | Start nivå 1-2, evaluer med 50 testspørringer |
| "Vi har basic RAG, hva er neste steg?" | Mål baseline, legg til reranking (nivå 2) og query rewriting (nivå 3) |
| "Retrieval-kvaliteten er for dårlig" | Evaluer chunking (nivå 4), contextual retrieval (nivå 5), og embeddings (nivå 8) |
| "Vi trenger RAG over bilder og tabeller" | Multimodal RAG (ortogonalt mønster) |
| "Vi har compliance-krav" | Nivå 4+ med citation tracking, RBAC, og audit logging |

---

## Kilder og verifisering

| Kilde | Konfidens | Område |
|-------|-----------|--------|
| Azure AI Search RAG overview | **Verified** | Nivå 1-4 tjenester og priser |
| Azure AI Search Semantic Ranker | **Verified** | Nivå 2 reranking |
| Azure AI Foundry evaluators | **Verified** | Nivå 11 evaluering |
| Azure AI Foundry Agent Service | **Verified** | Nivå 10 agentic RAG |
| Microsoft GraphRAG (GitHub) | **Verified** | Nivå 9 knowledge graphs |
| Anthropic Contextual Retrieval research | **Baseline** | Nivå 5 forbedringsprosenter |
| Jina AI Late Chunking research | **Baseline** | Late chunking konsept |
| Ottomator 11 RAG Strategies | **Baseline** | Overordnet rammeverk |
| RAG Maturity Model (Ombrulla) | **Baseline** | Modenhetsmodell-konsept |
| Azure-priser | **Verified** | Konvertert NOK med kurs ~10.5 |

---

**For Cosmo:** Bruk denne modellen som standard rammeverk når kunder spør om "RAG-strategi" eller "hva er neste steg for vår RAG-løsning". Start alltid med å plassere kunden på riktig nivå gjennom spørsmålene over, deretter anbefal neste 1-2 nivåer. Aldri anbefal nivå 9-11 som første steg.
