Steg 9 (R4): unified migrate-corpus.mjs --write over engineering/governance/ infrastructure/security. 327 filer mutert, verified=null, prosa byte-identisk (fra første ## seksjon), advisor urørt (0 endringer). To applier-fixes oppdaget under kjøring (TDD, RED→GREEN): - insertHeaderFields: anker faller nå tilbake når en meta-linje selv passerer 500B (2 filer pakket et avsnitt i **Status:** → Type/Source landet utenfor scan-vinduet, applierens post-write-assertion fanget + restaurerte). - normalizeStaleVerified: fjerner nå ALLE stale non-date **Verified:** i 500B-vinduet, inkl. stray body-dup rett under --- (9 mlops-genaiops-filer var ellers falskt "verified"/fresh, droppet fra worklist). Operatør-godkjent utvidelse av carve-out; kun stray metadata-linjer, aldri prosa. test-transform-criterion: precondition oppdatert til post-migrasjons-sannhet (fila bærer nå Source). Suite 728/728 grønn.
481 lines
26 KiB
Markdown
481 lines
26 KiB
Markdown
# RAG Query Cost Optimization
|
||
|
||
**Last updated:** 2026-06-19
|
||
**Status:** GA
|
||
**Category:** Cost Optimization & FinOps for AI
|
||
**Type:** reference
|
||
**Source:** https://learn.microsoft.com/azure/foundry-classic/openai/concepts/use-your-data
|
||
|
||
---
|
||
|
||
## Innhold
|
||
|
||
- [Introduksjon](#introduksjon)
|
||
- [Kjernekomponenter](#kjernekomponenter)
|
||
- [Arkitekturmønstre](#arkitekturmønstre)
|
||
- [Beslutningsveiledning](#beslutningsveiledning)
|
||
- [Integrasjon med Microsoft-stakken](#integrasjon-med-microsoft-stakken)
|
||
- [Offentlig sektor (Norge)](#offentlig-sektor-norge)
|
||
- [Kostnad og lisensiering](#kostnad-og-lisensiering)
|
||
- [For arkitekten (Cosmo)](#for-arkitekten-cosmo)
|
||
- [Kilder og verifisering](#kilder-og-verifisering)
|
||
|
||
## Introduksjon
|
||
|
||
Retrieval Augmented Generation (RAG) representerer en av de mest kostnadsintensive delene av AI-applikasjoner i produksjon. Mens utvikling og testing av RAG-løsninger kan virke rimelig, eskalerer kostnadene raskt når systemet møter produksjonsvolumer med hundrevis eller tusenvis av queries daglig. Hver query utløser en pipeline med minimum to LLM-kall (intent generation og response generation), embedding-operasjoner, search-queries mot Azure AI Search, og potensielt semantic ranking. For organisasjoner som bygger chat-løsninger eller copilots på Microsoft-stakken, er query-kostnader ofte den største driftskostnaden.
|
||
|
||
Optimalisering av RAG query-kostnader handler ikke bare om å redusere regningen. Det handler om å bygge sustainable AI-løsninger som kan skalere uten å eksplodere budsjettet. En typisk RAG-query i Azure OpenAI On Your Data kan forbruke mellom 4 000 og 6 000 tokens totalt, avhengig av modell og konfigurasjon. Med GPT-4, som koster betydelig mer enn GPT-3.5-Turbo, kan dette raskt bli en betydelig post i IT-budsjettet. Samtidig må man balansere kostnadsreduksjon mot kvalitet – aggressive optimaliseringer kan føre til dårligere svar og lavere brukertilfredshet.
|
||
|
||
Dette dokumentet dekker hele spekteret av kostnadsdrivere i RAG-pipelines: token-forbruk i LLM-kall, Azure AI Search-tier-kostnader, semantic ranking-avgifter, embedding-operasjoner, og infrastrukturkostnader. Du vil lære konkrete teknikker for å redusere kostnader med opptil 60-80% uten å kompromittere svarkvalitet, samt hvordan du bygger kostnadsbevisste arkitekturer fra start.
|
||
|
||
## Kjernekomponenter
|
||
|
||
### RAG Query Pipeline Cost Breakdown
|
||
|
||
En typisk Azure OpenAI On Your Data query gjennomløper følgende kostnadselementer:
|
||
|
||
| Komponent | Kostnadselement | Typisk andel av totalkostnad | Optimaliserings-potensial |
|
||
|-----------|-----------------|------------------------------|---------------------------|
|
||
| **Intent Generation** | LLM tokens (input + output) | 15-20% | Middels (kan elimineres i enkelte scenarios) |
|
||
| **Embedding Operations** | Azure OpenAI embeddings (text-embedding-ada-002) | 5-10% | Lav (nødvendig for vector search) |
|
||
| **Azure AI Search Query** | Search tier (QPS, replicas, partitions) | 20-30% | Høy (tier-optimalisering, query reduction) |
|
||
| **Semantic Ranking** | Per-query semantic ranking fee | 10-15% | Høy (bruk kun når nødvendig) |
|
||
| **Response Generation** | LLM tokens (input + output) | 35-45% | Høy (chunk reduction, token optimization) |
|
||
| **Network/Storage** | Bandwidth, blob storage for caching | <5% | Lav |
|
||
|
||
### Token Consumption per Model (Azure OpenAI On Your Data)
|
||
|
||
Basert på Microsoft Learn-data for standard konfigurasjon (5 retrieved documents, strictness=3, chunk size=1024):
|
||
|
||
| Model | Generation Prompt | Intent Prompt | Response Output | Intent Output | **Total Avg** |
|
||
|-------|-------------------|---------------|-----------------|---------------|---------------|
|
||
| **gpt-35-turbo-16k** | 4 297 | 1 366 | 111 | 25 | **5 799** |
|
||
| **gpt-4-0613** | 3 997 | 1 385 | 118 | 18 | **5 518** |
|
||
| **gpt-4-1106-preview** | 4 538 | 811 | 119 | 27 | **5 495** |
|
||
| **gpt-35-turbo-1106** | 4 854 | 1 372 | 110 | 26 | **6 362** |
|
||
|
||
**Verified (Microsoft Learn):** Disse tallene er hentet fra offisiell Microsoft-dokumentasjon basert på testing med 191 samtaler, 250 spørsmål, 10 tokens per spørsmål i snitt, og 4 samtale-turns per samtale.
|
||
|
||
### Azure AI Search Tier Costs (Estimated NOK/month)
|
||
|
||
| Tier | Partitions | Replicas | QPS Capacity | Storage | ~NOK/month | Best For |
|
||
|------|------------|----------|--------------|---------|------------|----------|
|
||
| **Basic** | 1 | 3 | Moderate | 15 GB/partition (eldre: 2 GB) | 1 200 | Proof-of-concept, lav trafikk |
|
||
| **S1** | 12 | 12 | High | 160 GB/partition | 2 800 | Produksjon, moderate volumer |
|
||
| **S2** | 12 | 12 | Very High | 512 GB/partition | 11 200 | High-volume produksjon |
|
||
| **S3** | 12 | 12 | Enterprise | 1 024 GB/partition | 22 400 | Enterprise-skala |
|
||
|
||
**Baseline (Modellkunnskap):** Prisene er omregnet fra USD til NOK (1 USD ≈ 11 NOK, februar 2026) og er veiledende.
|
||
|
||
**NY prismodell — Serverless (Preview, MCP 2026-06):** Azure AI Search tilbyr nå to prismodeller: **Dedicated** (provisioned, fast pris per Search Unit — tabellen over) og **Serverless (Preview)** — forbruksbasert (Compute Units/time + per-GB/mnd lagring), ingen compute-kost ved idle. Best for sporadiske/variable workloads; en kontinuerlig provisjonert Basic/S1 kan være dyrere enn Serverless ved bursty trafikk. Per juni 2026 er Serverless i preview (kun West Central US, Switzerland North, Japan East), støtter ikke migrering til/fra dedicated, og er ikke anbefalt for produksjon ennå.
|
||
|
||
### Semantic Ranking Costs
|
||
|
||
**Verified (Microsoft Learn):** Semantic ranking er en premium-funksjon som påløper ekstra kostnader per query. Kostnaden er progressiv og varierer basert på volum:
|
||
|
||
- **Første 1000 queries/måned:** Inkludert i Basic tier eller høyere
|
||
- **Påfølgende queries:** Per-query avgift (se Azure pricing calculator for eksakte tall)
|
||
|
||
Semantic ranking forbedrer relevansscore betydelig, men kan øke query-kostnaden med 15-25% for høyvolumapplikasjoner.
|
||
|
||
## Arkitekturmønstre
|
||
|
||
### 1. Lean Retrieval Pipeline
|
||
|
||
**Prinsipp:** Reduser antall tokens sendt til LLM ved å optimalisere retrieval-parametere og chunk-størrelser.
|
||
|
||
**Implementering:**
|
||
- **Juster `topNDocuments`:** Start med 3 i stedet for default 5. Test om svarkvaliteten holder seg.
|
||
- **Optimaliser chunk size:** Bruk 512 eller 768 tokens i stedet for 1024 for faktabaserte datasets.
|
||
- **Øk `strictness`:** Sett til 4 eller 5 for å filtrere bort irrelevante dokumenter.
|
||
- **Limit responses to data:** Alltid `inScope=true` for å redusere prompt-lengde.
|
||
|
||
**Kostnadsreduksjon:** 25-40% reduksjon i token-forbruk per query.
|
||
|
||
**Trade-off:** Kan misse kontekstuell informasjon i komplekse spørsmål. Krever testing.
|
||
|
||
**Eksempel (Python API):**
|
||
```python
|
||
{
|
||
"data_sources": [{
|
||
"type": "AzureCognitiveSearch",
|
||
"parameters": {
|
||
"endpoint": SEARCH_ENDPOINT,
|
||
"indexName": INDEX_NAME,
|
||
"topNDocuments": 3, # Redusert fra 5
|
||
"strictness": 4, # Økt fra 3
|
||
"inScope": true
|
||
}
|
||
}],
|
||
"messages": [{"role": "user", "content": "Hva er SLA for tjenesten?"}]
|
||
}
|
||
```
|
||
|
||
### 2. Cached RAG (Cache-Aside Pattern)
|
||
|
||
**Prinsipp:** Bruk caching for å unngå gjentatte LLM-kall og search-operasjoner for identiske eller semantisk like queries.
|
||
|
||
**Implementering:**
|
||
- **Query hash caching:** Hash user query og returner cachet svar hvis match.
|
||
- **Semantic cache:** Bruk embedding similarity for å finne lignende tidligere queries (threshold ~0.95).
|
||
- **Azure Redis Cache:** Lagre (query_hash → response) med TTL basert på data freshness-krav.
|
||
- **Enrichment caching:** Bruk Azure AI Search enrichment cache for å gjenbruke chunking/embedding-resultater.
|
||
|
||
**Kostnadsreduksjon:** 50-70% for applikasjoner med repeterende spørsmål (FAQ, support bots).
|
||
|
||
**Arkitektur:**
|
||
```
|
||
User Query → Hash → Redis Lookup → [Cache Hit: Return]
|
||
→ [Cache Miss: RAG Pipeline → Cache Result]
|
||
```
|
||
|
||
**Verified (Microsoft Learn):** Enrichment caching er en built-in Azure AI Search-funksjon som lagrer mellomresultater fra AI enrichment-pipelines. Selv om caching medfører storage-kostnader, reduserer det den kumulative kostnaden for AI enrichment betydelig.
|
||
|
||
### 3. Tiered Retrieval (Hybrid Cost-Quality)
|
||
|
||
**Prinsipp:** Bruk billige modeller for intent detection og enkel retrieval, reserve dyre modeller for komplekse svar.
|
||
|
||
**Implementering:**
|
||
- **Tier 1 (Keyword Search):** Gratis utover search tier-kostnad. Bruk for enkle faktaspørsmål.
|
||
- **Tier 2 (Vector Search):** Påløper embedding-kostnader. Bruk for semantisk søk.
|
||
- **Tier 3 (Hybrid + Semantic):** Dyreste, men beste kvalitet. Reserve for kritiske queries.
|
||
- **Model routing:** Bruk GPT-3.5-Turbo for 80% av queries, GPT-4 for komplekse/kritiske queries.
|
||
|
||
**Kostnadsreduksjon:** 40-60% ved å bruke riktig search type og modell per query-type.
|
||
|
||
**Beslutningslogikk:**
|
||
```python
|
||
if is_simple_fact_query(user_query):
|
||
search_type = "keyword"
|
||
model = "gpt-35-turbo"
|
||
elif is_semantic_query(user_query):
|
||
search_type = "vector"
|
||
model = "gpt-35-turbo"
|
||
else: # Complex reasoning
|
||
search_type = "hybrid_semantic"
|
||
model = "gpt-4"
|
||
```
|
||
|
||
### 4. Agentic Retrieval (Cost-Aware)
|
||
|
||
**Status: GA-split (MCP 2026-06)** — Deler av agentic retrieval er **generelt tilgjengelig i `2026-04-01` REST API** (programmatisk tilgang). Azure-portalen og Microsoft Foundry-portalen gir fortsatt **kun preview-tilgang** til alle agentic retrieval-funksjoner. Pipelinen er også kunnskapslaget bak **Foundry IQ** i Foundry-portalen. *(Verified MCP 2026-06)*
|
||
|
||
**Prinsipp:** Azure AI Search Agentic Retrieval bruker LLM til å generere fokuserte subqueries som kjøres parallelt, hver semantisk rerangert. Dette kan være dyrt, men også mer effektivt enn multiple sekvensielle queries.
|
||
|
||
**Prismodell:**
|
||
- **Free plan (default):** månedlig gratis token-kvote inkludert (eksakt mengde oppgis ikke lenger i dokumentasjonen — se [Azure AI Search pricing](https://azure.microsoft.com/pricing/details/search))
|
||
- **Standard plan:** pay-as-you-go etter at gratis kvota er brukt
|
||
- **Azure OpenAI faktureres separat** (alltid pay-as-you-go) for input/output-tokens i query planning + answer synthesis
|
||
|
||
**Kostnadseksempel (Verified - Microsoft Learn):**
|
||
- **2000 agentic retrievals** med 3 subqueries per plan:
|
||
- Reranking: ~$3.30 (150M tokens @ $0.022/token)
|
||
- Input tokens (query planning): $0.60 (4M tokens @ $0.15/M)
|
||
- Output tokens (query planning): $0.42 (700K tokens @ $0.60/M)
|
||
- **Total:** ~$4.32 per 2000 queries = $0.00216 per query
|
||
|
||
**Når bruke:**
|
||
- Komplekse multi-facet spørsmål som ville krevd multiple manual queries.
|
||
- Når answer quality er kritisk og kostnaden kan rettferdiggjøres.
|
||
|
||
**Cost control:**
|
||
- 50M gratis tokens/mnd dekker typisk moderat bruk i utviklings- og testmiljøer.
|
||
- Sett `reasoning_effort` til `minimal` eller `low` (ikke `medium`).
|
||
- Begrens antall subqueries per plan.
|
||
|
||
## Beslutningsveiledning
|
||
|
||
### Når bruke hvilken search type?
|
||
|
||
| Search Type | Kostnad | Kvalitet | Best For | Unngå Når |
|
||
|-------------|---------|----------|----------|-----------|
|
||
| **Keyword** | Lavest | God for eksakte match | FAQ, produkt-IDs, enkle fakta | Semantisk forståelse nødvendig |
|
||
| **Semantic** | Moderat (+15-25%) | Bedre relevans | Kontekstuelle spørsmål, lignende begreper | Budsjettbegrensninger, høy QPS |
|
||
| **Vector** | Moderat (embedding cost) | Beste semantic match | Cross-lingual, similarity search | Small datasets, keyword-baserte behov |
|
||
| **Hybrid** | Høy (embedding + compute) | Balansert presisjon og recall | Generelle RAG-applikasjoner | Budsjettkritiske scenarios |
|
||
| **Hybrid + Semantic** | Høyest | Best overall | Enterprise-kritiske applikasjoner | Høyvolum, lavbudsjett |
|
||
|
||
### Runtime Parameter Tuning for Cost Reduction
|
||
|
||
| Parameter | Default | Cost-Optimized | Quality-Optimized | Impact |
|
||
|-----------|---------|----------------|-------------------|--------|
|
||
| `topNDocuments` | 5 | 3 | 10 | Høy: Direkte token reduction |
|
||
| `strictness` | 3 | 4-5 | 1-2 | Moderat: Filtrerer chunks |
|
||
| `chunk_size` | 1024 | 512-768 | 1536 | Høy: Påvirker token/chunk |
|
||
| `inScope` | true | true | false | Moderat: Reduserer prompt complexity |
|
||
| `max_tokens` (response) | 800 | 400 | 1500 | Høy: Direkte output cost |
|
||
|
||
### Vanlige Feil
|
||
|
||
1. **Over-retrieval:** Hente 10+ dokumenter når 3 holder. **Fix:** Start med 3, øk kun hvis nødvendig.
|
||
2. **Semantic ranking always-on:** Bruke semantic ranking for alle queries. **Fix:** Enable kun for complex queries.
|
||
3. **Large chunk sizes:** Bruke 1536 tokens for enkle FAQ. **Fix:** Test 512 tokens for faktabaserte datasets.
|
||
4. **No caching:** Kjøre full RAG pipeline for identiske queries. **Fix:** Implementer Redis cache.
|
||
5. **Wrong model choice:** Bruke GPT-4 for alle queries. **Fix:** Route 80% til GPT-3.5-Turbo.
|
||
6. **Ignoring conversation history:** Sende full history i hver query. **Fix:** Truncate til siste 2-3 turns.
|
||
|
||
### Røde Flagg
|
||
|
||
- **Token explosion:** Queries som konsumerer >8000 tokens regelmessig.
|
||
- **Low cache hit rate:** <20% cache hits i FAQ/support scenarios.
|
||
- **High semantic ranking costs:** Semantic ranking brukt i >70% av queries.
|
||
- **Oversized search tier:** S3 tier for <1000 queries/dag.
|
||
- **No query monitoring:** Manglende Cost Management dashboards.
|
||
|
||
## Integrasjon med Microsoft-stakken
|
||
|
||
### Azure OpenAI On Your Data
|
||
|
||
**Verified (Microsoft Learn):** Azure OpenAI On Your Data er den native RAG-løsningen i Microsoft-stakken. Kostnadsoptimalisering krever forståelse av hele pipeline:
|
||
|
||
1. **Intent Generation (LLM call 1):**
|
||
- Reformulerer user query til search intents.
|
||
- Kan **elimineres** ved å bruke direct query-to-search mapping for enkle use cases.
|
||
- Kostnadsreduksjon: ~20% ved å skippe intent generation for FAQ-bots.
|
||
|
||
2. **Retrieval (Azure AI Search):**
|
||
- Keyword/vector/semantic/hybrid search.
|
||
- Kostnad avhenger av tier, QPS, og search type.
|
||
|
||
3. **Response Generation (LLM call 2):**
|
||
- Største token consumer (35-45% av total).
|
||
- Optimaliser via chunk reduction og system message truncation.
|
||
|
||
### Azure AI Search Optimization
|
||
|
||
**Verified (Microsoft Learn):** Kostnadsoptimalisering for Azure AI Search:
|
||
|
||
- **Tier-riktig sizing:** Basic for POC/dev, S1 for produksjon, S2+ for enterprise. Ikke overprovisjon.
|
||
- **Partition optimization:** Øk partitions kun når index size krever det, ikke for QPS.
|
||
- **Replica optimization:** Øk replicas kun ved høy QPS eller HA-krav.
|
||
- **Autoscaling:** Implementer code for å scale up/down basert på workload patterns.
|
||
- **Region placement:** Velg region med høyere storage per partition (April/May 2024 upgrade).
|
||
- **Vector compression:** Bruk scalar quantization for å redusere vector storage med opptil 92.5%.
|
||
|
||
**Verified (Microsoft Learn):** Vector compression techniques i Azure AI Search kan kutte vector-kostnader med opptil 92.5% via scalar/binary quantization uten betydelig kvalitetstap.
|
||
|
||
### Azure Container Apps Load Balancing
|
||
|
||
**Verified (Microsoft Learn):** For å unngå throttling (429 errors) og quota limits:
|
||
|
||
- **Multi-region deployment:** Deploy Azure OpenAI resources i flere regioner.
|
||
- **Container Apps load balancer:** Bruk Azure Container Apps som load balancer foran multiple Azure OpenAI endpoints.
|
||
- **Retry logic:** Automatic retry til annen resource ved throttling.
|
||
- **TPM quota management:** Start med 30K TPM per instance, juster basert på behov.
|
||
|
||
**Arkitektur:**
|
||
```
|
||
User → Container App LB → [Azure OpenAI Region 1]
|
||
→ [Azure OpenAI Region 2]
|
||
→ [Azure OpenAI Region 3]
|
||
```
|
||
|
||
### Prompt Flow & Azure Machine Learning
|
||
|
||
**Verified (Microsoft Learn):** Azure ML Pipelines gir granular kontroll over RAG workflow:
|
||
|
||
- **Custom chunking strategies:** Implementer dokumentspesifikk chunking for bedre token efficiency.
|
||
- **Pipeline components:** Data chunking, embeddings generation, test data creation, evaluation.
|
||
- **Cost tracking:** Logg token usage per pipeline step for granular cost analysis.
|
||
|
||
### Copilot Studio Integration
|
||
|
||
**Verified (Microsoft Learn):** Deploy til Copilot Studio (preview) for multi-channel support:
|
||
|
||
- **Single deployment cost:** Deploy én gang, bruk i Teams, web, Dynamics 365.
|
||
- **Tenant-level caching:** Potensial for cross-user cache hits.
|
||
- **Built-in analytics:** Track query volume og cost per channel.
|
||
|
||
## Offentlig sektor (Norge)
|
||
|
||
### GDPR og Datasuverenitet
|
||
|
||
- **Data residency:** Velg Norway East/West regions for Azure AI Search og Azure OpenAI for å holde data innenfor EU/EØS.
|
||
- **Logging constraints:** Query logging for cost analysis må følge GDPR-krav for PII-data i queries.
|
||
- **Caching compliance:** Cached responses må følge samme retention policies som original data.
|
||
|
||
### Budsjettprosesser
|
||
|
||
- **Årlig budsjettcyklus:** Implementer cost forecasting basert på forventet query volume.
|
||
- **Cost allocation:** Tag resources per avdeling/prosjekt for intern budsjettallokering.
|
||
- **CapEx vs OpEx:** RAG query-kostnader er typisk OpEx (pay-as-you-go). Vurder reserved instances for forutsigbare workloads.
|
||
|
||
### Anskaffelsesprosesser
|
||
|
||
- **Ramme-avtaler:** Bruk statlige rammeavtaler for Azure-tjenester (SSA-avtaler).
|
||
- **Cost transparency:** Dokumenter kostnadsdrivere for å rettferdiggjøre AI-investeringer i politiske prosesser.
|
||
- **Vendor lock-in mitigation:** Design for portability mellom search providers (Azure AI Search, Elasticsearch, etc.).
|
||
|
||
## Kostnad og lisensiering
|
||
|
||
### Azure OpenAI Pricing (Estimated NOK)
|
||
|
||
**Baseline (Modellkunnskap):** Priser per 1M tokens (omregnet til NOK, februar 2026):
|
||
|
||
| Model | Input (NOK/1M tokens) | Output (NOK/1M tokens) | Best For |
|
||
|-------|----------------------|------------------------|----------|
|
||
| **gpt-35-turbo** | 5.5 | 17 | Høyvolum, cost-sensitive |
|
||
| **gpt-35-turbo-16k** | 33 | 44 | Moderate volumer, lenger context |
|
||
| **gpt-4-0613** | 330 | 660 | Kompleks reasoning, lav volum |
|
||
| **gpt-4-turbo** | 110 | 330 | Balansert cost/quality |
|
||
| **gpt-4o** | 55 | 165 | Multimodal (text only i On Your Data) |
|
||
|
||
### Embeddings Pricing
|
||
|
||
**Verified (Microsoft Learn):** text-embedding-ada-002 (kun supported model for On Your Data vector search):
|
||
- **Cost:** ~1.1 NOK per 1M tokens
|
||
- **Use case:** Vector search, semantic similarity
|
||
- **Optimization:** Cache embeddings for static documents, ikke regenerer.
|
||
|
||
### Azure AI Search Pricing Summary
|
||
|
||
**Verified (Microsoft Learn):**
|
||
- **Fixed cost:** Search tier (Basic: ~1200 NOK/mnd, S1: ~2800 NOK/mnd, S2: ~11200 NOK/mnd)
|
||
- **Variable cost:** Semantic ranking per query (progressiv pricing etter 1000 queries/mnd)
|
||
- **No query-based charges:** Ikke per-query kostnad for keyword/vector search utover tier-kostnad.
|
||
|
||
### Optimaliseringstips
|
||
|
||
1. **Model switching:** Bruk GPT-3.5-Turbo for 80% av queries, spare 70-80% på LLM-kostnader.
|
||
2. **Batch processing:** Hvis mulig, batch lignende queries for å redusere overhead.
|
||
3. **Reserved capacity:** Vurder reserved capacity for Azure OpenAI ved forutsigbare workloads (20-40% rabatt).
|
||
4. **Spot instances:** Ikke tilgjengelig for Azure OpenAI, men kan brukes for surrounding infrastructure.
|
||
5. **Data lifecycle:** Slett gamle indexes/caches for å redusere storage costs.
|
||
|
||
### Total Cost of Ownership (TCO) Eksempel
|
||
|
||
**Scenario:** 10 000 queries/måned, hybrid search, GPT-3.5-Turbo
|
||
|
||
| Komponent | Beregning | NOK/måned |
|
||
|-----------|-----------|-----------|
|
||
| Azure AI Search (S1) | 1 tier | 2 800 |
|
||
| LLM tokens (avg 5800/query) | 10K queries × 5800 tokens × 0.011 NOK/1K | 638 |
|
||
| Embeddings | 10K queries × 50 tokens × 0.0011 NOK/1K | 0.55 |
|
||
| Semantic ranking | 9K queries @ ~0.5 NOK/query | 4 500 |
|
||
| Storage (caching) | 50 GB @ 2 NOK/GB | 100 |
|
||
| **Total** | | **8 038** |
|
||
|
||
**Optimalisert scenario (samme kvalitet):**
|
||
|
||
| Endring | Besparelse |
|
||
|---------|------------|
|
||
| Caching (50% hit rate) | -4 269 NOK (50% av LLM + semantic) |
|
||
| Keyword search for 30% av queries | -1 350 NOK |
|
||
| Reduser topNDocuments til 3 | -191 NOK |
|
||
| **Ny total** | **2 228 NOK/måned** |
|
||
| **Besparelse** | **72%** |
|
||
|
||
## For arkitekten (Cosmo)
|
||
|
||
### Spørsmål å Stille Kunden
|
||
|
||
1. **Query volume:** "Hvor mange queries forventer dere per dag/måned i produksjon? Hva er peak vs. average?"
|
||
2. **Query complexity:** "Er spørsmålene typisk enkle fakta-oppslag, eller komplekse multi-hop reasoning?"
|
||
3. **Data characteristics:** "Hvor ofte endres datakilden? Kan vi cache aggressivt?"
|
||
4. **Quality requirements:** "Hva er akseptabel presisjon? Kan vi trade noe kvalitet for kostnad?"
|
||
5. **Budget constraints:** "Hva er månedsbudsjettet for RAG-kostnader? Er dette CapEx eller OpEx?"
|
||
6. **Compliance:** "Må data holdes i Norge/EU? Kan vi cache queries med PII?"
|
||
7. **SLA:** "Hva er akseptabel latency? Kan vi bruke async processing?"
|
||
8. **Monitoring:** "Har dere eksisterende Cost Management dashboards? Hvem eier budsjettet?"
|
||
|
||
### Fallgruver å Unngå
|
||
|
||
1. **Premature optimization:** Ikke optimaliser før du har baseline-metrics. Mål først, optimaliser deretter.
|
||
2. **Over-caching:** Caching av stale data kan gi feil svar. Sett riktig TTL basert på data freshness.
|
||
3. **Under-provisioned search:** Basic tier for produksjon fører til throttling og dårlig UX.
|
||
4. **Ignoring conversation history costs:** Lange samtaler kan eksplodere token usage. Truncate aggressivt.
|
||
5. **No cost attribution:** Manglende tagging gjør det umulig å spore kostnader per team/prosjekt.
|
||
6. **Wrong embedding model:** Bruk av andre embeddings enn text-embedding-ada-002 støttes ikke av On Your Data.
|
||
7. **Semantic ranking everywhere:** Bruk kun semantic ranking når keyword/vector search er utilstrekkelig.
|
||
8. **No monitoring:** Deploy uten Azure Monitor dashboards for cost/performance.
|
||
|
||
### Anbefalinger per Modenhetsnivå
|
||
|
||
**Nivå 1: Proof of Concept**
|
||
- Bruk Basic tier for Azure AI Search.
|
||
- GPT-3.5-Turbo for alle queries.
|
||
- Keyword search kun.
|
||
- Ingen caching (kompleksitet ikke verdt det).
|
||
- **Forventet kostnad:** 1 500-3 000 NOK/måned for <1000 queries.
|
||
|
||
**Nivå 2: Pilot/MVP**
|
||
- Oppgrader til S1 tier.
|
||
- Implementer enkel Redis cache for FAQ.
|
||
- Hybrid search for semantic queries.
|
||
- GPT-3.5-Turbo som default, GPT-4 for <10% komplekse queries.
|
||
- Azure Monitor dashboards.
|
||
- **Forventet kostnad:** 5 000-15 000 NOK/måned for 5K-20K queries.
|
||
|
||
**Nivå 3: Produksjon**
|
||
- S1/S2 tier basert på load testing.
|
||
- Semantic cache (embedding similarity).
|
||
- Tiered retrieval (keyword/vector/semantic based on query type).
|
||
- Model routing (GPT-3.5/GPT-4).
|
||
- Autoscaling for search replicas.
|
||
- Cost attribution per team.
|
||
- **Forventet kostnad:** 20 000-100 000 NOK/måned for 50K-500K queries.
|
||
|
||
**Nivå 4: Enterprise Scale**
|
||
- Multi-region deployment med load balancing.
|
||
- Advanced caching strategies (query rewriting, semantic cache).
|
||
- Agentic retrieval for komplekse scenarios.
|
||
- Reserved capacity for Azure OpenAI.
|
||
- Real-time cost anomaly detection.
|
||
- FinOps team ownership.
|
||
- **Forventet kostnad:** 100 000-1 000 000+ NOK/måned for millions of queries.
|
||
|
||
### Arkitekturmønster per Scenario
|
||
|
||
**Scenario A: FAQ Bot (høy repetisjon)**
|
||
- **Search:** Keyword only
|
||
- **Caching:** Aggressive (Redis, 80%+ hit rate)
|
||
- **Model:** GPT-3.5-Turbo
|
||
- **Cost reduction:** 60-80%
|
||
|
||
**Scenario B: Dokumentasjonssøk (moderat repetisjon)**
|
||
- **Search:** Hybrid (vector + keyword)
|
||
- **Caching:** Semantic cache (50% hit rate)
|
||
- **Model:** GPT-3.5-Turbo (90%), GPT-4 (10%)
|
||
- **Cost reduction:** 40-60%
|
||
|
||
**Scenario C: Kompleks analyse (lav repetisjon)**
|
||
- **Search:** Hybrid + Semantic
|
||
- **Caching:** Minimal (data freshness kritisk)
|
||
- **Model:** GPT-4 majority, GPT-4o for multimodal
|
||
- **Cost reduction:** 20-30% (via parameter tuning)
|
||
|
||
## Kilder og verifisering
|
||
|
||
### Microsoft Learn Sources
|
||
|
||
**Verified:**
|
||
1. [Plan and manage costs of an Azure AI Search service](https://learn.microsoft.com/en-us/azure/search/search-sku-manage-costs) - Comprehensive cost minimization strategies, tier pricing, indexing optimization.
|
||
2. [Azure OpenAI On Your Data - Token usage estimation](https://learn.microsoft.com/en-us/azure/foundry-classic/openai/concepts/use-your-data) - Exact token consumption per model, RAG pipeline breakdown, parameter impacts.
|
||
3. [RAG chunking phase - Understand chunking economics](https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/rag/rag-chunking-phase) - Cache-Aside pattern, cost factors for chunking strategies.
|
||
4. [Agentic retrieval in Azure AI Search - Pricing example](https://learn.microsoft.com/en-us/azure/search/agentic-retrieval-overview) - Detailed cost calculation for agentic retrieval with subqueries.
|
||
5. [Tips for better performance in Azure AI Search](https://learn.microsoft.com/en-us/azure/search/search-performance-tips) - Query design optimization, search tier switching, cost-performance balance.
|
||
6. [Retrieval-augmented Generation (RAG) in Azure AI Search](https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview) - RAG challenges, solution patterns, security, performance optimization.
|
||
7. [Scale OpenAI chat with Azure Container Apps](https://learn.microsoft.com/en-us/azure/developer/python/get-started-app-chat-scaling-with-azure-container-apps) - Load balancing architecture, TPM quota management, throttling mitigation.
|
||
|
||
**Baseline (Modellkunnskap):**
|
||
- NOK pricing conversions (USD to NOK estimates)
|
||
- FinOps best practices for cloud cost optimization
|
||
- General RAG architecture patterns
|
||
|
||
### Konfidensnivå per Seksjon
|
||
|
||
| Seksjon | Konfidens | Kilde |
|
||
|---------|-----------|-------|
|
||
| Token consumption table | **Verified** | Microsoft Learn official data |
|
||
| Azure AI Search tier costs | **Baseline** | Converted from USD pricing |
|
||
| Semantic ranking costs | **Verified** | Microsoft Learn |
|
||
| RAG pipeline breakdown | **Verified** | Microsoft Learn |
|
||
| Caching patterns | **Verified** | Microsoft Learn (Cache-Aside) |
|
||
| Vector compression | **Verified** | Microsoft Learn (92.5% reduction) |
|
||
| Agentic retrieval costs | **Verified** | Microsoft Learn example calculation |
|
||
| Model routing patterns | **Baseline** | Industry best practices |
|
||
| FinOps recommendations | **Baseline** | General cloud FinOps |
|
||
|
||
---
|
||
|
||
**Oppdateringsfrekvens:** Dette dokumentet bør oppdateres kvartalsvis eller ved store endringer i Azure pricing/features.
|