De 87 referansefilene bar en plain-text `| Verified: <dato>`-hale på **Last updated:**-linjen i 500B-header-vinduet — usynlig for den bold-only kontrakt-stacken (kb-headers.mjs / audit RE_VERIFIED), og claimet en verifisering judgen aldri gjorde (samme poison-klasse som de 14 bold **Verified:** MCP Spor 1 fjernet). Uhåndtert springer den også dual-Verified-fellen: R7s insertVerifiedFields ville stemplet en bold-verdi ved siden av den plain → to motstridende provenance-claims per fil. - ny driver strip-stale-verified-pipe.mjs: frosset 87-manifest (18 advisor + 45 eng + 8 gov + 16 sec), pure verdi-bevarende strip (kun ` | Verified: …`-halen; **Last updated:**-dato byte-eksakt), hard per-fil-invariant (linjeantall uendret, body byte-identisk, dato bevart), idempotent, atomicWriteSync (RX-OPS2 recovery-kontrakt). - audit-corpus-headers.mjs: ny plain-Verified-deteksjon (RE_PLAIN_VERIFIED + plainVerifiedPipe) — gjør M4-blindheten synlig så en stale plain-hale ikke kan gjenoppstå stille (non-advisor scope). - 87 filer strippet; plain Verified i vinduet 0/389; live-audit plainVerifiedPipe 0. Mekanisme: +15 tester (12 strip + 3 audit). Suite 875→890 exit 0. validate-plugin.sh 250/0. Utsatt → RX-KB1b: footer-dato-avvik + label-whitelist (annen dialekt, flag-to-human).
340 lines
No EOL
14 KiB
Markdown
340 lines
No EOL
14 KiB
Markdown
# Multimodal RAG — Bilder, tabeller og dokumenter i RAG
|
|
|
|
**Last updated:** 2026-06-19
|
|
**Status:** GA (Document Intelligence, Content Understanding), Preview (multimodal embeddings)
|
|
**Category:** RAG Architecture & Semantic Search
|
|
**Type:** reference
|
|
**Source:** https://learn.microsoft.com/azure/search/multimodal-search-overview
|
|
|
|
---
|
|
|
|
## Innhold
|
|
|
|
- [Introduksjon](#introduksjon)
|
|
- [Kjernekomponenter](#kjernekomponenter)
|
|
- [Arkitekturmønstre](#arkitekturmønstre)
|
|
- [Azure Content Understanding for RAG](#azure-content-understanding-for-rag)
|
|
- [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
|
|
|
|
Multimodal RAG utvider tradisjonell tekstbasert retrieval til å inkludere bilder, tabeller, diagrammer og andre visuelle elementer i RAG-pipelinen. For enterprise-organisasjoner betyr dette at PDF-rapporter med grafer, tekniske tegninger, og presentasjoner med figurer kan indekseres og hentes med full visuell kontekst.
|
|
|
|
Azure-stakken tilbyr tre komplementære tilnærminger: **Image verbalization** (GPT-4o/4v konverterer bilder til tekst), **direkte multimodale embeddings** (Azure Vision genererer vektorer for bilder og tekst i samme vektorrom), og **Azure Content Understanding** (GA nov 2025) som konverterer komplekse dokumenter til Markdown med LaTeX-equations, HTML-tables og semantic chunking.
|
|
|
|
Microsoft ISE-teamet anbefaler en kombinert tilnærming: GPT-4v for bildeberikelse (bedre recall) og GPT-4o for inferens (bedre kvalitet, hastighet og kostnad).
|
|
|
|
---
|
|
|
|
## Kjernekomponenter
|
|
|
|
### Ekstraksjonsskills
|
|
|
|
| Skill | Tekst | Bilder | Tabeller | Kryss-sideenheter | Formater |
|
|
|-------|-------|--------|----------|-------------------|----------|
|
|
| **Document Extraction** | Nei | Ja | Nei | N/A | Kun PDF |
|
|
| **Document Layout** | Ja | Ja | Nei | Kun innen side | Flere formater |
|
|
| **Content Understanding** | Ja | Ja | Ja (kryss-side) | Ja | PDF, DOCX, XLSX, PPTX |
|
|
|
|
**Anbefaling:** Azure Content Understanding for moderne multimodal RAG-pipelines.
|
|
|
|
### Multimodal embedding-tilnærminger
|
|
|
|
| Tilnærming | Metode | Fordel | Ulempe |
|
|
|------------|--------|--------|--------|
|
|
| **Image verbalization** | GPT-4o/4v → tekst → text embedding | Semantisk forståelse, gode captions | LLM-kall per bilde, økt tid |
|
|
| **Direct multimodal embeddings** | Azure Vision → bilde/tekst-vektor | Rask, effektiv, visuell likhet | Mangler semantisk kontekst |
|
|
| **Kombinert (anbefalt)** | Verbalize diagrammer + direct embed fotos | Maksimerer begge styrker | Kompleksere pipeline |
|
|
|
|
### Azure Vision multimodal embeddings
|
|
|
|
- **Modell:** Azure Vision multimodal via Microsoft Foundry
|
|
- **Dimensjoner:** 1024 per vektor (tekst og bilde)
|
|
- **Nøkkel:** Tekst og bilder projiseres i *samme* vektorrom
|
|
|
|
---
|
|
|
|
## Arkitekturmønstre
|
|
|
|
### Mønster 1: Image verbalization + text embeddings
|
|
|
|
**Arkitektur:** Blob Storage → Indexer → Image extraction → GenAI Prompt skill (GPT-4o/4v) → Text description → Azure OpenAI Embedding → Index
|
|
|
|
**Pipeline:**
|
|
|
|
```
|
|
Dokument → Document Layout skill (ekstraher bilder)
|
|
→ GenAI Prompt skill:
|
|
"Beskriv dette bildet i kontekst av dokumentet: {image}"
|
|
→ Text embedding skill (text-embedding-3-large)
|
|
→ Index (med image description + embedding)
|
|
```
|
|
|
|
**Fordeler:**
|
|
- Tolker relasjoner og entiteter i diagrammer
|
|
- Ferdiglagde captions for RAG-bruk
|
|
- Semantisk forståelse for AI-agenter
|
|
- Returner relevante snippets med grunnlagsdata
|
|
|
|
**Brukstilfelle:** Rapporter med flytdiagrammer, organisasjonskart, arkitekturdiagrammer.
|
|
|
|
### Mønster 2: Direct multimodal embeddings
|
|
|
|
**Arkitektur:** Blob Storage → Indexer → Image extraction → Azure Vision Vectorize skill → Index
|
|
|
|
**Skill-konfigurasjon:**
|
|
|
|
```json
|
|
{
|
|
"@odata.type": "#Microsoft.Skills.Vision.VectorizeSkill",
|
|
"name": "image-embedding-skill",
|
|
"context": "/document/normalized_images/*",
|
|
"modelVersion": "2023-04-15",
|
|
"inputs": [{"name": "image", "source": "/document/normalized_images/*"}],
|
|
"outputs": [{"name": "vector", "targetName": "image_vector"}]
|
|
}
|
|
```
|
|
|
|
**Fordeler:**
|
|
- Enkel konfigurasjon — ingen LLM-kall
|
|
- Effektiv for visuell likhetssøk
|
|
- Ideell for «finn noe som ligner»-scenarier
|
|
|
|
**Brukstilfelle:** Fotoarkiver, produktbilder, skjermbilder.
|
|
|
|
### Mønster 3: Combined multimodal pipeline (anbefalt)
|
|
|
|
**Arkitektur:** Router basert på bildetype → [Diagram: verbalize] + [Foto: direct embed] → Felles index med multi-vector felt
|
|
|
|
**Index-schema:**
|
|
|
|
```json
|
|
{
|
|
"fields": [
|
|
{ "name": "content_embedding", "type": "Collection(Edm.Single)",
|
|
"dimensions": 1024, "searchable": true,
|
|
"vectorSearchProfile": "hnsw" },
|
|
{ "name": "content_text", "type": "Edm.String", "searchable": true },
|
|
{ "name": "content_path", "type": "Edm.String", "retrievable": true },
|
|
{ "name": "page_number", "type": "Edm.Int32", "filterable": true },
|
|
{ "name": "content_type", "type": "Edm.String", "filterable": true }
|
|
]
|
|
}
|
|
```
|
|
|
|
**Index projections (tekst + bilder i samme indeks):**
|
|
|
|
```json
|
|
{
|
|
"indexProjections": {
|
|
"selectors": [
|
|
{
|
|
"targetIndexName": "multimodal-index",
|
|
"parentKeyFieldName": "text_document_id",
|
|
"sourceContext": "/document/pages/*",
|
|
"mappings": [
|
|
{"name": "content_embedding", "source": "/document/pages/*/text_vector"},
|
|
{"name": "content_text", "source": "/document/pages/*"}
|
|
]
|
|
},
|
|
{
|
|
"targetKeyFieldName": "image_document_id",
|
|
"sourceContext": "/document/normalized_images/*",
|
|
"mappings": [
|
|
{"name": "content_embedding", "source": "/document/normalized_images/*/image_vector"},
|
|
{"name": "content_path", "source": "/document/normalized_images/*/imagePath"}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Azure Content Understanding for RAG
|
|
|
|
### Markdown-output (GA nov 2025)
|
|
|
|
Content Understanding konverterer dokumenter til GitHub Flavored Markdown:
|
|
|
|
| Innholdstype | Representasjon | Eksempel |
|
|
|-------------|----------------|---------|
|
|
| **Tabeller** | HTML markup med `rowspan`/`colspan` | `<table><tr><th>Header</th></tr></table>` |
|
|
| **Ligninger** | LaTeX | `$$a^2 + b^2 = c^2$$` |
|
|
| **Diagrammer** | Chart.js JSON eller Mermaid | Interaktiv grafgjengivelse |
|
|
| **Bilder** | `` | Med valgfri analyse |
|
|
| **Sidemetadata** | HTML-kommentarer | `<!-- PageNumber="1" -->` |
|
|
|
|
### Konfigurasjon for RAG-pipelines
|
|
|
|
```
|
|
outputContentFormat=markdown
|
|
enableFigureAnalysis=true
|
|
enableAnnotation=true
|
|
chartFormat=markdown
|
|
```
|
|
|
|
**RAG-fordeler:**
|
|
- HTML-basert tabellrekonstruksjon bevarer struktur
|
|
- LaTeX-formatering for matematisk presisjon
|
|
- Semantic chunking for intelligent dokumentsegmentering
|
|
|
|
---
|
|
|
|
## Beslutningsveiledning
|
|
|
|
### Beslutningstabell
|
|
|
|
| Dokumenttype | Visuelt innhold | Anbefalt tilnærming |
|
|
|-------------|-----------------|---------------------|
|
|
| Tekniske rapporter med diagrammer | Flytdiagrammer, arkitektur | Image verbalization (GPT-4v) |
|
|
| Fotoarkiv / produktbilder | Fotografier | Direct multimodal embeddings |
|
|
| PDF med tabeller over flere sider | Tabeller, ligninger | Content Understanding |
|
|
| Blandet innhold (tekst + bilder) | Alt | Combined pipeline (mønster 3) |
|
|
| Kun tekstdokumenter | Ingen | Standard RAG (ikke multimodal) |
|
|
|
|
### GPT-4v vs GPT-4o for multimodal RAG
|
|
|
|
| Modell | Best for | Begrunnelse |
|
|
|--------|----------|-------------|
|
|
| **GPT-4v (vision-preview)** | Bildeberikelse, summary-generering | Bedre på å generere bildesummaries → forbedrer recall |
|
|
| **GPT-4o** | Inferens, spørsmålsbesvaring | Bedre på QA → forbedringer i kvalitet, hastighet, kostnad |
|
|
|
|
### Vanlige feil
|
|
|
|
| Feil | Konsekvens | Løsning |
|
|
|------|------------|---------|
|
|
| Ignorerer bilder i RAG | Mister visuell informasjon | Aktiver `imageAction: generateNormalizedImages` |
|
|
| Kun direct embeddings for diagrammer | Taper semantisk forståelse | Bruk verbalization for diagrammer |
|
|
| Mangler spatial metadata | Ingen sidehenvisning i citations | Inkluder `bounding_polygons` og `page_number` |
|
|
| Bruker Free tier for multimodal | Ikke støttet | Minimum Basic tier for Azure AI Search |
|
|
|
|
---
|
|
|
|
## Integrasjon med Microsoft-stakken
|
|
|
|
| Tjeneste | Integrasjonspunkt |
|
|
|----------|-------------------|
|
|
| **Azure AI Search** | Multi-vector indeks, index projections, knowledge store |
|
|
| **Azure AI Document Intelligence** | Document Layout skill for bildeekstraksjon |
|
|
| **Azure Content Understanding** | Markdown-output med tabeller, ligninger, semantisk chunking |
|
|
| **Azure Vision** | Multimodal embeddings (1024-dim) for bilder og tekst |
|
|
| **Azure OpenAI** | GPT-4o/4v for bildeverbalisering, text-embedding-3 for tekst |
|
|
| **Azure Blob Storage** | Knowledge store for projiserte bilder |
|
|
|
|
### Query-patterns
|
|
|
|
| Query-type | Implementasjon | Brukstilfelle |
|
|
|------------|----------------|---------------|
|
|
| Fulltekstsøk | `{"search": "energy", "select": "content_text, content_path"}` | Søk på tvers av tekst og bilder |
|
|
| Filtrer kun bilder | `{"filter": "image_document_id ne null"}` | Visuelt innhold |
|
|
| Hybrid query | Fulltekst + vektor + semantic ranking | Best relevans |
|
|
| Bildebasert query | Multimodal embedding av query-bilde | Visuell likhetssøk |
|
|
|
|
---
|
|
|
|
## Offentlig sektor (Norge)
|
|
|
|
### Dataplassering
|
|
|
|
- **Azure Content Understanding:** Sjekk regional tilgjengelighet (endres hyppig)
|
|
- **Azure Vision:** West Europe — bildeprosessering i EU
|
|
- **Azure AI Search:** Norway East — indeks i Norge
|
|
|
|
### Relevante vurderinger
|
|
|
|
| Krav | Implikasjon |
|
|
|------|-------------|
|
|
| **Universell utforming (WCAG)** | Bildeverbalisering genererer alt-text — støtter tilgjengelighet |
|
|
| **Arkivloven** | Spatial metadata (sidetall, posisjon) støtter dokumentreferanser |
|
|
| **GDPR** | Bilder med persondata (ansikter) krever spesiell behandling |
|
|
| **AI Act** | Dokumenter multimodal pipeline-arkitektur som del av AI-system |
|
|
|
|
---
|
|
|
|
## Kostnad og lisensiering
|
|
|
|
### Kostnadskomponenter
|
|
|
|
| Komponent | Prismodell | Estimat |
|
|
|-----------|------------|---------|
|
|
| Document Intelligence (bildeeekstraksjon) | Per side | ~$0.01-0.05/side |
|
|
| Content Understanding | Per dokument/side | Varierer |
|
|
| GPT-4v verbalization | Per token (input: bilde + prompt) | ~$0.01-0.03/bilde |
|
|
| Azure Vision embedding | Per API-kall | ~$0.001/bilde |
|
|
| Vektorlagring (multimodal) | Per GB | ~50% mer enn kun tekst |
|
|
|
|
### Optimaliseringstips
|
|
|
|
1. **Bruk direct embeddings for foto, verbalization for diagrammer** — balanserer kostnad og kvalitet
|
|
2. **Sett `stored: false` på bildevektorer** — sparer lagring
|
|
3. **Batch-prosesser bilder off-peak** — lavere compute-kostnad
|
|
4. **Aktiver enrichment cache** — unngår re-prosessering ved re-indeksering
|
|
|
|
### Forutsetninger
|
|
|
|
- Microsoft Foundry resource (for Vision multimodal embeddings) — regionbegrenset
|
|
- Azure AI Search Basic tier eller høyere (ikke Free tier)
|
|
- Azure Storage for dokumenter og knowledge store
|
|
- Managed identity med riktige rolletildelinger
|
|
|
|
---
|
|
|
|
## For arkitekten (Cosmo)
|
|
|
|
### Spørsmål å stille kunden
|
|
|
|
1. **"Inneholder dokumentene visuelt innhold (bilder, tabeller, diagrammer)?"** — Nei → standard RAG
|
|
2. **"Hva slags visuelt innhold?"** — Diagrammer → verbalization, fotos → direct embeddings
|
|
3. **"Er tabeller på tvers av sider vanlig?"** — Ja → Content Understanding (ikke Document Layout)
|
|
4. **"Trenger brukerne å søke basert på bilder?"** — Ja → multimodal embeddings
|
|
5. **"Har dokumentene LaTeX/ligninger?"** — Ja → Content Understanding med LaTeX-støtte
|
|
|
|
### Fallgruver
|
|
|
|
- **Multimodal for rent tekstinnhold:** Økt kostnad uten gevinst
|
|
- **Kun direct embeddings for alt:** Diagrammer trenger semantisk tolkning
|
|
- **Ignorerer Content Understanding:** Ny service (GA nov 2025) som løser mange multimodale utfordringer
|
|
- **Glemmer spatial metadata:** Uten sidetall og posisjon mister du citation-kvalitet
|
|
|
|
### Anbefalinger per modenhetsnivå
|
|
|
|
| Modenhet | Anbefaling |
|
|
|----------|------------|
|
|
| **Prototyp** | Document Layout skill. Ignorer bilder initialt. Fokuser på tekst-RAG. |
|
|
| **Pilot** | Legg til image verbalization for nøkkeldokumenttyper. Test retrieval-kvalitet. |
|
|
| **Produksjon** | Combined pipeline (mønster 3). Content Understanding for tabeller. |
|
|
| **Enterprise** | Full multimodal pipeline + Azure Vision embeddings + spatial metadata. |
|
|
|
|
---
|
|
|
|
## Kilder og verifisering
|
|
|
|
| Kilde | Konfidens | URL |
|
|
|-------|-----------|-----|
|
|
| Multimodal Search Concepts (Azure AI Search) | **Verified** | [learn.microsoft.com](https://learn.microsoft.com/en-us/azure/search/multimodal-search-overview) |
|
|
| Tutorial: Vectorize images and text | **Verified** | [learn.microsoft.com](https://learn.microsoft.com/en-us/azure/search/tutorial-document-extraction-multimodal-embeddings) |
|
|
| Content Understanding: Markdown representation | **Verified** | [learn.microsoft.com](https://learn.microsoft.com/en-us/azure/ai-services/content-understanding/document/markdown) |
|
|
| Multimodal RAG with Vision (ISE DevBlog) | **Verified** | [devblogs.microsoft.com](https://devblogs.microsoft.com/ise/multimodal-rag-with-vision/) |
|
|
| RAG Time Journey 4: Advanced Multimodal Indexing | **Verified** | [techcommunity.microsoft.com](https://techcommunity.microsoft.com/blog/azure-ai-foundry-blog/rag-time-journey-4-advanced-multimodal-indexing/4397300) |
|
|
| Azure-Samples/multimodal-rag-code-execution | **Baseline** | [github.com](https://github.com/Azure-Samples/multimodal-rag-code-execution) |
|
|
|
|
|
|
### Azure AI Search Multimodal Pipeline (oppdatert 2026-06-19)
|
|
|
|
Azure AI Search multimodal pipeline (GA) støtter nå en fullstendig 5-stegs prosess:
|
|
1. **Ekstraksjon** — Document Extraction, Document Layout, eller Content Understanding skill
|
|
2. **Tekst-chunking** — Text Split skill for håndterbare biter
|
|
3. **Bildebeskriving** — GenAI Prompt skill verbaliserer bilder via LLM
|
|
4. **Embedding** — Azure OpenAI, Microsoft Foundry, eller Azure Vision embedding
|
|
5. **Bildestoring** — Knowledge store lagrer ekstraherte bilder for annotation i klientapp
|
|
|
|
Hybrid queries kombinerer full-text search, vector search, og semantic ranking for å svare på spørsmål der svaret befinner seg i et innebygd diagram i en PDF.
|
|
|
|
**Querytidsstøtte:** GenAI Prompt skill-baserte pipelines støtter hybrid queries over tekst og verbaliserte bilder. For bilde-til-vektor-queries (søk med bilde som input), bruk Azure Vision multimodal embedding skill med en tilsvarende vectorizer. |