feat(ultraplan-local): v1.6.0 — /ultraresearch-local deep research command

Add /ultraresearch-local for structured research combining local codebase
analysis with external knowledge via parallel agent swarms. Produces research
briefs with triangulation, confidence ratings, and source quality assessment.

New command: /ultraresearch-local with modes --quick, --local, --external, --fg.
New agents: research-orchestrator (opus), docs-researcher, community-researcher,
security-researcher, contrarian-researcher, gemini-bridge (all sonnet).
New template: research-brief-template.md.

Integration: --research flag in /ultraplan-local accepts pre-built research
briefs (up to 3), enriches the interview and exploration phases. Planning
orchestrator cross-references brief findings during synthesis.

Design principle: Context Engineering — right information to right agent at
right time. Research briefs are structured artifacts in the pipeline:
ultraresearch → brief → ultraplan --research → plan → ultraexecute.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-04-08 08:58:35 +02:00
commit baa2d0220b
488 changed files with 213221 additions and 0 deletions

View file

@ -0,0 +1,380 @@
# Norske NLP-benchmarks og språkkvalitetsvurdering
**Sist oppdatert:** 2026-02 (v1.0)
**Status:** Gjeldende
**Category:** Norwegian Public Sector AI Governance
---
## Introduksjon
Når en arkitekturvurdering hevder at "GPT-4o håndterer norsk godt", trenger vi et evidensrammeverk for å validere påstanden. Denne filen dokumenterer tilgjengelige benchmarks, embedding-modeller og kvalitetsvurderinger for norsk NLP, med fokus på modeller tilgjengelige via Azure OpenAI og Microsoft-stakken.
Norsk er et mellomstort språk med to offisielle skriftspråk (bokmål og nynorsk) og flere samiske språk. Alle store LLM-er og embedding-modeller behandler norsk som del av flerspråklige modeller -- det finnes per 2026 ingen norskspesifikke embedding-modeller fra Microsoft eller OpenAI.
---
## 1. Embedding-modell-sammenligning for norsk
### Tilgjengelige modeller via Azure OpenAI
| Egenskap | `text-embedding-3-large` | `text-embedding-3-small` | `multilingual-e5-large` |
|----------|--------------------------|--------------------------|--------------------------|
| **Leverandør** | OpenAI (via Azure) | OpenAI (via Azure) | Microsoft (open source) |
| **Maks dimensjoner** | 3072 | 1536 | 1024 |
| **Justerbare dimensjoner** | Ja (1--3072) | Ja (1--1536) | Nei (fast 1024) |
| **Maks tokens** | 8191 | 8191 | 514 |
| **MTEB gjennomsnitt** | 64.6 | 62.3 | 61.5 |
| **MIRACL flerspråklig** | 54.9 | 44.0 | 56.2 |
| **SEB norsk (ca.)** | ~65 | ~58 | ~61 |
| **Pris (Azure, per 1M tokens)** | $0.13 | $0.02 | Gratis (self-hosted) / Azure AI-pris |
| **Hosting** | Azure OpenAI managed | Azure OpenAI managed | Self-hosted eller Azure ML |
| **Norskspesifikk trening** | Nei (flerspråklig) | Nei (flerspråklig) | Nei (flerspråklig, 100+ språk) |
### Scandinavian Embedding Benchmark (SEB) -- norske oppgaver
SEB (Enevoldsen et al., NeurIPS 2024) evaluerer embedding-modeller på skandinaviske språk med 24 oppgaver, 10 deloppgaver og 4 oppgavekategorier. Norske oppgaver inkluderer:
| Oppgave | Språk | Type | Beskrivelse |
|---------|-------|------|-------------|
| NorQuad | nb | Retrieval | Spørsmål-svar fra norsk Wikipedia |
| SNL Retrieval | nb | Retrieval | Gjenfinning fra Store norske leksikon |
| Norwegian Courts | nb, nn | Bitext Mining | Parallellkorpus fra norske domstoler |
| Norwegian Parliament | nb | Classification | Partiklassifisering fra Stortinget |
| ScaLA | nb, nn | Ling. Acceptability | Lingvistisk akseptabilitet |
| SNL Clustering | nb | Clustering | Klyngeanalyse av SNL-artikler |
| VG Clustering | nb | Clustering | Nyhetsartikkel-kategorisering |
### Hovedfunn fra SEB
1. **Kommersielle API-er (OpenAI, Cohere) overgår generelt open-source-modeller** på skandinaviske oppgaver, men gapet krymper.
2. **`text-embedding-3-large` scorer best** av de testede modellene på tvers av skandinaviske oppgaver (ca. 65.0 gjennomsnitt).
3. **`multilingual-e5-large` er beste open-source-alternativ** (ca. 60.7 gjennomsnitt) og gir best balanse mellom ytelse, hastighet og embedding-størrelse.
4. **Nynorsk er underrepresentert** -- de fleste norske oppgaver er kun bokmål, noe som gir usikkerhet om nynorsk-ytelse.
5. **Retrieval-oppgaver viser størst variasjon** mellom modeller -- her er modellvalg mest kritisk for RAG-arkitekturer.
### Anbefaling for Azure-arkitekturer
| Scenario | Anbefalt modell | Begrunnelse |
|----------|-----------------|-------------|
| RAG i produksjon (Azure OpenAI) | `text-embedding-3-large` (256--1024 dim) | Best norsk retrieval, justerbare dimensjoner for kostnad/ytelse |
| Kostnadssensitiv RAG | `text-embedding-3-small` | 85% av ytelse til 15% av prisen |
| Self-hosted / on-prem | `multilingual-e5-large-instruct` | Beste open-source, ingen API-kostnad |
| Hybrid (søk + semantisk) | `text-embedding-3-large` + Azure AI Search | Kombinert keyword + vektor gir best norsk retrieval |
---
## 2. Benchmark-referanser for norsk NLP
### NorBench (UiO, NoDaLiDa 2023)
NorBench er den første standardiserte benchmark-suiten for norske språkmodeller, utviklet av Language Technology Group ved Universitetet i Oslo (ltgoslo).
- **Oppgaver:** 9 NLU-oppgaver inkludert sentimentanalyse, NER, POS-tagging, lingvistisk akseptabilitet
- **Datasett:** NoReC (sentiment), NorNE (NER), UD Norwegian (POS/dependency parsing)
- **Språk:** Bokmål og nynorsk
- **Leaderboard:** HuggingFace (ltgoslo/norbench)
- **Begrensning:** Primært encoder-modeller, ikke designet for generative LLM-er
### NorEval (UiO, ACL 2025 Findings)
NorEval er den nyeste og mest omfattende benchmark-suiten for norske generative språkmodeller.
- **Oppgaver:** 24 datasett (5 helt nye) over 9 kategorier
- **Kategorier:** Sentimentanalyse, norsk språkkunnskap, verdenskunnskap, leseforståelse, sunn fornuft-resonnering, maskinoversettelse, tekstsammendrag, instruksjonsfølging, sannferdighet
- **Språk:** Både bokmål og nynorsk (eksplisitt fokus)
- **Evaluerte modeller:** 19 open-source modeller (pretrained og instruction-tuned)
- **Menneskebaseline:** Ja -- etablerer menneskelig ytelsesnivå for sammenligning
- **Integrasjon:** LM Evaluation Harness (EleutherAI) for reproduserbarhet
- **Tilgang:** GitHub (ltgoslo/noreval), åpent tilgjengelig
### ScandEval (NoDaLiDa 2023, oppdatert)
ScandEval er en bredere skandinavisk benchmark som dekker dansk, svensk, norsk (bokmål og nynorsk), islandsk og færøysk.
- **Oppgaver:** 4 hovedkategorier per språk -- lingvistisk akseptabilitet, NER, spørsmål-svar, sentimentanalyse
- **Funn for norsk:** Investering i norsk språkteknologi har gitt modeller som overgår massivt flerspråklige modeller (XLM-RoBERTa, mDeBERTaV3)
- **Kryssspråklig:** Betydelig overføring mellom fastlandsskandinaviske språk (NO/SV/DA)
- **Leaderboard:** scandeval.com
- **Python-pakke:** `pip install scandeval` for reproduserbare evalueringer
### MTEB / MMTEB (flerspråklig)
Massive Text Embedding Benchmark (MTEB) og den flerspråklige utvidelsen MMTEB (februar 2025) dekker 500+ oppgaver over 250+ språk.
- **Norsk dekning:** Via integrasjon med Scandinavian Embedding Benchmark (SEB)
- **Oppgavetyper:** Retrieval, classification, clustering, reranking, bitext mining
- **Leaderboard:** huggingface.co/spaces/mteb/leaderboard (filtrerbar på norsk)
- **Funn:** `multilingual-e5-large-instruct` (560M parametre) overgår mange milliarder-parametre-modeller på flerspråklige oppgaver
### NLEBench (2023--2024)
Norwegian Language Evaluation Benchmark for generative modeller, med fokus på oversettelse og menneskelig annotasjon.
- **Modeller:** NorGLM-serien (norske GPT-modeller i ulike størrelser)
- **Relevans:** Viser at dedikerte norske modeller kan matche flerspråklige modeller på spesifikke oppgaver
### Oversikt over norsk dekning
| Benchmark | Bokmål | Nynorsk | Generative LLM-er | Embedding-modeller | Menneskebaseline |
|-----------|--------|---------|--------------------|--------------------|------------------|
| NorBench | Ja | Ja | Nei | Nei | Nei |
| NorEval | Ja | Ja | Ja | Nei | Ja |
| ScandEval | Ja | Ja | Delvis | Nei | Nei |
| SEB/MTEB | Ja | Delvis | Nei | Ja | Nei |
| NLEBench | Ja | Nei | Ja | Nei | Ja |
---
## 3. LLM norsk-kvalitet med fagterminologi
### Språkrådets test av GPT-4o (oktober 2024)
Språkrådet (Norwegian Language Council) gjennomførte den mest grundige uavhengige testen av GPT-4o på norsk. Testoppsettet: 157 sider tekst (ca. halvparten bokmål, halvparten nynorsk), vurdert av fire erfarne språkrevisorer.
| Mål | Bokmål | Nynorsk |
|-----|--------|---------|
| **Feil per side** | 2.6 | 8.0 |
| **Feil per 100 ord** | 1.3--2.2 | ~5.1 |
| **Dominerende feiltyper** | 70% tegnsetting/stor bokstav | 21% bøyningsformer, 20% bokmålsord |
| **Alvorlighetsgrad** | Milde (skader ikke teksten) | Alvorlige (meningsendring, feil språkform) |
### Kjente problemer med LLM-er på norsk
**Bokmål:**
- Inkonsekvent formvalg (veksler mellom "stein" og "sten" i samme tekst)
- Prefererer konservative former ("fremtid" over "framtid", selv om begge er tillatt)
- Engelskpåvirkning -- setninger som er direkte oversettelser fra engelsk
- Tegnsetting følger ofte engelske regler (kommabruk, kolon)
**Nynorsk:**
- Betydelig dårligere enn bokmål -- 3x høyere feilrate
- Blander inn bokmålsord som ikke finnes i nynorsk
- Feil bøyningsformer (svak/sterk bøyning)
- Treningsdata-bias: langt mindre nynorsk i treningsdataene
**Samiske språk (nordsamisk, sørsamisk, lulesamisk):**
- LLM-er har tilnærmet null funksjonell støtte for samiske språk
- GPT-4o kan oversette enkeltord men feiler på setningsnivå
- Dedikerte verktøy (Neurotolge/Giellatekno) er overlegne for samisk
- Relevant for offentlig sektor som har kommunikasjonsplikter overfor samiske språkbrukere
### Modellsammenligning for norsk (kvalitativ vurdering)
| Dimensjon | GPT-4o | GPT-4o-mini | o3-mini |
|-----------|--------|-------------|---------|
| **Bokmål generelt** | God (med forbehold) | Akseptabel | God |
| **Nynorsk** | Svak--middels | Svak | Ukjent |
| **Juridiske termer** | Middels--god | Svak--middels | Middels |
| **Forvaltningsspråk** | Middels | Svak | Middels |
| **Fagterminologi (helse, teknisk)** | God (ofte anglisert) | Akseptabel | God |
| **Konsistens i lang tekst** | Svak (formveksling) | Svak | Middels |
| **Instruksjonsfølging på norsk** | God | Akseptabel | God |
### Utfordringer med offentlig sektor-terminologi
1. **Juridiske termer:** "Vedtak", "enkeltvedtak", "forhåndsvarsel", "klageadgang" -- modellene kjenner begrepene men bruker dem ikke alltid korrekt i juridisk kontekst
2. **Forvaltningsspråk:** "Saksbehandling", "tilsynsmyndighet", "høringsinstans" -- variabel kvalitet, ofte forenklet
3. **Planspråk:** "Reguleringsplan", "detaljreguleringsplan", "kommuneplanens arealdel" -- spesifikke norske begreper som modellene ofte oversetter feil fra engelsk
4. **NAV/helse-terminologi:** "Arbeidsavklaringspenger", "uføretrygd", "dagpenger" -- kjente begreper men kontekstuell bruk varierer
5. **Samisk forvaltning:** Terminologi knyttet til Sametinget, samiske rettigheter, reindrift -- svært begrenset støtte
### Vurderingsmatrise for norsk LLM-kvalitet
For å vurdere om en LLM-løsning har tilstrekkelig norsk kvalitet for en gitt brukscase:
| Kriterium | Vekt | Evalueringsmetode |
|-----------|------|-------------------|
| Terminologisk presisjon | Høy | Ekspertvurdering mot fagordbok |
| Bokmål korrekthet | Høy | Språkrådet-metoden (feil/side) |
| Nynorsk korrekthet | Middels--høy | Språkrådet-metoden + nynorsk ekspert |
| Formkonsistens | Middels | Automatisert (regelsjekk) |
| Kontekstuell riktig bruk | Høy | Domeneekspert-vurdering |
| Kulturell tilpasning | Middels | Brukertest med målgruppe |
---
## 4. Chunking for norsk morfologi
### Norskspesifikke utfordringer
Norsk (særlig bokmål) er et germansk språk med produktiv sammensetning og rik bøyning, noe som påvirker chunking og tokenisering i RAG-systemer.
**Sammensatte ord (compound words):**
- "Arbeidsmiljøloven" = arbeid + miljø + loven (3 semantiske enheter)
- "Personvernkonsekvensvurdering" = personvern + konsekvens + vurdering
- "Kommunehelsetjenesteloven" = kommune + helse + tjeneste + loven
- Standard tokenizers splitter disse inkonsekvent, noe som påvirker embedding-kvalitet
**Bøyningsformer:**
- Substantiv: 4 former (ubestemt/bestemt x entall/flertall)
- Verb: Flere tider og former
- "Utredning", "utredningen", "utredninger", "utredningene" -- bør alle matche semantisk
**Bokmål vs. nynorsk i samme korpus:**
- Samme begrep kan ha ulik form: "utredning" (bm) vs. "utgreiing" (nn)
- RAG-systemet må håndtere begge former for å gi komplett gjenfinning
### Chunking-strategier for norsk
| Strategi | Styrker for norsk | Svakheter for norsk | Anbefalt bruk |
|----------|-------------------|---------------------|----------------|
| **Token-basert** (fast antall tokens) | Enkel, forutsigbar | Kutter midt i sammensatte ord, ignorerer setningsgrenser | Kun som fallback |
| **Setningsbasert** | Respekterer norsk setningsstruktur | Variabel chunk-størrelse, korte setninger gir små chunks | Generell tekst |
| **Semantisk** (Azure AI Search) | Opprettholder meningsbærende enheter | Krever god norsk språkmodell | Beste for RAG |
| **Dokumentstruktur** | Følger overskrifter og avsnitt | Avhenger av konsistent formatering | Strukturerte dokumenter (lover, forskrifter) |
| **Hybrid** (setning + overlapp) | Fanger kontekst på tvers av grenser | Økt lagringsbehov | Juridiske tekster |
### Anbefalte innstillinger for norsk RAG
```
Chunk-størrelse: 512--1024 tokens (norsk tekst er ~15% lengre enn engelsk per semantisk enhet)
Overlapp: 50--100 tokens (fanger kontekst ved chunk-grenser)
Separator-hierarki: Avsnitt > Setning > Komma/kolon
Preprocessing: Normaliser bokmål/nynorsk-varianter i metadata
Indeksering: Bruk Azure AI Search med norsk analyzer ('nb.microsoft' eller 'nn.microsoft')
```
### Azure AI Search norske analyzers
Azure AI Search tilbyr spesifikke norske språkanalyzere:
- `nb.microsoft` -- Norsk bokmål (Microsoft)
- `nb.lucene` -- Norsk bokmål (Apache Lucene)
- Støtter lemmatisering, dekomponering av sammensatte ord, og stoppord-fjerning
- **Viktig:** Bruk `nb.microsoft` for best norsk dekomponering av sammensatte ord
---
## 5. Pilottest-anbefaling
### Når benchmarks ikke er tilstrekkelige
Eksisterende benchmarks dekker ikke alle brukstilfeller for norsk offentlig sektor. En pilottest er nødvendig når:
1. **Domenespesifikk terminologi** -- benchmarks har ikke juridisk, medisinsk eller forvaltningsspesifikt testmateriale
2. **Nynorsk er kritisk** -- de fleste benchmarks har begrenset nynorsk-dekning
3. **Sammensatte dokumenttyper** -- blandede dokumenter (tekst + tabeller + skjema)
4. **Samisk språk er involvert** -- ingen benchmarks dekker samisk
5. **Høy presisjonskrav** -- offentlige vedtak krever høyere nøyaktighet enn benchmarks måler
### Pilottest-protokoll
**Fase 1: Forberedelse (1--2 uker)**
| Element | Krav |
|---------|------|
| Testdatasett | Minimum 200 dokumenter fra reelt domene |
| Spørsmålssett | Minimum 100 spørsmål med fasitsvar |
| Språkfordeling | Minimum 30% nynorsk hvis relevant |
| Terminologi | Minimum 50 domenespesifikke termer med fasit |
| Evaluatorer | Minimum 2 fageksperter + 1 språkrevisor |
**Fase 2: Gjennomføring (1--2 uker)**
```
1. Embedding-evaluering:
- Indekser testkorpus med 2-3 embedding-modeller
- Kjør spørsmålssett mot alle varianter
- Mål: Recall@10, MRR, nDCG for norsk retrieval
2. LLM-evaluering:
- Generer svar på testspørsmål med 2-3 modeller
- Vurder terminologisk presisjon
- Mål: Feil per side (Språkrådet-metoden), BLEU/ROUGE for sammendrag
3. End-to-end RAG-evaluering:
- Kombiner beste embedding + LLM
- Test med reelle brukerscenarier
- Mål: Task completion rate, brukertilfredhet (1-5)
```
**Fase 3: Analyse og dokumentasjon (1 uke)**
| Leveranse | Innhold |
|-----------|---------|
| Ytelsesrapport | Kvantitative resultater for alle modellkombinasjoner |
| Feilanalyse | Kategoriserte feil med eksempler |
| Anbefaling | Valgt arkitektur med begrunnelse |
| Baseline | Dokumenterte baseline-tall for fremtidig sammenligning |
| Akseptkriterier | Definerte terskelverdier for produksjonsklarhet |
### Dokumentasjonsmal for pilotresultater
```markdown
# Pilottest: [Prosjektnavn] -- Norsk NLP-kvalitet
## Metadata
- Dato: [YYYY-MM-DD]
- Evaluatorer: [Navn, rolle]
- Modeller testet: [Liste]
- Domene: [Beskrivelse]
## Embedding-resultater
| Modell | Recall@10 (nb) | Recall@10 (nn) | MRR | Latens (ms) |
|--------|-----------------|-----------------|-----|-------------|
| ... | ... | ... | ... | ... |
## LLM-resultater
| Modell | Feil/side (nb) | Feil/side (nn) | Terminologi-score |
|--------|----------------|----------------|-------------------|
| ... | ... | ... | ... |
## RAG end-to-end
| Konfigurasjon | Task completion | Brukertilfredhet | Kommentar |
|---------------|-----------------|-------------------|-----------|
| ... | ... | ... | ... |
## Anbefaling
[Begrunnelse for valgt arkitektur]
## Kjente begrensninger
[Dokumenterte svakheter og akseptert risiko]
```
---
## Norske NLP-ressurser og forskningsmiljøer
| Miljø | Fokus | Ressurser |
|-------|-------|-----------|
| **LTG, UiO** (Language Technology Group) | NorBench, NorEval, norske BERT-modeller | github.com/ltgoslo |
| **NorwAI, NTNU** | NorLLM, domenetilpassede norske modeller | ntnu.edu/norwai |
| **Nasjonalbiblioteket (NB)** | NbAiLab, norske treningsdata og modeller | github.com/NbAiLab |
| **Språkbanken** | Norske språkressurser, korpus, ordbøker | sprakbanken.no |
| **Språkrådet** | Norsk språkkvalitet, anbefalinger | sprakradet.no |
| **Giellatekno, UiT** | Samiske språkteknologiverktøy | giellatekno.uit.no |
---
## For Cosmo Skyberg
### Når brukes denne filen
- Ved **alle arkitekturvurderinger** som involverer norsk tekst (RAG, chatbot, dokumentbehandling)
- Når kunden spør om "GPT-4o håndterer norsk" -- referer til Språkrådets test
- Ved **embedding-modellvalg** -- bruk SEB-tallene for å begrunne anbefaling
- Når **nynorsk** er krav -- flagg at dette er en kjent svakhet
- Ved **samisk** behov -- flagg at LLM-er ikke støtter dette, og anbefal dedikerte verktøy
### Nøkkelpunkter for arkitekturforslag
1. **Aldri påstå at en modell "håndterer norsk godt" uten evidens** -- referer til benchmarks eller anbefal pilottest
2. **Embedding-valg:** `text-embedding-3-large` for best norsk retrieval via Azure OpenAI; `multilingual-e5-large-instruct` for self-hosted
3. **Nynorsk er 3x dårligere enn bokmål** i GPT-4o -- dette må adresseres eksplisitt i løsningsforslag
4. **Chunking:** Bruk semantisk chunking med norsk analyzer (`nb.microsoft`) i Azure AI Search
5. **Pilottest er påkrevd** for domenespesifikke brukstilfeller -- benchmarks gir kun indikasjoner
6. **NorEval (2025) er den autoritative benchmarken** for å sammenligne generative modeller på norsk
7. **Sammensatte ord er en reell risiko** for retrieval-kvalitet -- test med domenespesifikke sammensatte termer
### Sjekkpunkt i arkitekturprosessen
Legg til dette som et eksplisitt steg i fase 4 (kunnskapsvalidering):
```
[ ] Er norsk språkkvalitet validert med benchmarks eller pilottest?
[ ] Er embedding-modell valgt basert på SEB/MTEB norske resultater?
[ ] Er nynorsk-krav identifisert og adressert?
[ ] Er chunking-strategi tilpasset norsk morfologi?
[ ] Er samisk språkbehov kartlagt?
[ ] Er pilottest planlagt for domenespesifikk validering?
```