Phase A av #8 currency-rest. Hver faktapåstand verifisert mot kilde FØR skriving (Microsoft Learn microsoft_docs_fetch + offisielle EU/norske kilder, 2026-06-18). To research-subagenter brukt til parallell faktaverifisering. Prompt Flow retirement (banner i 5 filer): - Verifisert verbatim mot Microsoft Learn: Prompt Flow i BÅDE Microsoft Foundry og Azure Machine Learning pensjoneres 2027-04-20; migrer til Microsoft Agent Framework (MAF). Container images får ikke lenger oppdateringer. - Toppbanner: prompt-flow-production-deployment.md, genaiops-llm-specific-practices.md. - Kontekstuelle inline-flagg: rag-core-patterns.md (bullet + produksjonstabell), rag-evaluation-frameworks.md (verktøytabell), azure-ai-search-setup.md (PF-seksjon), agentic-rag-patterns.md (Foundry-integrasjonsrad). Copilot Studio Computer Use / CUA (copilot-studio.md): - Preview -> GA 7. mai 2026. KORRIGERT fra intern feildato 2026-05-13 (verifisert mot Power Platform 2026 wave 1 release plan + What's new). - Geo presisert: GA i kommersielle miljøer; IKKE GCC/GCC High. Eksakt regionsliste ikke offentlig verifiserbar -> merket uverifisert (verifiseringsplikt). - Fjernet nå-utdatert "Velg RPA når: kun GA-features tillatt"-begrunnelse. Azure AI Search agentic retrieval (agentic-rag-patterns.md): - Preview -> DELVIS GA. Minimal/ekstraktiv retrieval er GA (REST 2026-04-01); LLM query planning + answer synthesis er fortsatt preview (2026-05-01-preview). - "Single index"-begrensning -> multi-source via knowledge bases (kun GA-kildetyper: searchIndex, azureBlob, indexedOneLake, web; SharePoint/SQL/Fabric/MCP preview). EU AI Act EØS-status (ai-act-compliance-guide.md): - Korrigert feilpåstand "direkte gjeldende ... sommeren 2026". AI Act er IKKE formelt EØS-innlemmet per juni 2026; KI-loven ikke vedtatt av Stortinget (høringsfrist sept. 2025; ikrafttredelse politisk målsatt sensommer 2026). EDPB Opinion 28/2024 (gdpr-compliance-ai-systems.md, 3 ankre): - Nyanserer "anonymisert = utenfor GDPR-scope". Må vurderes case-by-case: modell er kun anonym når både direkte-ekstraksjon og query-baserte midler gir ubetydelig re-identifiseringsrisiko (jf. fortalepunkt 26). Tabellrad endret fra "Nei" til "Betinget". Allerede gjort i tidligere faser (re-verifisert, ingen edit nødvendig): MAF-banner (semantic-kernel-agents-implementation.md), Omnibus-note (ai-act-assessor.md), NSM Grunnprinsipper v2.1, A2A v1.0 + Signed Agent Cards (egen fil agent-to-agent-a2a-protocol.md). A2A v1.0.1 er immateriell patch. Tester: validate-plugin 239 PASS / 0 FAIL / 0 WARN · kb-integrity 115/115 (262 orphan-warnings er pre-eksisterende ms-ai-security-backlog, urørt). Gjenstår i #8: M-items (OWASP LLM04/06/08/09, Defender threat protection, Foundry Local air-gapped, M365 E7+Agent365) + SKILL.md de-orphan -> deretter #9 release. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
310 lines
No EOL
13 KiB
Markdown
310 lines
No EOL
13 KiB
Markdown
# Agentic RAG Patterns — Agent-styrt retrieval
|
|
|
|
**Last updated:** 2026-04 | Verified: MCP 2026-04
|
|
**Status:** GA (Semantic Kernel); Azure AI Search agentic retrieval **delvis GA** (verifisert 2026-06-18) — minimal/ekstraktiv retrieval er GA via REST `2026-04-01`, mens LLM query planning + answer synthesis er preview (`2026-05-01-preview`)
|
|
**Category:** RAG Architecture & Semantic Search
|
|
|
|
---
|
|
|
|
## Introduksjon
|
|
|
|
Agentic RAG representerer et paradigmeskifte fra statisk til autonom retrieval. I tradisjonell RAG er retrieval-flyten hardkodet: embed query → søk → generer svar. I agentic RAG bestemmer LLM-en selv *om*, *når* og *hvilke* kilder den henter fra, basert på dynamisk vurdering av informasjonsbehov.
|
|
|
|
Microsoft tilbyr tre primære implementeringsveier: **Semantic Kernel** (code-first RAG med TextSearchProvider), **Microsoft Agent Framework** (produksjonsklart, merged fra AutoGen + SK), og **Azure AI Search agentic retrieval** (managed service med automatisk query decomposition).
|
|
|
|
Agentic RAG gir dokumentert 34% bedre accuracy og 28% reduksjon i hallusinasjoner sammenlignet med single-query RAG, fordi agenter kan reformulere spørsmål, velge optimal kilde, og iterere til svaret er tilfredsstillende.
|
|
|
|
---
|
|
|
|
## Kjernekomponenter
|
|
|
|
### Agentic retrieval loop
|
|
|
|
```
|
|
Loop:
|
|
Agent vurderer informasjonsbehov
|
|
├─ Tilstrekkelig info? → Generer svar
|
|
└─ Utilstrekkelig? → Velg verktøy → Hent data → Vurder → Fortsett
|
|
```
|
|
|
|
### Semantic Kernel — Retrieval timing
|
|
|
|
| Modus | Beskrivelse | Brukstilfelle |
|
|
|-------|-------------|---------------|
|
|
| **BeforeAIInvoke** (default) | Automatisk søk før hver agent-invokasjon | Enkel RAG, konsistent kontekst |
|
|
| **OnDemandFunctionCalling** | Agent bestemmer selv når den søker | Agentic RAG, selektiv retrieval |
|
|
|
|
### Azure AI Search agentic retrieval — 4-stegs prosess
|
|
|
|
1. **Workflow initiation:** App sender query + konversasjonshistorikk til knowledge base
|
|
2. **Query planning:** LLM dekomponerer kompleks query i fokuserte subqueries
|
|
3. **Query execution:** Subqueries kjøres parallelt med semantic reranking per subquery
|
|
4. **Result synthesis:** 3-delt respons: Grounding Data + Reference Data + Activity Plan
|
|
|
|
### Sammenligning: Klassisk RAG vs. Agentic Retrieval
|
|
|
|
| Aspekt | Klassisk single-query | Agentic multi-query |
|
|
|--------|----------------------|---------------------|
|
|
| Query-tilnærming | Én «catch-all» query | Multiple fokuserte subqueries |
|
|
| Kontekstbruk | Begrenset | Full chat history |
|
|
| Dekomponering | Manuell/statisk | LLM-driven, automatisert |
|
|
| Eksekvering | Sekvensiell | Parallell |
|
|
| Reranking | Standard L2 | Semantisk reranking per subquery |
|
|
| Prismodell | Per query (1 000 queries) | Token-basert (1M tokens) |
|
|
|
|
---
|
|
|
|
## Arkitekturmønstre
|
|
|
|
### Mønster 1: Semantic Kernel RAG med TextSearchProvider
|
|
|
|
**Arkitektur:** Semantic Kernel Agent → TextSearchProvider → Azure AI Search VectorStore → Embedding
|
|
|
|
**Implementering (C#):**
|
|
|
|
```csharp
|
|
var embeddingGenerator = new AzureOpenAIClient(
|
|
new Uri("<endpoint>"), new AzureCliCredential())
|
|
.GetEmbeddingClient("<deployment>")
|
|
.AsIEmbeddingGenerator(1536);
|
|
|
|
var vectorStore = new InMemoryVectorStore(
|
|
new() { EmbeddingGenerator = embeddingGenerator });
|
|
|
|
using var textSearchStore = new TextSearchStore<string>(
|
|
vectorStore, "KnowledgeBase", vectorDimensions: 1536);
|
|
|
|
ChatCompletionAgent agent = new()
|
|
{
|
|
Name = "Assistant",
|
|
Instructions = "Use search to find relevant information",
|
|
Kernel = kernel,
|
|
UseImmutableKernel = true // Kreves for OnDemandFunctionCalling
|
|
};
|
|
|
|
ChatHistoryAgentThread agentThread = new();
|
|
agentThread.AIContextProviders.Add(
|
|
new TextSearchProvider(textSearchStore));
|
|
```
|
|
|
|
**Fordeler:**
|
|
- Full kontroll over retrieval-logikk
|
|
- Støtter Azure AI Search, Qdrant, Pinecone, Redis
|
|
- Namespace-filtrering for multi-tenant
|
|
|
|
**Status:** Eksperimentell (subject to change).
|
|
|
|
### Mønster 2: Tool-basert RAG med multiple retrieval-backends
|
|
|
|
**Arkitektur:** Agent → [Tool 1: Product Search] + [Tool 2: Policy Search] + [Tool 3: SQL Query] → Fusjonert svar
|
|
|
|
**Implementering (Python, Microsoft Agent Framework):**
|
|
|
|
```python
|
|
product_search = product_collection.create_search_function(
|
|
function_name="search_products",
|
|
description="Search for product information and specs.",
|
|
search_type="semantic_hybrid",
|
|
).as_agent_framework_tool()
|
|
|
|
policy_search = policy_collection.create_search_function(
|
|
function_name="search_policies",
|
|
description="Search for company policies and procedures.",
|
|
search_type="keyword_hybrid",
|
|
).as_agent_framework_tool()
|
|
|
|
agent = chat_client.as_agent(
|
|
instructions="Use appropriate search tool before answering. Cite sources.",
|
|
tools=[product_search, policy_search]
|
|
)
|
|
```
|
|
|
|
**Nøkkel:** Agenten analyserer query og velger riktig tool basert på description — ingen hardkodet routing.
|
|
|
|
**Fordeler:**
|
|
- Skalerbar: legg til nye kilder som tools
|
|
- LLM-drevet routing (ikke regelbasert)
|
|
- Kan kombinere resultater fra flere backends
|
|
|
|
**Anbefalt for:** Enterprise med multiple kunnskapskilder.
|
|
|
|
### Mønster 3: Azure AI Search managed agentic retrieval
|
|
|
|
**Arkitektur:** App → Azure AI Search Knowledge Agent → Automatisk query decomposition → Parallelle subqueries → Reranked results
|
|
|
|
**Fordeler:**
|
|
- Fully managed — ingen custom orchestration-kode
|
|
- Automatisk query planning basert på chat history
|
|
- Built-in semantic reranking per subquery
|
|
- 3-delt response med grounding + citations + activity plan
|
|
|
|
**Begrensninger (verifisert 2026-06-18):**
|
|
- **Delt GA-/preview-overflate:** REST `2026-04-01` (stabil/GA) gir kun minimal, ekstraktiv retrieval. **LLM query planning og answer synthesis** (beskrevet over) krever **preview** (`2026-05-01-preview`) — Azure- og Foundry-portalen bruker preview-versjonen.
|
|
- **Knowledge bases / multi-source:** GA (`2026-04-01`) støtter flere kilder i én knowledge base, men kun GA-kildetyper (`searchIndex`, `azureBlob`, `indexedOneLake`, `web`). SharePoint, Azure SQL, Fabric og MCP server er fortsatt preview.
|
|
- Krever semantic ranker (S1+ tier)
|
|
|
|
**Prising:**
|
|
- Free tier: 50M agentic reasoning tokens/mnd
|
|
- Standard: Token-basert ($0.022/token)
|
|
|
|
**Anbefalt for:** Teams som vil ha agentic RAG uten custom infrastruktur.
|
|
|
|
### Mønster 4: Multi-agent RAG orchestration
|
|
|
|
**Arkitektur:** Orchestrator Agent → [Specialist Agent 1] + [Specialist Agent 2] + ... → Aggregert svar
|
|
|
|
**Orchestration patterns (Semantic Kernel):**
|
|
|
|
| Pattern | Beskrivelse | Brukstilfelle |
|
|
|---------|-------------|---------------|
|
|
| **Sequential** | Pipeline — agents i rekkefølge | Draft → Review → Polish |
|
|
| **Concurrent** | Parallell analyse | Finans fra ulike perspektiver |
|
|
| **Handoff** | Dynamisk delegering | Kundeservice triage |
|
|
| **Group Chat** | Collaborative diskusjon | Kvalitetsvalidering |
|
|
|
|
**Anbefalt for:** Komplekse use cases der ulike domeneeksperter trengs.
|
|
|
|
---
|
|
|
|
## Beslutningsveiledning
|
|
|
|
### Beslutningstabell
|
|
|
|
| Scenario | Query-kompleksitet | Anbefalt mønster |
|
|
|----------|-------------------|------------------|
|
|
| Enkel Q&A | Lav | Mønster 1 (BeforeAIInvoke) |
|
|
| Multiple kilder | Middels | Mønster 2 (tool-basert) |
|
|
| Konversasjonell AI | Høy | Mønster 3 (managed agentic) |
|
|
| Domene-ekspertise | Høy | Mønster 4 (multi-agent) |
|
|
| Budsjett-begrenset | Alle | Mønster 1 (BeforeAIInvoke) |
|
|
|
|
### Vanlige feil
|
|
|
|
| Feil | Konsekvens | Løsning |
|
|
|------|------------|---------|
|
|
| Multi-agent uten behov | Økt kompleksitet og kostnad | Vurder single agent med multiple tools først |
|
|
| Glemmer `UseImmutableKernel = true` | OnDemandFunctionCalling feiler | Alltid sett dette for agentic RAG i SK |
|
|
| Ingen timeout/retry | Agent henger ved LLM-feil | Implementer circuit breaker og retry logic |
|
|
| For mange agents i group chat | Infinite loops | Begrens til 3 agenter |
|
|
|
|
### Røde flagg
|
|
|
|
- Agentic RAG for enkle lookup-queries (overkill)
|
|
- Ingen observability/logging av agent-beslutninger
|
|
- Preview-tjenester i produksjon uten fallback-plan
|
|
- Multi-agent uten tydelig spesialisering per agent
|
|
|
|
---
|
|
|
|
## Integrasjon med Microsoft-stakken
|
|
|
|
| Tjeneste | Integrasjonspunkt |
|
|
|----------|-------------------|
|
|
| **Azure AI Search** | Agentic retrieval (delvis GA — REST `2026-04-01`; LLM-planning preview), vector store, hybrid search |
|
|
| **Semantic Kernel** | TextSearchProvider, agent orchestration patterns |
|
|
| **Microsoft Agent Framework** | VectorStore bridge, tool-basert RAG |
|
|
| **Azure AI Foundry** | Prompt Flow (pensjoneres 2027-04-20 → MAF) for visual DAG orchestration |
|
|
| **Azure OpenAI** | GPT-4o for query planning, function calling |
|
|
| **Application Insights** | Agent decision logging, token tracking |
|
|
|
|
---
|
|
|
|
## Offentlig sektor (Norge)
|
|
|
|
### Dataplassering
|
|
|
|
- **Azure AI Search agentic retrieval:** Sjekk regional tilgjengelighet (endres)
|
|
- **Semantic Kernel:** Kjøres i egen infrastruktur — full kontroll
|
|
- **Azure OpenAI (function calling):** Sweden Central — data i EU/EØS
|
|
|
|
### Relevante vurderinger
|
|
|
|
| Krav | Implikasjon |
|
|
|------|-------------|
|
|
| **AI Act** | Agent-beslutninger må logges og forklares |
|
|
| **Forvaltningsloven** | Automatiserte avgjørelser krever human oversight |
|
|
| **GDPR** | Agent-logger som inneholder persondata krever databehandleravtale |
|
|
| **NSM** | Gradert info → on-premises agent-infrastruktur |
|
|
|
|
---
|
|
|
|
## Kostnad og lisensiering
|
|
|
|
### Kostnadssammenligning
|
|
|
|
| Mønster | Kostnad per query | Notat |
|
|
|---------|-------------------|-------|
|
|
| Klassisk RAG (single query) | ~1 NOK | Embedding + search + LLM |
|
|
| Agentic retrieval (managed) | ~2-5 NOK | Token-basert, query decomposition |
|
|
| Tool-basert RAG (2-3 tools) | ~3-8 NOK | Multiple search + LLM calls |
|
|
| Multi-agent (3 agents) | ~5-15 NOK | Flere LLM-kall per query |
|
|
|
|
### Optimaliseringstips
|
|
|
|
1. **Bruk gpt-4o-mini for query planning** (raskere, billigere)
|
|
2. **Implementer semantic caching** for gjentatte queries
|
|
3. **BeforeAIInvoke for enkle queries** (sparer tool-calling overhead)
|
|
4. **Monitor token usage** via Application Insights
|
|
|
|
---
|
|
|
|
## For arkitekten (Cosmo)
|
|
|
|
### Spørsmål å stille kunden
|
|
|
|
1. **"Hvor komplekse er typiske bruker-spørsmål?"** — Enkle lookup → klassisk RAG, komplekse → agentic
|
|
2. **"Har dere multiple kunnskapskilder?"** — >2 kilder → tool-basert RAG
|
|
3. **"Er konversasjonshistorikk viktig?"** — Ja → agentic retrieval med chat history
|
|
4. **"Hva er akseptabel kostnad per query?"** — Agentic = 2-15x dyrere
|
|
5. **"Trenger dere forklarbare agent-beslutninger?"** — Compliance → logging av activity plan
|
|
|
|
### Fallgruver
|
|
|
|
- **Agentic for alt:** Single-query RAG dekker 70% av use cases — start der
|
|
- **GA-/preview-split:** Minimal agentic retrieval er GA (REST `2026-04-01`); LLM query planning + answer synthesis er fortsatt preview (`2026-05-01-preview`) — ha fallback hvis løsningen avhenger av preview-funksjonene
|
|
- **Agent-explosion:** For mange spesialist-agenter = uforutsigbar oppførsel
|
|
|
|
### Anbefalinger per modenhetsnivå
|
|
|
|
| Modenhet | Anbefaling |
|
|
|----------|------------|
|
|
| **Prototyp** | Klassisk RAG med hybrid search + semantic ranker. |
|
|
| **Pilot** | Semantic Kernel med BeforeAIInvoke + single tool. |
|
|
| **Produksjon** | Tool-basert RAG med 2-3 backends. OnDemandFunctionCalling. |
|
|
| **Enterprise** | Azure AI Search agentic retrieval + multi-agent for komplekse workflows. |
|
|
|
|
---
|
|
|
|
## Kilder og verifisering
|
|
|
|
| Kilde | Konfidens | URL |
|
|
|-------|-----------|-----|
|
|
| Adding RAG to Semantic Kernel Agents | **Verified** | [learn.microsoft.com](https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/agent-rag) |
|
|
| Agentic Retrieval (Azure AI Search) | **Verified** | [learn.microsoft.com](https://learn.microsoft.com/en-us/azure/search/agentic-retrieval-overview) |
|
|
| Agent RAG (Microsoft Agent Framework) | **Verified** | [learn.microsoft.com](https://learn.microsoft.com/en-us/agent-framework/user-guide/agents/agent-rag) |
|
|
| AI Agent Design Patterns | **Verified** | [learn.microsoft.com](https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/ai-agent-design-patterns) |
|
|
| Semantic Kernel Agent Orchestration | **Verified** | [learn.microsoft.com](https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/agent-orchestration/) |
|
|
| Multi-agent performance (34% accuracy) | **Baseline** | Community source (ragaboutit.com) |
|
|
|
|
|
|
### Azure AI Search Agentic Retrieval (delvis GA — oppdatert 2026-06-18)
|
|
|
|
> Minimal, ekstraktiv retrieval er **GA** (REST `2026-04-01`). Funksjonaliteten under — LLM-drevet query planning, subquery-nedbryting og answer synthesis — krever **preview** (`2026-05-01-preview`).
|
|
|
|
Azure AI Search agentic retrieval er en managed multi-query pipeline for komplekse spørsmål i chat og copilot-apper:
|
|
|
|
**Funksjonalitet:**
|
|
- LLM (gpt-4o/4.1/5-serien) bryter ned komplekse queries til fokuserte subqueries
|
|
- Subqueries kjøres **parallelt** med semantisk reranking per query
|
|
- Resultater slås sammen til ett grounding data-sett med query plan og source documents
|
|
- Leser inn chat history for kontekstuell query planning
|
|
|
|
**Prising:**
|
|
- Free plan: **50 millioner gratis reasoning tokens/mnd** (alle tiers)
|
|
- Standard plan: pay-as-you-go etter fri kvote
|
|
- Avhenger av semantic ranker (premium feature)
|
|
|
|
**Arkitektur:** Knowledge Base + Knowledge Source(s) + Azure OpenAI LLM + Azure AI Search index
|
|
|
|
**AI Agent Design Patterns (Azure Architecture Center):**
|
|
Agentic RAG plasseres i et spektrum fra single model call → single agent with tools → multi-agent orchestration. Start med laveste nødvendige kompleksitetsnivå. Mønstre: sequential (pipeline), parallel fanout, supervisor, og autonomous loop. Multi-agent krever koordineringsoverhead og økt latency — bruk kun når single-agent RAG ikke er tilstrekkelig. |