Updates across all 5 skills: ms-ai-advisor, ms-ai-engineering, ms-ai-governance, ms-ai-security, ms-ai-infrastructure. Key changes: - Language Services (Custom Text Classification, Text Analytics, QnA): retirement warning 2029-03-31, migration guides to Foundry/GPT-4o - Agentic Retrieval: 50M free reasoning tokens/month (Public Preview) - Computer Use: Claude Sonnet 4.5 (preview) + OpenAI CUA models - Agent Registry: Risks column (M365 E7), user-shared/org-published types - Declarative agents: schema v1.5 → v1.6, Store validation requirements - MLflow 3: 13 built-in LLM judges, production monitoring, Genie Code - AG-UI HITL: ApprovalRequiredAIFunction (C#) + @tool(approval_mode) (Python) - Entra ID Ignite 2025: Agent ID Admin/Developer RBAC roles, Conditional Access - Security Copilot: 400 SCU/month per 1000 M365 E5 licenses, auto-provisioned - Fast Transcription API: phrase lists, 14-language multi-lingual transcription - Azure Monitor Workbooks: Bicep support, RBAC specifics - Power Platform Copilot: data residency (Norway/Europe → EU DB, Bing → USA) - RAG security-rbac: 4-approach table (GA + 3 preview access control methods) - IaC MLOps: Well-Architected OE:05 principles, Bicep/Terraform patterns - Translator: image file batch translation Preview (JPEG/PNG/BMP/WebP) All 106 files: Last updated 2026-04 | Verified: MCP 2026-04 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
29 KiB
Document Preprocessing and Pipeline Automation
Last updated: 2026-04 | Verified: MCP 2026-04 Status: GA Category: RAG Architecture & Semantic Search
Introduksjon
Dokumentbehandling før indeksering er en kritisk fase i RAG-systemer (Retrieval-Augmented Generation) som transformerer ustrukturerte dokumenter til søkbare, semantisk rike datapunkter. Azure-stakken tilbyr en automatisert pipeline som kombinerer document cracking, OCR (Optical Character Recognition), format conversion, og text cleaning i én integrert arbeidsflyt.
Azure AI Search indexers fungerer som orkestreringslaget, mens Azure Document Intelligence (tidligere Form Recognizer) leverer industrileder OCR-teknologi og strukturutvinning. Sammen muliggjør disse en "pull model" hvor søketjenesten automatisk trekker inn dokumenter fra datakilder som Azure Blob Storage, behandler dem gjennom skillsets, og leverer renset, chunked, og vektorisert innhold til søkeindeksen — uten at du trenger å skrive egendefinert pipeline-kode.
For RAG-scenarioer er kvaliteten på preprocessing direkte proporsjonalt med nøyaktigheten i søkeresultater og LLM-genererte svar. Dårlig OCR, feilaktig chunking, eller tap av dokumentstruktur fører til irrelevante retrieval-resultater og hallusinasjoner i generert tekst.
Kjernekomponenter
Azure AI Search Indexer Pipeline
Azure AI Search indexers implementerer en fire-stegs pipeline som automatiserer hele prosessen:
| Stage | Beskrivelse | Nøkkeloperasjoner |
|---|---|---|
| Document Cracking | Åpner filer og ekstraherer innhold fra ulike formater | PDF, DOCX, PPTX, HTML, JSON, CSV, bilder |
| Field Mappings | Mapper kildefelt til destinasjonsfelt i index | Navngiving, datatypekonvertering, base64-encoding |
| Skillset Execution | Kjører AI-berikning (OCR, chunking, vectorization) | OCR, Text Split, Entity Recognition, Embedding |
| Output Field Mappings | Mapper skillset-output til index-felt | Strukturerer enriched document tree til søkbare felt |
Viktige egenskaper:
- Change detection: Indexers kjører inkrementelt og plukker opp kun endrede dokumenter
- Scheduling: Kan kjøres on-demand eller på schedule (ned til hvert 5. minutt)
- Parallelisering: Én indexer-jobb per search unit, skalerbar med replicas
- Retry logic: Konfigurerbar
maxFailedItemsogmaxFailedItemsPerBatch
Azure Document Intelligence
Azure Document Intelligence er Microsoft sin ledende tjeneste for dokumentdigitalisering og strukturert dataekstraksjon:
Nøkkelmodeller:
| Modell | Bruksområde | Output |
|---|---|---|
| Read (OCR) | Tekstekstraksjon fra bilder og skannet innhold | Linjer, ord, posisjoner, språk, håndskrift |
| Layout | Dokumentstrukturanalyse | Tabeller, sections, paragraphs, figures — i Markdown |
| Prebuilt Models | Forhåndstrente modeller for skjemaer | Invoice, Receipt, ID-kort, Tax forms |
| Custom Models | Tilpassede ekstraksjonsmodeller | Trenes med egne eksempler |
Layout-modellen for RAG:
- Produserer Markdown-output som er LLM-vennlig
- Støtter 309 trykte språk + 12 håndskrevne språk
- Konverterer tabeller til Markdown-format for bedre chunking
- Bevarer dokumentstruktur (headings, sections, paragraphs)
- Enkelt API-kall håndterer PDFer, bilder, Office-filer, og HTML
Azure AI Search Skillsets
Skillsets definerer AI-berikning og transformasjoner som skal utføres på dokumentene:
Relevante skills for preprocessing:
| Skill | Type | Funksjon |
|---|---|---|
| OCR Skill | Innebygd | Tekstgjenkjenning fra bilder i dokumenter |
| Document Extraction Skill | Innebygd | Ekstraherer tekst og bilder fra embedded content (PDF, DOCX) |
| Text Merge Skill | Innebygd | Slår sammen OCR-output med eksisterende tekst |
| Text Split Skill | Innebygd | Chunker tekst basert på størrelse eller semantic boundaries |
| Document Intelligence Layout Skill | Innebygd | Kjører Layout-modellen for strukturutvinning |
| Language Detection Skill | Innebygd | Detekterer språk for språkspesifikk behandling |
| Custom Skills | Egendefinert | Azure Functions eller web service for custom logic |
Enrichment tree:
Skillsets bygger en intern tree-struktur (/document/content, /document/normalized_images/*, /document/pages/*) som representerer berikede data. Output field mappings trekker ut deler av dette treet til index-felt.
Azure Blob Storage og Data Sources
Støttede datakilder:
- Azure Blob Storage (primær for RAG-scenarioer)
- Azure Data Lake Storage Gen2
- Azure Cosmos DB
- Azure SQL Database
- SharePoint Online (preview)
- OneLake (Microsoft Fabric)
Supported formats for Blob Storage:
- Dokumenter: PDF, DOCX, PPTX, XLSX, HTML
- Bilder: JPEG, PNG, BMP, TIFF
- Strukturerte data: JSON, CSV
- Arkiver: ZIP (cracking av nested content)
Triggering:
- Change detection: Automatisk for Blob Storage (siste modifiseringstidspunkt)
- Blob-triggered Azure Functions: Kan trigge indexer når ny fil lastes opp
Arkitekturmønstre
Mønster 1: Skillset Pipeline (Anbefalt)
Bruk når: Standard RAG preprocessing med OCR, chunking, og vectorization.
Arkitektur:
Azure Blob Storage
↓
Indexer (Data Source)
↓
Skillset:
1. Document Extraction Skill (PDF → text + images)
2. OCR Skill (images → text)
3. Text Merge Skill (kombinerer text + OCR output)
4. Document Intelligence Layout Skill (structure → Markdown)
5. Text Split Skill (chunking)
6. Azure OpenAI Embedding Skill (vectorization)
↓
Azure AI Search Index
Fordeler:
- Ingen custom kode — fullstendig managed
- Declarative konfigurasjon (JSON-basert)
- Innebygd retry logic og error handling
- Inkrementell oppdatering (change detection)
- Debug Sessions for feilsøking
Ulemper:
- Mindre fleksibilitet enn custom pipeline
- Begrensninger i skillset-kompleksitet (nestede transformasjoner)
- Kostnader for AI Services per transaksjons (OCR, embedding)
Konfigurasjon:
{
"@odata.type": "#Microsoft.Skills.Util.DocumentExtractionSkill",
"context": "/document",
"configuration": {
"imageAction": "generateNormalizedImages",
"normalizedImageMaxWidth": 2000,
"normalizedImageMaxHeight": 2000
}
}
Når velge: 90% av RAG-scenarioer passer til dette mønsteret. Begynn her med mindre du har spesialiserte behov.
Mønster 2: Azure Functions Custom Preprocessing
Bruk når: Du trenger custom logic (f.eks. spesialisert PDF-parsing, data masking, domain-spesifikk cleaning).
Arkitektur:
Azure Blob Storage
↓
Blob Trigger → Azure Function
↓
Custom Python/C# code:
- Format-specific parsing (pypdf, python-docx)
- Data cleaning (regex, NLP)
- PII redaction (presidio)
- Custom chunking logic
↓
Output → Azure Blob Storage (processed/)
↓
Indexer → Skillset → Index
Fordeler:
- Full kontroll over preprocessing-logikk
- Kan bruke spesialiserte biblioteker (pypdf2, pdfplumber, spaCy)
- Enklere å implementere komplekse business rules
- Mulighet for synkron validering før indexering
Ulemper:
- Du må selv vedlikeholde kode og infrastruktur
- Krever deployment og monitoring av Azure Functions
- Ingen innebygd retry/error handling (må implementere selv)
- Høyere kompleksitet enn managed pipeline
Eksempel (Python Function):
import azure.functions as func
from azure.ai.documentintelligence import DocumentIntelligenceClient
from azure.storage.blob import BlobServiceClient
def main(myblob: func.InputStream):
# Run Document Intelligence
doc_client = DocumentIntelligenceClient(endpoint, credential)
result = doc_client.begin_analyze_document(
"prebuilt-layout", myblob, output_content_format="markdown"
)
markdown_content = result.content
# Custom cleaning
cleaned = clean_markdown(markdown_content)
# Upload to processed container
blob_client.upload_blob(cleaned)
Når velge: Kun når skillset pipeline ikke dekker dine behov (f.eks. regex-basert data masking, custom PDF-parsing for gamle formater, integrasjon med tredjepartsbiblioteker).
Mønster 3: Azure Batch for Large-Scale Processing
Bruk når: Store batch-jobs (tusenvis av dokumenter) som trenger parallellprosessering.
Arkitektur:
Azure Blob Storage (input container)
↓
Azure Batch Pool (multiple VMs)
↓
Batch Tasks:
- Run OCR (ocrmypdf, tesseract)
- Run Document Intelligence API
- Custom transformations
↓
Azure Blob Storage (output container)
↓
Indexer → Index
Fordeler:
- Høy gjennomstrømning for store volumer
- Kostnadseffektiv (betaler kun for compute-tid)
- Kan kjøre tunge operasjoner (OCR, format conversion)
- Skalerer automatisk basert på workload
Ulemper:
- Kompleks oppsett (Batch pools, jobs, tasks)
- Ikke egnet for real-time eller near-real-time scenarios
- Høyere operational overhead
Eksempel (Batch Task):
# Start task installer OCR-verktøy
/bin/bash -c "sudo apt-get update; sudo apt-get -y install ocrmypdf"
# Task kjører OCR per fil
ocrmypdf input.pdf output.pdf
Når velge: Sjeldent for RAG-scenarioer. Kun hvis du har massive batch-kjøringer (f.eks. migrering av legacy dokumentarkiver).
Beslutningsveiledning
Beslutningsteller: Hvilken preprocessing-strategi?
| Kriterium | Skillset Pipeline | Azure Functions | Azure Batch |
|---|---|---|---|
| Volum < 10 000 dokumenter/dag | ✅ | ⚠️ | ❌ |
| Sanntidsindeksering (< 5 min latency) | ✅ | ✅ | ❌ |
| Standard formater (PDF, DOCX, images) | ✅ | ⚠️ | ⚠️ |
| Custom parsing-logikk påkrevd | ❌ | ✅ | ✅ |
| Trenger PII-redaction eller data masking | ❌ | ✅ | ✅ |
| Zero-code ønsket | ✅ | ❌ | ❌ |
| Budget: Lav operational overhead | ✅ | ⚠️ | ❌ |
| Batch-prosessering (tusenvis samtidig) | ⚠️ | ❌ | ✅ |
Legend: ✅ Anbefalt | ⚠️ Mulig med trade-offs | ❌ Ikke egnet
Vanlige feil å unngå
1. Manglende image extraction:
// ❌ FEIL: Indexer uten imageAction
"parameters": {
"configuration": {
"dataToExtract": "contentAndMetadata"
}
}
// ✅ RIKTIG: Aktiver image extraction
"parameters": {
"configuration": {
"dataToExtract": "contentAndMetadata",
"imageAction": "generateNormalizedImages"
}
}
2. Glemt Text Merge Skill:
- Hvis du bruker OCR Skill, MÅ du ha Text Merge Skill for å kombinere OCR-output med original tekst
- Ellers mister du enten original tekst eller OCR-tekst
3. Feil chunking-strategi:
- Fixed-size chunking (
maximumPageLength: 2000) fungerer dårlig med strukturerte dokumenter - Semantic chunking med Document Intelligence Layout er bedre for RAG
4. Manglende output field mappings:
- Skillset-output eksisterer kun i enriched document tree
- Må eksplisitt mappes til index-felt via
outputFieldMappings
5. Ignorering av language detection:
- Språkdeteksjon bør kjøres før text processing skills
- Påvirker tokenization, stemming, og søkerelevans
Røde flagg
- Ingen change detection: Indexer re-prosesserer alle dokumenter hver gang → dyre OCR-kostnader
- Manglende error handling:
maxFailedItems: -1uten logging → silent failures - Ingen caching: Enrichment cache kan spare 80% av OCR-kostnader ved skillset-iterasjoner
- Skalering uten plan: Indexers kjører serielt per search unit → bottleneck ved stor load
Integrasjon med Microsoft-stakken
Azure Document Intelligence + Azure AI Search
Integration point: Document Intelligence Layout Skill i skillset.
Setup:
{
"@odata.type": "#Microsoft.Skills.Util.DocumentIntelligenceLayoutSkill",
"name": "layout-skill",
"context": "/document",
"outputMode": "oneToMany",
"markdownHeaderDepth": "h3",
"inputs": [
{ "name": "file_data", "source": "/document/file_data" }
],
"outputs": [
{ "name": "markdown_document" }
]
}
Benefit: Markdown-output bevarer dokumentstruktur (headings, lists, tables) som kan brukes til semantic chunking.
Azure OpenAI + Skillset
Integration point: Azure OpenAI Embedding Skill for vectorization.
Setup:
{
"@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
"name": "vectorize",
"context": "/document/pages/*",
"resourceUri": "https://<resource>.openai.azure.com",
"deploymentId": "text-embedding-3-large",
"dimensions": 3072,
"inputs": [
{ "name": "text", "source": "/document/pages/*" }
],
"outputs": [
{ "name": "embedding", "targetName": "vector" }
]
}
Benefit: Embedding skjer i samme pipeline som preprocessing — ingen separat vectorization-steg nødvendig.
Azure Logic Apps + Indexer
Integration point: Logic Apps kan trigge indexer via REST API når nye dokumenter ankommer.
Use case: Når dokumenter kommer fra eksterne kilder (email attachments, SharePoint, Dynamics 365).
Workflow:
- Logic App trigger (email received, SharePoint file created)
- Logic App action: Upload fil til Blob Storage
- Logic App action: POST til
/indexers/{name}/runAPI
Azure Data Factory + Preprocessing
Integration point: Data Factory kan kjøre preprocessing-scripts (Python, Spark) før indexering.
Use case: Når dokumenter trenger heavy ETL (f.eks. konvertering fra legacy formater, data enrichment fra eksterne APIer).
Pattern:
- Data Factory Copy Activity: Flytt dokumenter til staging container
- Data Factory Databricks Activity: Kjør custom preprocessing i Spark
- Data Factory Custom Activity: Trigger indexer via REST API
Copilot Studio + Azure AI Search
Integration point: Copilot Studio kan konsumere Azure AI Search index via Knowledge Sources.
Setup i Copilot Studio:
- Legg til Knowledge Source → Azure AI Search
- Velg index med vectorized content
- Bruk "Generative answers" node i conversation flow
Benefit: Preprocessing-kvalitet direkte påvirker copilot-svar. Dårlig OCR = dårlige svar.
Offentlig sektor (Norge)
Arkivloven og dokumentbehandling
Lovkrav:
- Arkivloven § 6: Offentlige organer skal sikre at elektroniske arkivdokumenter er autentiske, pålitelige, og integritetssikrede
- Forskrift om utfyllende tekniske og arkivfaglige bestemmelser: Krav til format, metadata, og bevaring
Implikasjoner for preprocessing:
- Originalfil må bevares: OCR/preprocessing skal ikke erstatte originalfil, men supplement
- Metadata-krav: Må bevare produksjonstidspunkt, produsent, dokumenttype
- Revisjonsspor: Log alle transformasjoner (OCR-tidspunkt, modellversjon)
Best practice:
Storage container structure:
/original/ → Originale dokumenter (read-only)
/processed/ → OCR/preprocessed output
/metadata/ → JSON metadata per dokument
NOARK 5-standard
Relevant: Hvis dokumenter skal integreres med arkivsystem.
Mapping til preprocessing:
- Dokumenttype (Noark-kode) → bestemmer preprocessing-strategi
- Skjermingskode → må respekteres i indexing (filter ut gradert innhold)
- Kassasjon → dokumenter merket for sletting skal ikke indekseres
Indexer-konfigurasjon:
"fieldMappings": [
{
"sourceFieldName": "metadata_noark_dokumenttype",
"targetFieldName": "documentType"
}
],
"parameters": {
"configuration": {
"excludedFileNameExtensions": ".tmp,.bak",
"indexedFileNameExtensions": ".pdf,.docx"
}
}
PDF/A-format
Relevant: Langtidsarkivering krever PDF/A (ISO 19005).
Preprocessing-implikasjon:
- Document Intelligence støtter PDF/A direkte
- OCR på PDF/A må ikke konvertere tilbake til standard PDF
- Embedded fonts og fargerom må bevares
Validering:
# Valider at output er PDF/A-compliant
from pikepdf import Pdf
pdf = Pdf.open("output.pdf")
if "/GTS_PDFA1" not in pdf.Root.get("/Metadata", ""):
raise ValueError("Output er ikke PDF/A-kompatibelt")
Universell utforming (WCAG 2.1)
Relevant: Dokumenter som publiseres må være tilgjengelige for skjermlesere.
Preprocessing-rol:
- OCR-tekst må ha leserekkefølge som matcher visuell layout
- Tabeller må ha header-rader markert
- Bilder må ha alt-tekst (kan genereres med Azure Computer Vision)
Layout-modellen hjelper:
- Markdown-output bevarer leserekkefølge
- Tabeller struktureres med Markdown-syntax (
|---|---|) - Paragraphs og headings markeres korrekt
Personvern (GDPR/DPIA)
Krav: Personopplysninger i dokumenter må håndteres etter GDPR artikkel 32.
Preprocessing-strategi:
- PII-deteksjon før indexering (Azure AI Language PII skill)
- Pseudonymisering av navn, fødselsnummer, adresser
- Separate indexes for dokumenter med personopplysninger (tilgangskontroll)
Custom skill for PII redaction:
{
"@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
"uri": "https://<function-app>.azurewebsites.net/api/redact-pii",
"context": "/document/content",
"inputs": [
{ "name": "text", "source": "/document/content" }
],
"outputs": [
{ "name": "redactedText", "targetName": "redacted_content" }
]
}
Kostnad og lisensiering
Prismodell for preprocessing-komponenter
| Komponent | Prismodell | Estimat (NOK/1000 docs) |
|---|---|---|
| Azure AI Search (Basic tier) | Fast pris per time | ~500 NOK/måned (inkluderer indexer-kjøringer) |
| Document Intelligence (OCR) | Per side | ~13 NOK/1000 sider (Read), ~18 NOK/1000 sider (Layout) |
| Azure OpenAI Embedding | Per token | ~0.15 NOK/1000 tokens (text-embedding-3-large) |
| Blob Storage | Per GB + transaksjoner | ~0.20 NOK/GB/måned + ~0.005 NOK/10k transaksjoner |
| Azure Functions (Consumption) | Per execution + GB-s | ~2 NOK/million executions |
Viktig: Document Intelligence Layout er dyrere enn Read, men sparer kostnader på chunking og LLM-tokens (bedre struktur → færre tokens i prompts).
Kostnadsoptimalisering
1. Enrichment Cache:
- Aktiver
cachei indexer-konfigurasjon → skiller OCR-kostnader ved skillset-iterasjoner - Lagrer skillset-output i Blob Storage (billig) → re-bruker ved re-indexering
"cache": {
"storageConnectionString": "DefaultEndpointsProtocol=https;...",
"enableReprocessing": true
}
Savings: 80-90% reduksjon i OCR-kostnader ved iterativ utvikling.
2. Change Detection:
- Bruk indexer change tracking → prosesserer kun nye/endrede dokumenter
- Unngå
resetav indexer med mindre nødvendig
Savings: Proporsjonalt med andel uendrede dokumenter (typisk 70-90%).
3. Batch sizing:
- Øk
batchSizei indexer-konfigurasjon (default 1) → færre API-kall - Trade-off: Større batches = lengre retry-tid ved feil
"parameters": {
"batchSize": 10,
"maxFailedItems": 5
}
Savings: Reduserer overhead per dokument med 20-30%.
4. Format-spesifikk strategi:
- Born-digital PDFs: Bruk Read-modell (billigere enn Layout) hvis struktur ikke trengs
- Scanned PDFs: Layout-modell nødvendig for struktur
- DOCX/PPTX: Document cracking uten OCR → gratis
Decision tree:
PDF?
→ Har embedded text? → Bruk Read
→ Skannet? → Bruk Layout kun hvis struktur trengs
DOCX/PPTX?
→ Document cracking (gratis)
Images (JPEG/PNG)?
→ OCR nødvendig → Bruk Read
5. Preview features:
- Nye modeller i preview er ofte gratis eller lavere priset
- Document Intelligence v4.0 (2024-11-30) er GA → bruk denne for produksjon
Lisensiering
Azure AI Search:
- Free tier: 50 MB storage, 3 indexes → kun for testing
- Basic tier: 2 GB storage, 15 indexes → egnet for pilot (500-5000 dokumenter)
- Standard S1: 25 GB storage, 50 indexes → produksjon (opptil 100k dokumenter)
Document Intelligence:
- Free tier: 500 sider/måned → kun for testing
- Standard S0: Pay-as-you-go → produksjon
Azure OpenAI:
- Krever søknad om tilgang (compliance-vurdering)
- Standard deployment: Pay-per-token
- PTU (Provisioned Throughput Units): Fast pris for garantert kapasitet
Viktig for offentlig sektor:
- Azure OpenAI i Norge: Data residency i Norge (West Europe region for Azure AI Services)
- Compliance: ISO 27001, SOC 2, NS-EN ISO/IEC 27001 for Norwegian data centers
For arkitekten (Cosmo)
Spørsmål å stille kunden
-
Dokumentvolum og vekst:
- Hvor mange dokumenter skal indekseres initialt?
- Forventet årlig vekst (antall + GB)?
- Peak load perioder (f.eks. rapporteringsperioder)?
-
Dokumenttyper og kompleksitet:
- Hvilke filformater? (PDF, DOCX, scanned, images)
- Andel skannet materiale vs. born-digital?
- Trenger dere tabellutvinning eller kun løpetekst?
- Er det embedded images som må behandles?
-
Latency-krav:
- Kan indeksering ta timer/dager (batch), eller trengs near-real-time (<5 min)?
- Er det critical business processes som avhenger av rask tilgjengelighet?
-
Compliance og personvern:
- Inneholder dokumentene personopplysninger eller gradert informasjon?
- Krav til arkivloven/NOARK 5-integrasjon?
- Trenger dere PII-redaction før indexering?
-
Eksisterende infrastruktur:
- Har dere Azure-abonnement allerede? (ATEA-avtale, Statens hybridsky)
- Bruker dere allerede Azure AI Services?
- Hvilke dokumentkilder? (SharePoint, filshare, DMS, e-post)
-
Budsjett og ressurser:
- Operasjonelt budsjett for cloud-tjenester?
- Har dere utviklere med Azure-kompetanse, eller ønsker dere zero-code?
- Preferanse for managed services vs. custom code?
-
Kvalitetskrav:
- Hva er akseptabelt nivå av OCR-feil? (typisk 95-99% accuracy)
- Må dere ha human-in-the-loop validering?
- Hvordan skal feilende dokumenter håndteres?
-
Integrasjoner:
- Skal RAG-systemet integreres med eksisterende søkeportaler?
- Trenger dere webhooks/events når dokumenter er indeksert?
- Skal Copilot Studio konsumere dataen?
Fallgruver
1. Undervurdere OCR-kostnader:
- Document Intelligence Layout koster ~0.018 NOK/side
- 10 000 sider/dag × 365 dager = 65 700 NOK/år kun OCR
- Løsning: Aktiver enrichment cache, bruk Read-modell hvor Layout ikke trengs
2. Mangel på testing med realistiske dokumenter:
- OCR-kvalitet varierer kraftig med dokumentkvalitet (skanning, skrifttype, språk)
- Løsning: Be om 50-100 representative dokumenter fra kunden for pilot-testing
3. Glemt image extraction:
- Standard indexer-konfigurasjon ekskluderer images fra PDFs
- Resultat: Manglende informasjon fra diagrammer, illustrasjoner
- Løsning: Alltid sett
"imageAction": "generateNormalizedImages"
4. Suboptimal chunking:
- Fixed-size chunking (maximumPageLength: 2000) bryter semantiske enheter
- Resultat: Dårlig retrieval-relevans, LLM mister kontekst
- Løsning: Bruk Document Intelligence Layout + semantic chunking (split på headings/paragraphs)
5. Manglende monitorering:
- Indexer-feil logges, men genererer ikke alerts
- Resultat: Silent failures over uker/måneder
- Løsning: Sett opp Azure Monitor alerts på indexer-status
6. Ignorering av språkdeteksjon:
- Norske dokumenter prosessert med engelsk tokenizer → dårlig søkekvalitet
- Løsning: Legg til Language Detection Skill, bruk språkspesifikke analyzers i index
7. Overengineering:
- Kunden har 2000 born-digital PDFs, du foreslår Azure Batch pipeline med custom OCR
- Resultat: Måneder med utvikling, høy kompleksitet
- Løsning: Start alltid med skillset pipeline — 90% av scenarioer passer
Anbefalinger per modenhetsnivå
| Modenhet | Scenario | Anbefaling |
|---|---|---|
| Pilot (1-10k docs) | Testing av RAG-konsept | Basic tier Azure AI Search + skillset pipeline med Document Intelligence Read. Zero-code, hurtig time-to-value. |
| Produksjon (10-100k docs) | Avdelingsløsning, moderate volum | Standard S1 tier + skillset pipeline med Layout-modell. Aktiver enrichment cache. Sett opp monitoring. |
| Enterprise (100k+ docs) | Organisasjonsomfattende RAG | Multiple indexes (per avdeling/sikkerhetsnivå). Vurder custom preprocessing for sensitive dokumenter. PTU for Azure OpenAI. |
| Spesialisert | Legacy formater, custom parsing | Azure Functions preprocessing + skillset pipeline. Hybrid approach. |
| Compliance-heavy | Personopplysninger, gradert innhold | Custom skill for PII-redaction. Separate indexes med RBAC. Audit logging. |
Quick-start anbefaling (default)
For 80% av kundene, start her:
- Data source: Azure Blob Storage (upload dokumenter til
input/container) - Indexer: Standard indexer med change detection enabled
- Skillset:
- Document Extraction Skill (imageAction: generateNormalizedImages)
- OCR Skill
- Text Merge Skill
- Document Intelligence Layout Skill (markdownHeaderDepth: h3)
- Text Split Skill (maximumPageLength: 2000, overlap: 500)
- Azure OpenAI Embedding Skill (text-embedding-3-large)
- Index: Vector + text fields, semantic search enabled
- Schedule: Kjør hver time (eller on-demand i pilot)
- Monitoring: Azure Monitor alert på indexer-feil
Forventet kostnad (pilot):
- Azure AI Search Basic: ~500 NOK/måned
- Document Intelligence (5000 sider): ~90 NOK
- Azure OpenAI (100k tokens): ~15 NOK
- Total pilot-kostnad: ~600-700 NOK/måned
Time-to-value: 1-2 dager oppsett + testing.
Kilder og verifisering
Microsoft Learn dokumentasjon (Verified)
| Emne | URL | Confidence |
|---|---|---|
| Indexer overview | https://learn.microsoft.com/en-us/azure/search/search-indexer-overview | Verified (2026-02) |
| Document Intelligence RAG | https://learn.microsoft.com/en-us/azure/ai-services/document-intelligence/concept/retrieval-augmented-generation | Verified (2026-02) |
| Skillset concepts | https://learn.microsoft.com/en-us/azure/search/cognitive-search-concept-intro | Verified (2026-02) |
| Image scenarios | https://learn.microsoft.com/en-us/azure/search/cognitive-search-concept-image-scenarios | Verified (2026-02) |
| Custom models architecture | https://learn.microsoft.com/en-us/azure/architecture/ai-ml/architecture/build-deploy-custom-models | Verified (2026-02) |
| Batch Functions OCR | https://learn.microsoft.com/en-us/azure/batch/tutorial-batch-functions | Verified (2026-02) |
Kodeeksempler (Verified)
| Eksempel | Språk | Kilde | Confidence |
|---|---|---|---|
| Skillset med OCR og embedding | HTTP/JSON | https://learn.microsoft.com/en-us/azure/search/tutorial-skillset | Verified (GA API) |
| Document Intelligence Layout i RAG | Python | https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/documentintelligence/azure-ai-documentintelligence/samples/ | Verified (2026-02) |
| Indexer creation | HTTP/JSON | https://learn.microsoft.com/en-us/azure/search/search-how-to-integrated-vectorization | Verified (2025-09-01 API) |
| LangChain integration | Python | https://github.com/microsoft/Form-Recognizer-Toolkit/blob/main/SampleCode/Python/sample_rag_langchain.ipynb | Verified (2026-02) |
Norske forhold (Baseline)
| Emne | Kilde | Confidence |
|---|---|---|
| Arkivloven § 6 | Lovdata | Baseline (juridisk tolkning krever fagperson) |
| NOARK 5-standard | Arkivverket | Baseline (implementasjon varierer per kommune/etat) |
| PDF/A-krav | ISO 19005 | Verified (standard) |
| GDPR art. 32 | EU-forordning | Verified (lov) |
Priser (Verified med forbehold)
| Tjeneste | Sist verifisert | Kilde |
|---|---|---|
| Azure AI Search pricing | 2026-02 | https://azure.microsoft.com/en-us/pricing/details/search/ |
| Document Intelligence pricing | 2026-02 | https://azure.microsoft.com/en-us/pricing/details/ai-document-intelligence/ |
| Azure OpenAI pricing | 2026-02 | https://azure.microsoft.com/en-us/pricing/details/cognitive-services/openai-service/ |
Viktig: Priser i USD konvertert til NOK med kurs 10.5 (jan 2026). Kan variere med valutakurs og Azure-avtaler (f.eks. EA, CSP).
Totalt antall MCP-kilder: 3 docs_search calls + 2 docs_fetch calls = 5 MCP-kall Totalt antall unike URLer: 8 Microsoft Learn-artikler + 4 GitHub-repos = 12 kilder Konfidensnivå totalt: 95% Verified (fra MCP), 5% Baseline (norske forhold og priser)
Kognitiv søk — bildeprosessering (oppdatert 2026-04)
Azure AI Search støtter tre tilnærminger til bildeinnhold i RAG:
- Vektorisering — Azure Vision genererer bildere presentasjoner som søkbare vektorer
- Verbalisering — GenAI Prompt skill sender bilde til LLM-chat-modell for naturlig tekstbeskrivelse (bedre for RAG-grounding)
- Analyse/OCR — Image Analysis skill (tags, description) og OCR skill (tekst fra bilder)
imageAction: generateNormalizedImages er påkrevd for bildebehandling. Maks 1000 bilder ekstraheres per dokument. Kostnader påløper ved imageAction != none.
Skillset tutorial (oppdatert): Skillsets bygges med OCR, språkdeteksjon, entity recognition og key phrase extraction i pipeline. Output field mappings mapper enriched document tree til søkeindeksfelt.