Verifisert mot offisiell MS-doc (juni 2026): «Microsoft Foundry» er det gjeldende produkt-/portalnavnet; «Foundry (classic)» = gamle «Azure AI Foundry» (/azure/foundry/ vs /azure/foundry-classic/). Premiss bekreftet før sveip. Multi-regel, IKKE naiv s/Azure AI Foundry/Microsoft Foundry/ — MS dropper «Azure AI» (legger IKKE til «Microsoft») for to produktvarianter: - «Azure AI Foundry Agent[ Service|s]» → «Foundry Agent Service/Agents» (MS-form) - «Azure AI Foundry Models» → «Foundry Models» (i «Azure OpenAI in Foundry Models») - «Azure AI Foundry SDK» → «Microsoft Foundry SDK» (operatør-valg) - «Azure AI Foundry portal/project» + generisk → «Microsoft Foundry» - Pre-eksisterende «Microsoft Foundry Models» (4) normalisert → «Foundry Models» Bevart: «Azure OpenAI», «Azure AI Inference SDK», «Azure AI Search», «Azure AI Services», kode-IDer. Historisk ref «(tidligere Azure AI Foundry)» i model-catalog-2026.md beskyttet via lookbehind. URL /azure/ai-foundry/→ /azure/foundry/ kun i owasp-llm-top10 (KB-ref); docs/-filer deferred. Scope: skills (inkl. 3 SKILL.md) + commands + agents + README + CLAUDE. Ekskludert: docs/ (interne), playground/+tests/ fixtures (testdata), CHANGELOG.md (historisk logg), STATE.md (gitignored). 3 SKILL.md endret (advisor/engineering/security) → judge-cache teknisk invalidert for disse, men scorer uendret: advisor 91, eng/gov/infra/sec 96 (alle ≥90). validate 239/0. 0 «Azure AI Foundry» igjen (utenom bevart ref). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
520 lines
No EOL
23 KiB
Markdown
520 lines
No EOL
23 KiB
Markdown
# Grounding and Knowledge Injection Techniques
|
||
|
||
**Last updated:** 2026-02
|
||
**Status:** GA
|
||
**Category:** Prompt Engineering & LLM Optimization
|
||
|
||
---
|
||
|
||
## Introduksjon
|
||
|
||
Grounding og knowledge injection er fundamentale teknikker for å sikre at store språkmodeller (LLMs) genererer nøyaktige, faktabaserte og troverdige svar. Uten grounding vil en LLM kun stole på sin treningskunnskap, som har en cutoff-dato og ikke inkluderer proprietær eller domene-spesifikk informasjon. Dette fører ofte til "hallucinations" – påstander som høres troverdige ut, men som er feilaktige eller ufullstendige.
|
||
|
||
Grounding innebærer å gi modellen tilgang til ekstern, pålitelig informasjon som den kan trekke sine svar fra. Denne informasjonen kalles "grounding data" eller "grounding sources". Når grounding kombineres med Retrieval-Augmented Generation (RAG), oppnår du et system der modellen henter relevant kontekst fra dokumenter, databaser eller andre kilder før den genererer et svar. Resultatet er svar som er forankret i verifiserbar kunnskap, med mulighet for kildehenvisninger og sporbarhet.
|
||
|
||
Knowledge injection går hånd i hånd med grounding – det handler om hvordan du strukturerer og presenterer denne kunnskapen i promptet. Jo nærmere grounding-dataen er den ønskede svarformen, desto mindre arbeid må modellen gjøre, og desto lavere er risikoen for feil. Microsoft tilbyr flere verktøy og tjenester for grounding: Azure OpenAI "On Your Data", Copilot Studio knowledge sources, Azure AI Search, og Groundedness Detection i Azure AI Content Safety.
|
||
|
||
---
|
||
|
||
## Kjernekomponenter
|
||
|
||
### RAG-arkitektur (Retrieval-Augmented Generation)
|
||
|
||
RAG er grunnstenen i moderne grounding-systemer. En typisk RAG-workflow består av:
|
||
|
||
| Steg | Komponent | Beskrivelse |
|
||
|------|-----------|-------------|
|
||
| **1. Indeksering** | Data Pipeline | Dokumenter chunkes, berikes med metadata, og vektoriseres via embedding-modeller (f.eks. text-embedding-ada-002) |
|
||
| **2. Query formulation** | Orchestrator | Brukerens spørsmål transformeres til søkequeries (både keyword og semantisk søk) |
|
||
| **3. Retrieval** | Vector Store / Search Engine | Azure AI Search, Azure Cosmos DB, eller annen vector database returnerer top-N relevante chunks |
|
||
| **4. Context injection** | Prompt Construction | Retrieved chunks injiseres i system message eller user prompt som grounding context |
|
||
| **5. Generation** | LLM (GPT-4, GPT-5) | Modellen genererer svar basert på både sin kunnskap og grounding-dataen |
|
||
| **6. Verification** | Groundedness Detection | Azure AI Content Safety validerer at svaret er konsistent med kildene |
|
||
|
||
### Grounding Sources i Microsoft-stakken
|
||
|
||
| Kilde | Beskrivelse | Plattform | Autentisering |
|
||
|-------|-------------|-----------|---------------|
|
||
| **Azure AI Search** | Hybrid search (keyword + vector), semantic ranking | Azure OpenAI "On Your Data" | Managed Identity, API Key |
|
||
| **SharePoint Online** | Moderne SharePoint-sider, dokument-libraries | Copilot Studio, Microsoft 365 Copilot | Microsoft Graph, Entra ID |
|
||
| **Microsoft Graph** | E-post, kalender, OneDrive, Teams-meldinger | Copilot Studio (Tenant Graph Grounding) | Delegated permissions |
|
||
| **Copilot Connectors** | Tredjeparts-systemer (ServiceNow, Salesforce, osv.) | Copilot Studio | OAuth 2.0 via connector |
|
||
| **Custom Data Sources** | Egne APIs, SQL-databaser, Cosmos DB | Custom orchestrators (Semantic Kernel, LangChain) | Custom authentication |
|
||
| **Web Search (Bing)** | Bing Search API for sanntidsinformasjon | Azure AI Agents, Copilot Studio | API Key |
|
||
|
||
### Grounding Techniques
|
||
|
||
#### 1. **Inline Grounding** (Prompt-level)
|
||
Grounding-data injiseres direkte i promptet:
|
||
|
||
```markdown
|
||
System: You are an AI assistant. Answer ONLY using the provided context.
|
||
|
||
Context:
|
||
---
|
||
[DOCUMENT 1]: Microsoft Foundry is a unified platform for building, testing,
|
||
and deploying generative AI applications. Released: Nov 2024.
|
||
[DOCUMENT 2]: Azure OpenAI Service offers GPT-4, GPT-4 Turbo, and o-series models...
|
||
---
|
||
|
||
User: What is Microsoft Foundry?
|
||
```
|
||
|
||
**Fordeler:** Enkel å implementere, full kontroll over context.
|
||
**Ulemper:** Token-grense begrenser mengde data, krever manuell orkestrering.
|
||
|
||
#### 2. **Azure OpenAI "On Your Data"**
|
||
Azure OpenAI kan hente grounding data direkte fra Azure AI Search eller Azure Blob Storage:
|
||
|
||
```python
|
||
completion = client.chat.completions.create(
|
||
model="gpt-4",
|
||
messages=[{"role": "user", "content": "What are health benefits?"}],
|
||
extra_body={
|
||
"data_sources": [{
|
||
"type": "azure_search",
|
||
"parameters": {
|
||
"endpoint": "https://my-search.search.windows.net",
|
||
"index_name": "health-plans-index",
|
||
"authentication": {"type": "api_key", "key": "***"}
|
||
}
|
||
}]
|
||
}
|
||
)
|
||
```
|
||
|
||
**Fordeler:** Zero-code RAG, automatisk chunking og retrieval.
|
||
**Ulemper:** Mindre kontroll over retrieval-logikk, støtter kun Azure-tjenester.
|
||
|
||
#### 3. **Copilot Studio Knowledge Sources**
|
||
Copilot Studio støtter flere knowledge sources:
|
||
- **SharePoint sites** (automatisk indeksering av moderne sider og dokumenter)
|
||
- **Public websites** (URL-based crawling)
|
||
- **Custom files** (opplasting av PDF, Word, PowerPoint – maks 500 filer, 512 MB per fil)
|
||
- **Copilot Connectors** (ServiceNow, Salesforce, Confluence, osv.)
|
||
- **Web Search** (Bing Search API for sanntidsdata)
|
||
|
||
**Tenant Graph Grounding:** Med Microsoft 365 Copilot-lisens får du tilgang til forbedret retrieval fra SharePoint via Microsoft Graph, inkludert metadata-filtrering og semantisk søk.
|
||
|
||
#### 4. **Custom Orchestrator med Semantic Kernel**
|
||
For full kontroll, implementer egen RAG-pipeline:
|
||
|
||
```python
|
||
from azure.search.documents import SearchClient
|
||
from openai import AzureOpenAI
|
||
|
||
# Steg 1: Retrieve
|
||
search_results = search_client.search(
|
||
search_text=query,
|
||
top=5,
|
||
select="content,metadata"
|
||
)
|
||
|
||
# Steg 2: Format context
|
||
context = "\n".join([doc["content"] for doc in search_results])
|
||
|
||
# Steg 3: Inject and generate
|
||
response = openai_client.chat.completions.create(
|
||
model="gpt-4",
|
||
messages=[
|
||
{"role": "system", "content": f"Answer using this context:\n{context}"},
|
||
{"role": "user", "content": query}
|
||
]
|
||
)
|
||
```
|
||
|
||
---
|
||
|
||
## Arkitekturmønstre
|
||
|
||
### Mønster 1: Single-Tenant RAG med Orchestrator
|
||
|
||
**Beskrivelse:** Én orchestrator henter grounding data fra én eller flere datastores per tenant. LLM-kall inneholder kun data som brukeren har tilgang til.
|
||
|
||
**Arkitektur:**
|
||
```
|
||
User → App → Identity Provider → Orchestrator → [Vector DB, SQL, Blob Storage] → LLM
|
||
```
|
||
|
||
**Fordeler:**
|
||
- Full kontroll over retrieval og sikkerhet
|
||
- Enkel å auditere og logge datahenting
|
||
- Støtter custom filtering og security trimming
|
||
|
||
**Ulemper:**
|
||
- Krever egen infrastruktur for orchestrator
|
||
- Mer kompleks å vedlikeholde enn "On Your Data"
|
||
|
||
**Bruk når:** Du har sensitive data, trenger audit-logging, eller har komplekse autorisasjonsregler.
|
||
|
||
---
|
||
|
||
### Mønster 2: Multitenant RAG med API-abstraksjon
|
||
|
||
**Beskrivelse:** En API-layer innkapsler dataaksess-logikk og sikrer at hver tenant kun får tilgang til sine egne data. Orchestrator kaller API-laget i stedet for å snakke direkte med datastores.
|
||
|
||
**Arkitektur:**
|
||
```
|
||
User → App → Identity Provider → Orchestrator → API Layer → [Shared DB, Tenant-specific DB] → LLM
|
||
```
|
||
|
||
**Tenant Isolation Strategies:**
|
||
| Strategi | Beskrivelse | Fordeler | Ulemper |
|
||
|----------|-------------|----------|---------|
|
||
| **Store-per-tenant** | Hver tenant har egen database/search index | Sterk isolasjon, enkel kostnadstildeling | Høy overhead, skalerer ikke til tusenvis av tenants |
|
||
| **Multitenant store** | Felles database, tenant-ID som partition key | Kostnadseffektivt, skalerer godt | Krever security trimming, risiko for "noisy neighbor" |
|
||
| **Shared store** | Felles data for alle tenants (f.eks. offentlig dokumentasjon) | Kostnadseffektivt | Ikke egnet for proprietær data |
|
||
|
||
**Fordeler:**
|
||
- Enkel å validere og teste sikkerhet (all logikk i API-laget)
|
||
- Støtter row-level security og custom filtering
|
||
- Audit-logging på ett sted
|
||
|
||
**Ulemper:**
|
||
- Ekstra lag øker latency
|
||
- Krever vedlikehold av API-kode
|
||
|
||
**Bruk når:** Du har multitenant SaaS-løsning med strengt definerte autorisasjonsregler.
|
||
|
||
---
|
||
|
||
### Mønster 3: Hybrid Grounding (Web + Private Data)
|
||
|
||
**Beskrivelse:** Kombiner private datastores med web search for å dekke både proprietær kunnskap og sanntidsdata.
|
||
|
||
**Arkitektur:**
|
||
```
|
||
User → Orchestrator → [Private Data (RAG)] + [Bing Search API] → LLM
|
||
```
|
||
|
||
**Eksempel-use case:**
|
||
- **Private data:** Interne policydokumenter, produktmanualer
|
||
- **Web search:** Siste nyheter, konkurranseinformasjon, oppdaterte priser
|
||
|
||
**Fordeler:**
|
||
- Best of both worlds: proprietær + sanntidsdata
|
||
- Reduserer hallucinations på time-sensitive spørsmål
|
||
|
||
**Ulemper:**
|
||
- Bing-kall kan øke kostnader
|
||
- Cross-geo dataflow (Bing-data forlater enterprise boundary)
|
||
- Må håndtere to ulike kildekategorier i responsen
|
||
|
||
**Bruk når:** Applikasjonen trenger både intern kunnskap og sanntidsdata (f.eks. chatbot for kundeservice).
|
||
|
||
---
|
||
|
||
## Beslutningsveiledning
|
||
|
||
### Når skal du bruke grounding?
|
||
|
||
| Scenario | Anbefaling | Verktøy |
|
||
|----------|------------|---------|
|
||
| **Faktabaserte spørsmål** (produktdetaljer, policydokumenter) | ✅ Påkrevd | Azure AI Search + RAG |
|
||
| **Sanntidsdata** (valutakurser, nyheter) | ✅ Påkrevd | Web Search (Bing) |
|
||
| **Kreativ tekst** (markedsføringstekst, historier) | ⚠️ Valgfritt | Baseline LLM (uten grounding) |
|
||
| **Sensitive data** (medisinske journaler, juridiske dokumenter) | ✅ Påkrevd + Groundedness Detection | Azure AI Search + Content Safety |
|
||
| **Offentlig kunnskap** (Wikipedia-lignende) | ⚠️ LLM kan håndtere uten grounding | Baseline LLM eller Web Search |
|
||
|
||
### Grounding Technique Decision Tree
|
||
|
||
```
|
||
START: Trenger du grounding?
|
||
│
|
||
├─ Ja → Er dataen sensitiv eller subject to compliance?
|
||
│ ├─ Ja → Bruk Azure AI Search + Private endpoints + Groundedness Detection
|
||
│ └─ Nei → Er dataen intern eller proprietær?
|
||
│ ├─ Ja → Azure OpenAI "On Your Data" eller Custom RAG
|
||
│ └─ Nei → Web Search (Bing) eller Public datasets
|
||
│
|
||
└─ Nei → Baseline LLM (GPT-4, GPT-5)
|
||
```
|
||
|
||
### Vanlige feil og hvordan unngå dem
|
||
|
||
| Feil | Symptom | Løsning |
|
||
|------|---------|---------|
|
||
| **For mye context** | Token limit exceeded, høye kostnader | Chunk data bedre, bruk top-K filtering (f.eks. top-5 chunks) |
|
||
| **Irrelevant context** | Modellen gir svar basert på feil kilder | Forbedre retrieval (hybrid search, semantic ranking) |
|
||
| **Manglende citations** | Kan ikke verifisere kilder | Instruer modellen: "Include inline citations as [1], [2]" |
|
||
| **Ungrounded responses** | Modellen "hallusinerer" fakta | Bruk Groundedness Detection, instruer "Answer ONLY from provided context" |
|
||
| **Security leakage** | Modellen lekker data fra andre tenants | Implementer API-layer med security trimming, test grundig |
|
||
|
||
### Røde flagg (når du IKKE skal bruke grounding)
|
||
|
||
- ❌ **Kreativ skriving der fakta ikke er kritisk** (f.eks. sci-fi-historier)
|
||
- ❌ **Brainstorming-sesjoner** der modellen skal generere nye idéer
|
||
- ❌ **Når grounding-data er utdatert** (da blir svaret verre enn baseline LLM)
|
||
- ❌ **Når retrieval-kvaliteten er dårlig** (irrelevante chunks gir dårligere svar)
|
||
|
||
---
|
||
|
||
## Integrasjon med Microsoft-stakken
|
||
|
||
### Azure OpenAI "On Your Data"
|
||
|
||
**Setup-steg:**
|
||
1. Opprett Azure AI Search-instans
|
||
2. Indekser dokumenter (manuelt eller via Azure Data Factory)
|
||
3. Konfigurer Azure OpenAI med data source:
|
||
|
||
```json
|
||
{
|
||
"dataSources": [{
|
||
"type": "AzureCognitiveSearch",
|
||
"parameters": {
|
||
"endpoint": "https://my-search.search.windows.net",
|
||
"indexName": "my-index",
|
||
"key": "***",
|
||
"semanticConfiguration": "default",
|
||
"queryType": "semantic",
|
||
"inScope": true,
|
||
"strictness": 3
|
||
}
|
||
}]
|
||
}
|
||
```
|
||
|
||
**Parametre å tune:**
|
||
- `strictness` (1-5): Hvor strengt modellen skal holde seg til kildene (5 = strengest)
|
||
- `top_n_documents`: Antall chunks å inkludere (default: 5)
|
||
- `inScope`: Hvis `true`, svarer modellen kun basert på sources (anbefalt for kritiske use cases)
|
||
|
||
### Copilot Studio Knowledge Configuration
|
||
|
||
**SharePoint som knowledge source:**
|
||
1. Gå til agent → **Knowledge** → **Add SharePoint**
|
||
2. Velg sites/libraries (modern SharePoint pages only)
|
||
3. Enable **Tenant Graph Grounding** (krever M365 Copilot-lisens)
|
||
4. Konfigurer metadata filters (f.eks. "only files modified last 30 days")
|
||
|
||
**Web Search (Bing):**
|
||
1. **Advanced** → **Generative answers** → **Web Search**
|
||
2. Velg mellom:
|
||
- **Open web search** (hele Bing-index)
|
||
- **Custom search** (avgrens til spesifikke domener)
|
||
3. Konfigurer user location (for regionsspesifikke resultater)
|
||
|
||
### Azure AI Content Safety: Groundedness Detection
|
||
|
||
**Validering av grounded responses:**
|
||
|
||
```python
|
||
conn.request("POST", "/contentsafety/text:detectGroundedness?api-version=2024-09-15-preview",
|
||
payload={
|
||
"domain": "Generic",
|
||
"task": "QnA",
|
||
"qna": {"query": "What is the interest rate?"},
|
||
"text": "The interest rate is 5%.",
|
||
"groundingSources": ["As of July 2024, the interest rate is 4.5%."],
|
||
"reasoning": True
|
||
}
|
||
)
|
||
```
|
||
|
||
**Output:** Groundedness score (boolean), reasoning (why ungrounded), correction suggestions.
|
||
|
||
**Bruk i produksjon:**
|
||
- Kjør post-generation for kritiske use cases (medisin, jus, finans)
|
||
- Log ungrounded responses for videre analyse
|
||
- Bruk correction feature for automatisk retting
|
||
|
||
---
|
||
|
||
## Offentlig sektor (Norge)
|
||
|
||
### GDPR og datasuverenitet
|
||
|
||
**Grounding data klassifisert som personopplysninger:**
|
||
- ✅ **Azure AI Search i Norge-region** (Norway East, Norway West) – datalagring i Norge
|
||
- ✅ **Azure OpenAI** – prosessering i EU/Norge (avhengig av deployment)
|
||
- ⚠️ **Bing Search API** – data sendes til Bing (USA), ikke dekket av DPA (Data Protection Addendum)
|
||
- ❌ **Tredjepartsconnectors** – vurder DPIA (Data Protection Impact Assessment) per connector
|
||
|
||
**Schrems II compliance:**
|
||
- Bruk Azure-tjenester i EU/Norge-regioner
|
||
- Unngå Bing Search for personopplysninger
|
||
- Dokumenter dataflyt i DPIA
|
||
|
||
### AI Act (EU AI-forordningen)
|
||
|
||
**Grounding som risikoreduserende tiltak:**
|
||
- **Høyrisiko-systemer** (f.eks. HR-beslutninger, offentlig forvaltning) → Påkrevd grounding + audit logs
|
||
- **Begrenset risiko** (chatbots) → Anbefalt grounding for transparens
|
||
- **Lav risiko** (kreativ AI) → Valgfritt
|
||
|
||
**Dokumentasjonskrav:**
|
||
- Logg hvilke grounding sources som ble brukt per respons
|
||
- Implementer citation tracking (inline citations i svar)
|
||
- Oppbevar audit logs i minimum 6 måneder (anbefalt: 2 år)
|
||
|
||
### Forvaltningsloven og begrunnelsesplikt
|
||
|
||
**§ 24-25 (begrunnelse av enkeltvedtak):**
|
||
- Automatiserte vedtak må kunne spores tilbake til grounding sources
|
||
- Inline citations sikrer transparens: "Ifølge [1], er kravet..."
|
||
- Lag system for å eksportere full reasoning chain (query → retrieval → LLM response)
|
||
|
||
**Eksempel:**
|
||
```
|
||
User: Er jeg kvalifisert for stønad X?
|
||
Response: Ja, du oppfyller kriteriene ifølge [1] fordi du har bodd i Norge i over 3 år [2].
|
||
|
||
Sources:
|
||
[1] Stønadsdokument v2.3 (2025-01-15), side 4
|
||
[2] Folkeregisteret: Registrert bosatt siden 2021-06-01
|
||
```
|
||
|
||
---
|
||
|
||
## Kostnad og lisensiering
|
||
|
||
### Azure OpenAI "On Your Data" kostnadselementer
|
||
|
||
| Komponent | Prisfaktor | Estimat (NOK/måned) |
|
||
|-----------|-----------|---------------------|
|
||
| **Azure OpenAI tokens** | Input + output tokens (GPT-4: ~0.35 NOK/1K tokens) | Varierer med volum |
|
||
| **Azure AI Search** | Storage (per GB) + queries (per 1000) | 500-5000 NOK (avhengig av tier) |
|
||
| **Embedding modell** | text-embedding-ada-002 (~0.001 NOK/1K tokens) | 100-500 NOK |
|
||
| **Bing Search API** | Per query (~0.50 NOK/query) | 500-2000 NOK (100-400 queries/dag) |
|
||
| **Egress traffic** | Data ut av Azure-region | Typisk neglisjerbart |
|
||
|
||
**Total estimert kostnad (medium bruk):** 2000-8000 NOK/måned
|
||
|
||
### Optimaliseringstips
|
||
|
||
| Tiltak | Besparelse | Trade-off |
|
||
|--------|-----------|-----------|
|
||
| **Reduser chunk size** | -20-30% token cost | Kan miste kontekst |
|
||
| **Bruk GPT-4o mini i stedet for GPT-4** | -90% per token | Lavere kvalitet på komplekse oppgaver |
|
||
| **Cache embeddings** | -50% embedding cost | Krever egen cache-løsning |
|
||
| **Batch queries** | -10-15% search cost | Høyere latency |
|
||
| **Bruk "strictness" parameter** | Reduserer unødvendige LLM-kall | Kan øke "jeg vet ikke"-svar |
|
||
|
||
### Copilot Studio lisensiering
|
||
|
||
**Grounding inkludert i lisens:**
|
||
- **Microsoft 365 Copilot-lisens:** SharePoint + Microsoft Graph grounding er zero-rated (ingen Copilot Credit usage)
|
||
- **Copilot Studio standalone:** Grounding teller mot Copilot Credits (kompleksitet-basert)
|
||
|
||
**Grounding som teller mot credits:**
|
||
- Custom connectors (Power Platform connectors)
|
||
- External APIs
|
||
- Complex multi-step retrieval
|
||
|
||
**Anbefaling:** For store organisasjoner, kombiner M365 Copilot-lisens (for SharePoint/Graph) med Copilot Studio for custom logic.
|
||
|
||
---
|
||
|
||
## For arkitekten (Cosmo)
|
||
|
||
### Spørsmål å stille kunden
|
||
|
||
1. **Datakilde og sensitivitet:**
|
||
- Hvor ligger dataen som skal brukes til grounding? (SharePoint, SQL, Blob Storage, on-prem?)
|
||
- Inneholder dataen personopplysninger eller sensitive forretningsdata?
|
||
- Kreves det audit-logging av datahenting?
|
||
|
||
2. **Multitenancy og autorisasjon:**
|
||
- Er dette en multitenant-løsning?
|
||
- Hvilke autorisasjonsregler gjelder? (rolle-basert, dokument-basert, tenant-basert?)
|
||
- Skal brukere kun se data de har tilgang til i kildesystemet?
|
||
|
||
3. **Datakvalitet og aktualitet:**
|
||
- Hvor ofte oppdateres dataen? (sanntid, daglig, ukentlig?)
|
||
- Hva er akseptabel "staleness" på grounding data?
|
||
- Finnes det en "source of truth" for dataen?
|
||
|
||
4. **Teknisk modenhet:**
|
||
- Har organisasjonen eksisterende RAG-erfaring?
|
||
- Kan de vedlikeholde en custom orchestrator, eller trenger de managed solution?
|
||
- Hvilket team skal eie embeddings-generering og indeksering?
|
||
|
||
5. **Compliance og risiko:**
|
||
- Er dette et høyrisiko-system under AI Act?
|
||
- Kreves det DPIA?
|
||
- Må svaret kunne spores tilbake til eksakt kilde (inline citations)?
|
||
|
||
6. **Volum og kostnad:**
|
||
- Hvor mange queries per dag forventes?
|
||
- Hva er akseptabel responstid? (< 2s, < 5s, < 10s?)
|
||
- Hva er budsjettet for grounding-infrastruktur?
|
||
|
||
7. **Fallback-strategi:**
|
||
- Hva skal skje hvis retrieval feiler? (default svar, feilmelding, fallback til baseline LLM?)
|
||
- Skal modellen kunne si "jeg vet ikke" hvis dataen mangler?
|
||
|
||
8. **Citation og transparens:**
|
||
- Skal brukerne se hvilke kilder som ble brukt?
|
||
- Kreves det inline citations i svaret?
|
||
- Skal metadata (f.eks. publish-dato) vises?
|
||
|
||
### Fallgruver å unngå
|
||
|
||
| Fallgruve | Konsekvens | Mitigering |
|
||
|-----------|-----------|-----------|
|
||
| **Dårlig chunking-strategi** | Irrelevante chunks, dårlig retrieval | Bruk semantic chunking (512-1024 tokens), overlapp 10-20% |
|
||
| **Manglende metadata** | Kan ikke filtrere på dato, forfatter, sensitivitet | Berik chunks med metadata under indeksering |
|
||
| **Ingen citation tracking** | Kan ikke verifisere kilder | Krev inline citations i system prompt |
|
||
| **Overpopulert context** | Token limit overskrides, høye kostnader | Bruk top-K filtering, prioriter nyeste/mest relevante |
|
||
| **Manglende security trimming** | Data leakage mellom tenants | Implementer API-layer, test grundig |
|
||
| **Statiske embeddings** | Retrieval basert på utdatert semantikk | Re-index regelmessig (f.eks. månedlig) |
|
||
| **Ingen groundedness validation** | Hallucinations går uoppdaget | Bruk Azure AI Content Safety Groundedness Detection |
|
||
|
||
### Anbefalinger per modenhetsnivå
|
||
|
||
#### Nivå 1: Pilot/Proof-of-Concept
|
||
- **Verktøy:** Azure OpenAI "On Your Data" + Azure AI Search
|
||
- **Grounding:** Inline grounding via system prompt
|
||
- **Datakilde:** Statiske dokumenter i Blob Storage (< 100 dokumenter)
|
||
- **Fokus:** Proof of concept, iterere på prompt design
|
||
- **Kostnad:** < 2000 NOK/måned
|
||
|
||
#### Nivå 2: Produksjon (begrenset skala)
|
||
- **Verktøy:** Copilot Studio med SharePoint knowledge sources
|
||
- **Grounding:** "On Your Data" eller Copilot Studio built-in RAG
|
||
- **Datakilde:** SharePoint (< 5000 dokumenter), evt. custom files
|
||
- **Fokus:** Brukeropplevelse, citation tracking, groundedness detection
|
||
- **Kostnad:** 5000-15000 NOK/måned (inkl. Copilot Studio-lisens)
|
||
|
||
#### Nivå 3: Enterprise (full skala)
|
||
- **Verktøy:** Custom orchestrator (Semantic Kernel/LangChain) + Azure AI Search
|
||
- **Grounding:** Hybrid (private data + web search)
|
||
- **Datakilde:** Multitenant SQL/Cosmos DB, API-layer for security trimming
|
||
- **Fokus:** Skalerbarhet, multitenant security, audit logging, compliance
|
||
- **Kostnad:** 20000-100000+ NOK/måned (avhengig av volum)
|
||
|
||
#### Nivå 4: Spesialisert (høyrisiko, regulert)
|
||
- **Verktøy:** Custom RAG + Groundedness Detection + audit pipeline
|
||
- **Grounding:** Store-per-tenant, inline citations, reasoning tracking
|
||
- **Datakilde:** On-prem integration (Azure Arc), private endpoints
|
||
- **Fokus:** GDPR, AI Act compliance, full auditability, eksplonerbar reasoning
|
||
- **Kostnad:** 100000+ NOK/måned (inkl. compliance overhead)
|
||
|
||
---
|
||
|
||
## Kilder og verifisering
|
||
|
||
**MCP-kilder (Verified):**
|
||
1. Microsoft Learn: [Prompt Engineering Techniques](https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/prompt-engineering) – Groundedness context, citation best practices
|
||
2. Microsoft Learn: [Groundedness Detection Filter](https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/content-filter-groundedness) – RAG definition, ungroundedness detection
|
||
3. Microsoft Learn: [Secure Multitenant RAG](https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/secure-multitenant-rag) – Tenant isolation, API-layer, security trimming
|
||
4. Microsoft Learn: [Copilot Studio Knowledge Sources](https://learn.microsoft.com/en-us/microsoft-copilot-studio/knowledge-copilot-connectors) – SharePoint, connectors, tenant graph grounding
|
||
5. Microsoft Learn: [Web Search in Copilot Studio](https://learn.microsoft.com/en-us/microsoft-copilot-studio/data-privacy-security-web-search) – Bing integration, privacy considerations
|
||
6. Microsoft Learn: [Azure AI Agents (Bing Grounding)](https://learn.microsoft.com/en-us/azure/foundry/agents/how-to/tools/web-overview) – Web grounding workflow
|
||
|
||
**Konfidensnivå per seksjon:**
|
||
| Seksjon | Konfidensnivå | Kilde |
|
||
|---------|---------------|-------|
|
||
| Introduksjon | Verified | MCP: Prompt Engineering, Groundedness Detection |
|
||
| RAG-arkitektur | Verified | MCP: Secure Multitenant RAG |
|
||
| Grounding Sources | Verified | MCP: Copilot Studio, Azure AI Search |
|
||
| Arkitekturmønstre | Verified | MCP: Secure Multitenant RAG |
|
||
| Azure OpenAI "On Your Data" | Verified | MCP: Prompt Engineering (code samples) |
|
||
| Copilot Studio | Verified | MCP: Knowledge Sources, Web Search |
|
||
| Groundedness Detection | Verified | MCP: Content Filter Groundedness |
|
||
| GDPR/AI Act | Baseline | Modellkunnskap (januar 2025) + etablert praksis |
|
||
| Kostnad | Baseline | Modellkunnskap + Azure pricing (januar 2025) |
|
||
| Spørsmål til kunden | Baseline | Arkitekturpraksis |
|
||
|
||
**Disclaimer:** Kostnadsestimater er basert på januar 2025-priser og kan endres. Verifiser alltid med [Azure Pricing Calculator](https://azure.microsoft.com/en-us/pricing/calculator/) for nøyaktige tall. |