KB-currency refresh (medium priority, 2026-06-19) via /architect:kb-update. 74 medium-prioritets filer re-verifisert mot Microsoft Learn (MCP) — delegert til 15 parallelle Opus-subagenter (3 bølger) gruppert etter delt kilde, med disjunkte fil-sett. Verifisert i hovedkontekst (scope-sjekk + diff-review av de faktatunge gruppene + tester). Hovedendringer (faktuelle korreksjoner + currency): - Azure AI Search semantic ranker: TILGJENGELIG PÅ ALLE TIERS (også Free/Basic m/ gratis månedlig kvote) — gammel KB sa feilaktig "kun S1+". Korrigert i tier-tabell, anti-patterns og beslutningstabell (azure-ai-search-setup). - APIM score-threshold = DISTANSE (lavere = strengere): tuning-tabellen i rag-caching-optimization hadde retningen baklengs — invertert til korrekt. - Agentic retrieval GA/preview-nyanse presisert (hovedkontekst-korreksjon mot agentic-retrieval-how-to-migrate): GA via REST 2026-04-01 returnerer EKSTRAKTIV grounding (references + activity), IKKE syntetiserte svar. Answer synthesis, ikke-minimal reasoning effort (LLM query planning) og multi-turn messages forblir preview (2026-05-01-preview). Subagent hadde overforenklet til "hele kjernepipelinen GA"; rettet i agentic-rag-patterns + citation-tracking. - Copilot Studio modell-tabeller (platforms/copilot-studio): fjernet Claude Opus 4.5 + GPT-5.2 (borte fra kilde), lagt til Claude Sonnet 4.6/Opus 4.6 (GA), Opus 4.7 + Mistral Medium 3.5 (experimental); GPT-5 Reasoning/Auto = preview; A2A GA (apr 2026). - Computer Use (CUA): Copilot Studio GA 2026-05-07; 4 modeller m/ tier/status (OpenAI CUA + Sonnet 4.5 GA, Sonnet 4.6 + Opus 4.6 experimental); 5 credits/ steg standard, 15 premium; US-only region-krav FJERNET i GA-dok; Cloud PC pool + Hosted browser + bring-your-own-machine. - Azure AI Search REST API-versjoner bumpet: 2025-09-01 -> 2026-04-01 (stabil), 2025-11-01-preview -> 2026-05-01-preview (hybrid-search, rag-security-rbac, chunking). - Power Automate-integrasjon: trigger "Run a flow from Copilot" -> "When an agent calls the flow"; App Service innebygd MCP (preview) lagt til. - M365 Copilot-manifest v1.26 -> v1.28 (GA, mai) / v1.29 dokumentert (juni); "Tenant graph grounding" -> "Work IQ". - Speech fast transcription 2t/300MB -> 5t/500MB; multilingual 14 -> 15 locales (+ pt-BR). Content Understanding reasoning preview -> GA (v1.0, 2025-11-01). - Security Copilot E5 -> E5+E7. Død Databricks-URL ci-cd/best-practices -> ci-cd/flows. Prompt Flow retirement (2027-04-20 -> MAF) notert der den presenteres som go-forward. Gateway-topologi-tabell-feil rettet. - Alle 74 Last updated -> 2026-06-19. Discovery ikke kjørt (historisk kun Databricks-støy) -> 389-telling uendret, ingen resync. validate 239 PASS, kb-integrity 115/115 (262 orphan-warnings uendret), gitleaks clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
600 lines
28 KiB
Markdown
600 lines
28 KiB
Markdown
# Content Understanding - Multimodal Analysis and Video Intelligence
|
||
|
||
**Last updated:** 2026-06-19 | Verified: MCP 2026-06-19
|
||
**Status:** Preview (GA for core features, Limited Access for face description)
|
||
**Category:** Azure AI Services (Foundry Tools)
|
||
|
||
---
|
||
|
||
## Introduksjon
|
||
|
||
Azure AI Content Understanding er en generativ AI-tjeneste designet for å transformere ustrukturert multimodalt innhold – dokumenter, bilder, video og audio – til strukturert, maskinlesbar informasjon. Tjenesten kombinerer avansert innholdsekstraksjon med generative modeller for å skape skreddersydd metadata og innsikter på tvers av modaliteter.
|
||
|
||
For video- og audioanalyse opererer Content Understanding i to hovedfaser: **innholdsekstraksjon** (transcription, shot detection, keyframe extraction) og **feltekstraksjon** (custom fields, segmentering basert på generative modeller). Dette muliggjør alt fra RAG-optimaliserte workflows til detaljert media asset management og compliance-sjekk.
|
||
|
||
Tjenesten skiller seg fra Azure AI Video Indexer ved at den fokuserer på fleksibel, schema-drevet ekstraksjon med generative modeller, mens Video Indexer leverer et bredere spekter av pre-definerte AI-innsikter (face recognition, celebrity identification, content moderation, observed people detection). Content Understanding er ideell når du trenger tilpassede felt og segmenteringslogikk definert i naturlig språk, mens Video Indexer passer bedre for omfattende, predefinerte video-innsikter.
|
||
|
||
---
|
||
|
||
## Kjernekomponenter
|
||
|
||
### Støttede modaliteter
|
||
|
||
| Modalitet | Format-eksempler | Bruksområder |
|
||
|-----------|------------------|--------------|
|
||
| **Video** | MP4, AVI, MOV, MKV | Media asset management, advertising analysis, training videos |
|
||
| **Audio** | MP3, WAV, AAC, FLAC | Podcast transcription, call center analytics, audio content classification |
|
||
| **Dokumenter** | PDF, DOCX, XLSX, PPTX, HTML | Document intelligence, form processing, contract analysis |
|
||
| **Bilder** | JPEG, PNG, BMP, TIFF | Image classification, OCR, visual content analysis |
|
||
|
||
**Tekniske begrensninger (video/audio):**
|
||
- Frame sampling: ~1 FPS (raske bevegelser eller single-frame events kan gå tapt)
|
||
- Frame resolution: 512 × 512 px resize (små detaljer eller fjerne objekter kan bli utydelige)
|
||
- Audio: Kun tale transkriberes (musikk, lydeffekter, bakgrunnsstøy ignoreres)
|
||
|
||
### Prebuilt analyzers
|
||
|
||
| Analyzer ID | Formål | Output-format |
|
||
|-------------|--------|---------------|
|
||
| `prebuilt-videoSearch` | RAG-optimalisert video-analyse med markdown og JSON | Transcript (WEBVTT), keyframes, scene descriptions, segmentering |
|
||
| `prebuilt-videoAnalysis` | Generell video-metadata for asset management | JSON med visual + audio metadata |
|
||
| `prebuilt-documentSearch` | Dokument-ekstraksjon for RAG | Markdown med pages, tables, figures, paragraphs |
|
||
|
||
**Eksempel (prebuilt-videoSearch output):**
|
||
|
||
```markdown
|
||
# Video: 00:00.000 => 00:06.000
|
||
A lively room filled with people watching a sports event on television.
|
||
|
||
Transcript
|
||
|
||
WEBVTT
|
||
|
||
00:03.600 --> 00:06.000
|
||
<Speaker 1>Get new years ready.
|
||
|
||
Key Frames
|
||
- 00:00.600 
|
||
- 00:01.200 
|
||
```
|
||
|
||
### Custom analyzers
|
||
|
||
Definer egne feltschemaer og segmenteringslogikk for å trekke ut domene-spesifikk informasjon.
|
||
|
||
**Nøkkelegenskaper:**
|
||
- **Field extraction**: Strukturerte felt (string, array, object, enum) definert i JSON-schema
|
||
- **Custom segmentation**: Naturlig språk-beskrivelser av hvordan video skal segmenteres (nyhetssegmenter, kapitler, annonser)
|
||
- **Face description** (Limited Access): Ansiktsattributter (facial hair, expressions), identifisering av kjente personer
|
||
|
||
**Eksempel (custom analyzer config):**
|
||
|
||
```json
|
||
{
|
||
"config": {
|
||
"enableSegment": true,
|
||
"contentCategories": {
|
||
"news-story": {
|
||
"description": "Segment video based on each distinct news segment. Use timestamp to identify start/end, no overlap. Ignore ads.",
|
||
"analyzerId": "NewsAnalyzer"
|
||
}
|
||
},
|
||
"fieldSchema": {
|
||
"fields": {
|
||
"brandLogo": {
|
||
"type": "string",
|
||
"method": "generate",
|
||
"description": "Brand being promoted in the video. Include product name if available."
|
||
},
|
||
"sentiment": {
|
||
"type": "string",
|
||
"method": "classify",
|
||
"enum": ["Positive", "Neutral", "Negative"]
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### Ekstraherte elementer (audioVisual)
|
||
|
||
| Element | Audio | Video | Krever `returnDetails: true` |
|
||
|---------|-------|-------|------------------------------|
|
||
| Markdown content | ✓ | ✓ | Nei |
|
||
| Contents collection | ✓ | ✓ | Nei |
|
||
| Transcript phrases | ✓ | ✓ | Ja |
|
||
| Timing information | ✓ | ✓ | Nei |
|
||
| Key frames | ✗ | ✓ | Nei |
|
||
| Camera shots | ✗ | ✓ | Ja |
|
||
| Field extraction | ✓ | ✓ | Nei |
|
||
|
||
**Transcript phrases (JSON):**
|
||
|
||
```json
|
||
{
|
||
"transcriptPhrases": [
|
||
{
|
||
"speaker": "Speaker 1",
|
||
"startTimeMs": 280,
|
||
"endTimeMs": 3560,
|
||
"text": "Welcome to this first session",
|
||
"words": []
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
**Keyframes (JSON):**
|
||
|
||
```json
|
||
{
|
||
"keyFrameTimesMs": [660, 1320, 2970, 3927, 4884]
|
||
}
|
||
```
|
||
|
||
Keyframes er uniformt samplet fra hver camera shot, minimum én per shot (selv ved korte shots < 1 sekund). Deterministisk utvalg på tvers av kjøringer.
|
||
|
||
**Camera shots (JSON):**
|
||
|
||
```json
|
||
{
|
||
"cameraShotTimesMs": [2002, 22356, 26960, 53353]
|
||
}
|
||
```
|
||
|
||
Timestamps indikerer startpunktet for hver shot (unntatt første shot som alltid starter ved 0 ms). Detekterer abrupte og gradvise overganger.
|
||
|
||
---
|
||
|
||
## Arkitekturmønstre
|
||
|
||
### Mønster 1: RAG-optimalisert video-indexing
|
||
|
||
**Use case:** Gjøre video- og audio-innhold søkbart i RAG-workflows (chatbots, agent-systemer).
|
||
|
||
**Arkitektur:**
|
||
1. Last opp video/audio til Content Understanding med `prebuilt-videoSearch` analyzer
|
||
2. Tjenesten returnerer strukturert markdown (transcript + keyframes) og JSON (fields, segments)
|
||
3. Markdown + JSON lagres i Azure AI Search index med multimodal embeddings
|
||
4. RAG-systemet søker på tvers av tekst og visuelt innhold
|
||
|
||
**Fordeler:**
|
||
- Drop-in format for AI Search (ingen post-processing)
|
||
- Multimodal søk (tekst + bilde) i én pipeline
|
||
- Temporal context bevares (timestamps, keyframes)
|
||
|
||
**Ulemper:**
|
||
- Frame sampling (~1 FPS) kan miste raske handlinger
|
||
- Ikke egnet for real-time eller live video-analyse
|
||
- Krever Azure OpenAI/embedding-modeller for vektorisering
|
||
|
||
**Når bruke:** E-learning platforms, corporate training libraries, media archives, compliance video search.
|
||
|
||
---
|
||
|
||
### Mønster 2: Custom media asset management
|
||
|
||
**Use case:** Klassifisere og tagge stort video-library med domene-spesifikke kategorier (sport, nyheter, reklame).
|
||
|
||
**Arkitektur:**
|
||
1. Opprett custom analyzer med feltschema for `videoCategory`, `colorScheme`, `primaryTopic`, `brandPresence`
|
||
2. Aktiver `enableSegment: false` for hele-video-analyse
|
||
3. Batch-prosesser eksisterende video-bibliotek via REST API eller SDK
|
||
4. Lagre ekstraherte metadata i database/fabric for filtering og retrieval
|
||
|
||
**Fordeler:**
|
||
- Fleksibel feltdefinisjon i naturlig språk (ingen ML-trening)
|
||
- Støtter både klassifisering (enum) og generering (string)
|
||
- Confidence scores for kvalitetssikring
|
||
|
||
**Ulemper:**
|
||
- Generative modeller konsumerer tokens (kostnad skalerer med video-lengde og antall felt)
|
||
- Ikke real-time (asynkron long-running operation)
|
||
- Krever manuell validering av ekstraherte verdier for produksjonskritiske use cases
|
||
|
||
**Når bruke:** Broadcast media, advertising analysis, sports analytics, news archiving.
|
||
|
||
---
|
||
|
||
### Mønster 3: Compliance og brand safety screening
|
||
|
||
**Use case:** Skanne annonser/video-innhold for upassende innhold, konkurrent-merkevarer, eller regulatoriske krav.
|
||
|
||
**Arkitektur:**
|
||
1. Kombiner Content Understanding med Azure AI Content Safety (multimodal analysis)
|
||
2. Content Understanding ekstraherer `brandLogo`, `spokespersonName`, `productPlacement`
|
||
3. Content Safety analyserer visuelt innhold for harm categories (hate, violence, sexual)
|
||
4. Custom logic sammenligner ekstraherte felt mot whitelist/blacklist
|
||
|
||
**Fordeler:**
|
||
- Multimodal harm detection (tekst + bilde kombinert)
|
||
- Structured output for audit trails
|
||
- Integrasjon med Azure AI Services økosystem
|
||
|
||
**Ulemper:**
|
||
- Content Safety multimodal er limited til spesifikke regions (East US, West Europe)
|
||
- Ingen real-time screening (batch-orientert)
|
||
- False positives krever human-in-the-loop review
|
||
|
||
**Når bruke:** Ad network compliance, social media moderation, brand safety for advertisers.
|
||
|
||
---
|
||
|
||
## Beslutningsveiledning
|
||
|
||
### Når bruke Content Understanding vs. Video Indexer
|
||
|
||
| Kriterium | Content Understanding | Video Indexer |
|
||
|-----------|----------------------|---------------|
|
||
| **Custom field extraction** | ✅ Ja, via naturlig språk-schema | ❌ Nei, predefinerte insights |
|
||
| **RAG-optimalisert output** | ✅ Ja, markdown + JSON drop-in | ⚠️ Krever post-processing |
|
||
| **Face recognition** | ❌ Nei (kun face description med Limited Access) | ✅ Ja, celebrity + custom faces |
|
||
| **Custom segmentation** | ✅ Ja, NL-basert logic | ❌ Nei, predefinert scene detection |
|
||
| **Real-time analysis** | ❌ Nei (async batch) | ✅ Ja (live video streaming) |
|
||
| **Observed people tracking** | ❌ Nei | ✅ Ja (bounding boxes, clothing detection) |
|
||
| **Audio insights** | ⚠️ Transcript, diarization | ✅ Ja, keywords, emotions, topics, audio effects |
|
||
| **Pricing model** | Token-basert (generative models) | Page/minute-basert (predefined models) |
|
||
|
||
**Beslutningstre:**
|
||
|
||
```
|
||
Trenger du real-time analyse?
|
||
├─ Ja → Video Indexer (live streaming støtte)
|
||
└─ Nei → Trenger du custom fields definert i naturlig språk?
|
||
├─ Ja → Content Understanding
|
||
└─ Nei → Trenger du face recognition/celebrity identification?
|
||
├─ Ja → Video Indexer
|
||
└─ Nei → Trenger du RAG-optimalisert output uten post-processing?
|
||
├─ Ja → Content Understanding (prebuilt-videoSearch)
|
||
└─ Nei → Vurder begge basert på cost/features
|
||
|
||
```
|
||
|
||
### Vanlige feil
|
||
|
||
| Feil | Årsak | Løsning |
|
||
|------|-------|---------|
|
||
| **Manglende detaljer i transcript** | `returnDetails: false` i analyzer config | Sett `"returnDetails": true` for å få `transcriptPhrases`, `cameraShotTimesMs` |
|
||
| **Feil språk i transcript** | Multilingual transcription brukt på usupportert locale | Spesifiser språk eksplisitt (`"language": "nb-NO"`) eller bruk `"auto"` kun for supported locales |
|
||
| **Tomme custom fields** | Prompt-beskrivelse for vag eller motsier video-innhold | Iterer på field descriptions, test med sample videos, bruk `method: "classify"` + enum for standardiserte verdier |
|
||
| **Face description ikke tilgjengelig** | Limited Access feature, krever approval | Send Azure support request for å aktivere `disableFaceBlurring: true` |
|
||
| **Høy kostnad på lange videoer** | Generative models konsumerer tokens per frame + segment | Optimaliser med `enableSegment: false` for hele-video, reduser antall custom fields, bruk prebuilt analyzers hvor mulig |
|
||
|
||
### Røde flagg
|
||
|
||
- **Video > 2 timer:** Content Understanding er optimalisert for kortere videoer (ads, training, clips). For lang-format innhold (filmer, full-length shows), vurder Video Indexer.
|
||
- **Real-time krav:** Content Understanding er asynkron batch-prosessering. For live video, bruk Video Indexer real-time analysis.
|
||
- **Biometric data uten consent:** Face description krever Legal/Privacy review og brukersamtykke under GDPR/AI Act. Ikke aktiver uten juridisk godkjenning.
|
||
- **Mission-critical accuracy:** Generative modeller kan hallusinere. Krever human review for compliance/legal use cases.
|
||
|
||
---
|
||
|
||
## Integrasjon med Microsoft-stakken
|
||
|
||
### Azure AI Foundry
|
||
|
||
Content Understanding er en core Foundry service, tilgjengelig via:
|
||
- **Azure AI Foundry portal**: GUI for testing analyzers, viewing results
|
||
- **Foundry SDK** (Python, .NET): `ContentUnderstandingClient` klasse
|
||
- **REST API**: `POST /contentunderstanding/analyzers/{analyzerId}:analyze`
|
||
|
||
**Integrasjon med andre Foundry-tjenester:**
|
||
|
||
| Tjeneste | Integrasjonspunkt |
|
||
|----------|-------------------|
|
||
| **Azure OpenAI** | Generative modeller (GPT-4o, o1) for field extraction og segmentering |
|
||
| **Azure AI Speech** | Transcription engine (samme språkstøtte som Speech in Foundry Tools) |
|
||
| **Azure AI Vision** | Image analysis for keyframes (OCR, object detection) |
|
||
| **Azure Document Intelligence** | Document extraction for multimodal documents (PDF, DOCX) |
|
||
|
||
### Azure AI Search
|
||
|
||
**Multimodal search skillset:**
|
||
|
||
Content Understanding kan integreres som skill i Azure AI Search indexer pipeline via `Azure Content Understanding skill` (cognitive-search-skill-content-understanding).
|
||
|
||
**Sammenligning med Document Layout + Vision vectorization:**
|
||
|
||
| Komponent | Document Extraction skill | Document Layout skill | Content Understanding skill |
|
||
|-----------|---------------------------|------------------------|------------------------------|
|
||
| **Text location metadata** | Nei | Ja (single page) | Ja (cross-page) |
|
||
| **Image location metadata** | Ja (PDF only) | Ja (multi-format) | Ja (multi-format) |
|
||
| **Table extraction** | Nei | Nei | Ja (cross-page tables) |
|
||
| **Semantic chunking** | Nei (use Text Split skill) | Ja (paragraph boundaries) | Ja (semantic units) |
|
||
| **Supported formats** | PDF, images | PDF, DOCX, XLSX, PPTX | PDF, DOCX, XLSX, PPTX |
|
||
| **Pricing** | AI Search pricing | Document Intelligence pricing | Content Understanding pricing |
|
||
|
||
**Når bruke Content Understanding skill:**
|
||
- Krever cross-page table extraction (contracts, financial reports)
|
||
- Multimodal dokumenter med innebygde videoer/audio
|
||
- Trenger semantic chunking over paragraph-level chunking
|
||
|
||
### Microsoft Fabric
|
||
|
||
Ekstraherte metadata kan eksporteres til Fabric for:
|
||
- **Data lakehouse**: Strukturert lagring av video metadata
|
||
- **Power BI**: Dashboards for video analytics (views, sentiment, brand exposure)
|
||
- **Dataflows**: ETL-prosessering av ekstraherte felt
|
||
|
||
**Eksempel-workflow:**
|
||
1. Content Understanding → JSON output til Azure Blob Storage
|
||
2. Fabric dataflow leser JSON fra blob
|
||
3. Transformasjon til tabellformat (flate strukturer)
|
||
4. Lagre i Fabric lakehouse
|
||
5. Power BI rapport over video library insights
|
||
|
||
### Power Platform
|
||
|
||
**Power Automate:**
|
||
- Trigger: "When video uploaded to SharePoint/Blob"
|
||
- Action: Call Content Understanding REST API
|
||
- Action: Parse JSON response og lagre til Dataverse/SharePoint list
|
||
|
||
**Power Apps:**
|
||
- Custom connector for Content Understanding API
|
||
- Video metadata viewer app for content editors
|
||
|
||
**AI Builder:**
|
||
- Ingen direkte integrasjon (AI Builder fokuserer på structured data, forms, text)
|
||
- Bruk Content Understanding som preprocessing step før AI Builder models
|
||
|
||
---
|
||
|
||
## Offentlig sektor (Norge)
|
||
|
||
### GDPR og personvern
|
||
|
||
**Risikovurdering:**
|
||
|
||
| Feature | GDPR-risiko | Mitigering |
|
||
|---------|-------------|------------|
|
||
| **Transcript (speaker diarization)** | Moderat (personidentifisering via stemme) | Anonymiser speaker labels ("Speaker 1" vs. navn), lagre transkripsjon separert fra audio-fil |
|
||
| **Face description** | Høy (biometric data, Article 9) | Krever eksplisitt samtykke, DPIA, Legal review. Ikke aktiver uten godkjenning. |
|
||
| **Keyframes** | Lav-Moderat (kan inneholde personer) | Blur faces i keyframes hvis nødvendig (custom post-processing) |
|
||
| **Custom fields (names, roles)** | Høy hvis felt ekstraherer persondata | Definer klare data retention policies, tilgangskontroll, slettingsrutiner |
|
||
|
||
**Face description (Limited Access):**
|
||
- Krever Azure support request + justification
|
||
- Microsoft vurderer use case før godkjenning
|
||
- Må dokumentere legal basis (consent, public interest, legitimate interest)
|
||
- Under AI Act (EU): High-risk system hvis brukt til identifisering i offentlige rom
|
||
|
||
### Schrems II og datasuverenitet
|
||
|
||
Content Understanding er en Azure Foundry service, underlagt samme datasuverenitet-krav som andre Azure-tjenester.
|
||
|
||
**Data processing locations:**
|
||
- **EU-regioner:** West Europe, North Europe (data residency i EU)
|
||
- **Generative models (Azure OpenAI):** Kan prosesseres i US-regions (avhenger av OpenAI deployment)
|
||
|
||
**Anbefalinger:**
|
||
- Deploy Content Understanding resources i **Norway East** eller **West Europe** for EU data residency
|
||
- Verifiser at Azure OpenAI deployment også er i EU-region (eller bruk customer-managed keys + EU Boundary)
|
||
- For sensitive offentlige videoer: Vurder Azure Government Cloud (ikke tilgjengelig i Norge, men for US gov customers)
|
||
|
||
**Data retention:**
|
||
- Input-filer lagres ikke av tjenesten (kun transiently under prosessering)
|
||
- Output (JSON/markdown) returneres til customer storage (blob, AI Search index)
|
||
- Ingen logging av video-innhold i Microsoft telemetry (kun metadata som file size, duration)
|
||
|
||
### AI Act (EU)
|
||
|
||
Content Understanding faller inn under flere AI Act-kategorier:
|
||
|
||
| Use Case | AI Act Classification | Obligations |
|
||
|----------|----------------------|-------------|
|
||
| **Video surveillance (public spaces)** | High-risk (Annex III) | Conformity assessment, risk management, transparency, human oversight |
|
||
| **Emotion detection (face description)** | Prohibited (Article 5) hvis brukt til inferring emotions in workplace/education | Ikke bruk `faceSmilingFrowning` felt i HR/school contexts |
|
||
| **Content moderation** | High-risk hvis brukt til automated decision-making | Human review loop, appeal mechanism |
|
||
| **Media asset management** | Low-risk / minimal risk | Transparency notice (AI-generated metadata) |
|
||
|
||
**Compliance checklist:**
|
||
- [ ] DPIA utført hvis face description aktiveres
|
||
- [ ] Transparency notice til brukere om AI-genererte metadata
|
||
- [ ] Human-in-the-loop for high-risk decisions (content removal, compliance violations)
|
||
- [ ] Dokumentasjon av training data (for custom models, hvis relevant)
|
||
- [ ] Regular accuracy testing og bias monitoring
|
||
|
||
### Forvaltningsloven (Norge)
|
||
|
||
Hvis Content Understanding brukes i saksbehandling (f.eks. analyse av innsendte videoer i klagesaker):
|
||
|
||
**§ 11 (informasjonsplikt):**
|
||
- Informer sakspart om at video analyseres med AI
|
||
- Forklar hvilke metadata som ekstraheres (transcript, faces, sentiment)
|
||
- Gi rett til å motsette seg automatisert behandling
|
||
|
||
**§ 17 (begrunnelsesplikt):**
|
||
- Vedtak basert på AI-ekstraherte insights må begrunnes
|
||
- Ikke "systemet sa at videoen inneholder X" — menneskelig vurdering må dokumenteres
|
||
|
||
**Anbefalinger:**
|
||
- Bruk Content Understanding som beslutningsstøtte, ikke automatisert saksbehandling
|
||
- Lagre audit trail av hvilke felt som ble ekstrahert og hvordan de påvirket beslutning
|
||
- Tilby innsyn i ekstraherte metadata til sakspart
|
||
|
||
---
|
||
|
||
## Kostnad og lisensiering
|
||
|
||
### Prismodell
|
||
|
||
Content Understanding prises basert på **token consumption** for generative models + **content extraction** for audio/video processing.
|
||
|
||
**Komponenter:**
|
||
|
||
| Komponent | Prisingsmetrikk | Estimert kostnad (NOK, Feb 2026) |
|
||
|-----------|-----------------|-----------------------------------|
|
||
| **Content extraction (video)** | Per minute video | ~0.50 NOK/min |
|
||
| **Content extraction (audio)** | Per minute audio | ~0.30 NOK/min |
|
||
| **Field extraction (generative)** | Per 1000 tokens (input + output) | ~0.10 NOK/1K tokens (GPT-4o) |
|
||
| **Segmentation (generative)** | Per 1000 tokens | Inkludert i field extraction |
|
||
|
||
**Eksempel-beregning (5-minutters reklame-video):**
|
||
|
||
1. **Content extraction:** 5 min × 0.50 NOK = 2.50 NOK
|
||
2. **Keyframe extraction:** 5 frames/min × 5 min = 25 keyframes (inkludert i extraction)
|
||
3. **Transcript:** ~150 ord/min × 5 min = 750 ord ≈ 1000 tokens (inkludert i extraction)
|
||
4. **Field extraction (3 custom fields):**
|
||
- Input: 750 transcript tokens + 25 keyframes × 1000 tokens/image = 25,750 tokens
|
||
- Output: ~500 tokens (3 felt × ~150 tokens hver)
|
||
- Total: 26,250 tokens ≈ 26K tokens × 0.10 NOK/1K = 2.60 NOK
|
||
5. **Total:** 2.50 + 2.60 = **5.10 NOK per video**
|
||
|
||
**Prebuilt analyzers:**
|
||
- `prebuilt-videoSearch`: Lavere kostnad enn custom (færre tokens, optimaliserte prompts)
|
||
- Estimat: 60-70% av custom analyzer kostnad
|
||
|
||
### Optimaliseringstips
|
||
|
||
| Strategi | Besparelse | Trade-off |
|
||
|----------|------------|-----------|
|
||
| **Bruk prebuilt analyzers** | 30-40% lavere kostnad | Mindre fleksibilitet i output-format |
|
||
| **Disable segmentation** (`enableSegment: false`) | 20-30% lavere tokens | Ingen segment-level metadata |
|
||
| **Reduser antall custom fields** | Lineær besparelse per felt | Mindre granulær metadata |
|
||
| **Batch-prosessering** | Ingen direkte besparelse, men bedre ressursutnyttelse | Ingen real-time output |
|
||
| **Lower frame sampling** | Ikke konfigurerbart (fast ~1 FPS) | N/A |
|
||
| **Bruk AI Search skill** | AI Search absorber en del preprocessing-kostnad | Krever AI Search subscription |
|
||
|
||
### Lisensiering
|
||
|
||
Content Understanding er en **Azure Foundry Tools** tjeneste, inkludert i:
|
||
|
||
| Lisens | Inkludert | Begrensninger |
|
||
|--------|-----------|---------------|
|
||
| **Azure subscription (pay-as-you-go)** | Full tilgang | Kostnad per bruk (token-basert) |
|
||
| **Azure commitment (EA)** | Inkludert i Foundry commitment | Samme prising, men prepaid credits |
|
||
| **Free tier** | Ikke tilgjengelig | Krever betalt subscription |
|
||
|
||
**MCP-servere (for Claude Code):**
|
||
- Ingen lisensieringskrav utover Azure subscription
|
||
- Bruk `microsoft-learn` MCP for dokumentasjonssøk (gratis)
|
||
- Content Understanding API-tilgang krever Azure keys
|
||
|
||
---
|
||
|
||
## For arkitekten (Cosmo)
|
||
|
||
### Spørsmål å stille kunden
|
||
|
||
1. **Volum og format:**
|
||
- Hvor mange videoer/audio-filer skal prosesseres? (per dag/uke/måned)
|
||
- Typisk video-lengde? (< 5 min, 5-30 min, > 30 min)
|
||
- Format-variasjon? (kun MP4, eller også legacy formater?)
|
||
|
||
2. **Custom fields vs. prebuilt:**
|
||
- Trenger dere domene-spesifikke metadata-felt? (Eksempler: `productType`, `complianceStatus`, `brandSafety`)
|
||
- Er predefinerte insights (transcript, keyframes, scene descriptions) tilstrekkelig?
|
||
- Hvor kritisk er accuracy? (toleranse for feil i ekstraherte verdier)
|
||
|
||
3. **Segmentering:**
|
||
- Skal videoer analyseres som helhet, eller segmentert i kapitler/scener?
|
||
- Har dere eksisterende segmenteringslogikk? (timecodes, manual tagging)
|
||
- Trenger dere variable segment-lengder? (news clips vs. full episodes)
|
||
|
||
4. **Personvern og compliance:**
|
||
- Inneholder videoer personer? (faces, voices)
|
||
- Trenger dere face description/identification? (krever Legal review + Limited Access)
|
||
- Er dette offentlige videoer (web-published) eller interne/sensitive?
|
||
- Hvilke GDPR Article 6/9 legal bases gjelder?
|
||
|
||
5. **Integrasjon:**
|
||
- Hvor skal metadata lagres? (AI Search, SQL, Fabric, SharePoint)
|
||
- Trenger dere RAG-optimalisert output? (markdown + embeddings)
|
||
- Eksisterende video storage? (blob, SharePoint, on-prem NAS)
|
||
- Real-time krav? (live video streams vs. batch uploaded files)
|
||
|
||
6. **Kostnad:**
|
||
- Hva er budsjettet per video? (eller totalt per måned)
|
||
- Er token-basert prising akseptabelt? (variabel kostnad per video-kompleksitet)
|
||
- Preferanse for flat-rate pricing? (vurder Video Indexer hvis ja)
|
||
|
||
7. **Modenhet:**
|
||
- Har teamet erfaring med generative AI APIs?
|
||
- Finnes ML/AI-kompetanse for å validere output-kvalitet?
|
||
- Trenger dere managed service (Azure support) eller self-serve?
|
||
|
||
8. **Fallback og feilhåndtering:**
|
||
- Hva skjer hvis analyse feiler? (retry logic, manual fallback)
|
||
- Toleranse for hallucinations i custom fields?
|
||
- Human-in-the-loop review-prosess etablert?
|
||
|
||
### Fallgruver
|
||
|
||
| Fallgruve | Symptom | Forebygging |
|
||
|-----------|---------|-------------|
|
||
| **Over-engineering custom fields** | Høy kostnad, treg prosessering, inkonsistente verdier | Start med prebuilt analyzer, iterer til custom fields kun hvis nødvendig |
|
||
| **Manglende human review** | Feil metadata i produksjon, compliance-brudd | Implementer confidence thresholds, flag lav-confidence outputs for review |
|
||
| **Ignorer technical constraints** | Klager om "hvorfor fant ikke systemet denne 1-sekunders hendelsen?" | Dokumenter frame sampling (1 FPS) + resolution limits i user documentation |
|
||
| **Face description uten Legal review** | GDPR/AI Act violations, PR-kriser | Alltid involver Legal før aktivering av `disableFaceBlurring` |
|
||
| **Ingen test av multilingual transcription** | Feil språk i transkripsjon, uleselig output | Test med sample files, spesifiser språk eksplisitt vs. `auto` |
|
||
| **Undervurdere token consumption** | Budsjettoverskridelse | Kalkuler tokens på forhånd, bruk prebuilt analyzers for cost control |
|
||
| **Synkron polling-mønster** | Timeout issues, dårlig UX | Bruk async polling (`.begin_analyze()` + polling hver 20 sek), eller webhooks (ikke GA, men preview) |
|
||
|
||
### Anbefalinger per modenhetsnivå
|
||
|
||
**Nivå 1 - Exploratory (PoC):**
|
||
- Bruk `prebuilt-videoSearch` for rask demonstrasjon av RAG on video
|
||
- Test med 5-10 sample videos (varierende lengde, innhold)
|
||
- Deploy i development subscription (ikke prod)
|
||
- Fokus: Bevise at teknologien kan ekstrahere relevant info
|
||
|
||
**Nivå 2 - Pilot (MVP):**
|
||
- Definer 1-3 custom fields basert på faktisk business need
|
||
- Implementer confidence thresholds (f.eks. flag outputs < 0.7 confidence for review)
|
||
- Deploy i prod-lignende miljø (West Europe eller Norway East)
|
||
- Integrer med eksisterende storage (blob, AI Search)
|
||
- Etabler cost monitoring (Azure Cost Management alerts)
|
||
|
||
**Nivå 3 - Production (Scale):**
|
||
- Optimaliser custom field descriptions basert på pilot-data
|
||
- Implementer batch-prosessering pipeline (Azure Functions + Durable Functions for orchestration)
|
||
- Sett opp monitoring (Application Insights, Log Analytics)
|
||
- Legal/Privacy review av face description hvis aktivert
|
||
- Etabler SLA for processing time (f.eks. "videoer < 10 min prosesseres innen 5 min")
|
||
|
||
**Nivå 4 - Optimization (Mature):**
|
||
- A/B-test prebuilt vs. custom analyzers (cost vs. accuracy trade-offs)
|
||
- Fine-tune field descriptions basert på production feedback
|
||
- Implementer caching av frequently accessed metadata
|
||
- Vurder Video Indexer for real-time use cases (hybrid approach)
|
||
- Contributor til Microsoft feedback (feature requests, bug reports)
|
||
|
||
---
|
||
|
||
## Kilder og verifisering
|
||
|
||
### Microsoft Learn (MCP-verifiserte)
|
||
|
||
| Seksjon | Kilde-URL | Konfidensnivå |
|
||
|---------|-----------|---------------|
|
||
| Video overview, capabilities | https://learn.microsoft.com/en-us/azure/ai-services/content-understanding/video/overview | Verified (Feb 2026) |
|
||
| AudioVisual elements, JSON schema | https://learn.microsoft.com/en-us/azure/ai-services/content-understanding/video/elements | Verified (Feb 2026) |
|
||
| Video Indexer scene/shot/keyframe detection | https://learn.microsoft.com/en-us/azure/azure-video-indexer/scene-shot-keyframe-detection-insight | Verified (Feb 2026) |
|
||
| Standard vs. Pro modes | https://learn.microsoft.com/en-us/azure/ai-services/content-understanding/concepts/standard-pro-modes | Verified (2026-06-19) |
|
||
| Multimodal search (AI Search integration) | https://learn.microsoft.com/en-us/azure/search/multimodal-search-overview | Verified (2026-06-19) |
|
||
| Azure AI Video Indexer insights overview | https://learn.microsoft.com/en-us/azure/azure-video-indexer/insights-overview | Verified (Feb 2026) |
|
||
| Python SDK (ContentUnderstandingClient) | https://learn.microsoft.com/en-us/python/api/overview/azure/ai-contentunderstanding-readme | Verified (Feb 2026) |
|
||
| Data privacy and security | https://learn.microsoft.com/en-us/azure/foundry/responsible-ai/content-understanding/data-privacy | Verified (Feb 2026) |
|
||
|
||
### Baseline (modellkunnskap)
|
||
|
||
| Seksjon | Konfidensnivå | Merknad |
|
||
|---------|---------------|---------|
|
||
| Kostnadsestimater (NOK) | Baseline (est. Feb 2026) | Priser kan variere, sjekk Azure Pricing Calculator for nøyaktige tall |
|
||
| GDPR/AI Act compliance | Baseline (legal interpretation) | Krever juridisk review per use case, ikke definitive legal advice |
|
||
| Offentlig sektor (Norge) guidance | Baseline (expert recommendation) | Basert på generell forståelse av norske lover, ikke case law |
|
||
| Fallgruver og best practices | Baseline (arkitektur-erfaring) | Basert på typiske anti-patterns, ikke spesifikke customer incidents |
|
||
|
||
### Manglende dokumentasjon (gaps)
|
||
|
||
- **Webhooks for async completion**: Preview feature, ikke dokumentert i GA docs (per Feb 2026)
|
||
- **Token consumption per field type**: Ingen offisiell dokumentasjon av hvordan `method: "classify"` vs. `"generate"` påvirker token usage
|
||
- **Face description approval process**: Limited Access request-prosedyre er dokumentert, men approval-kriterier er ikke offentlige
|
||
- **AI Search skill pricing**: Content Understanding skill pricing er ikke eksplisitt skilt fra Document Extraction/Layout skills i Azure Search pricing page
|
||
|
||
---
|
||
|
||
**Sist oppdatert av:** Cosmo Skyberg
|
||
**Neste review:** 2026-09-19 (eller ved ny GA release av Content Understanding)
|