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>
11 KiB
Hybrid Search - Full-Text and Vector Combined
Last updated: 2026-04 | Verified: MCP 2026-04 Status: GA Category: RAG Architecture & Semantic Search
Introduksjon
Hybrid search i Azure AI Search kombinerer full-text (BM25) søk med vektorsøk i en enkelt spørring. De to søkemetodene kjøres parallelt, og resultatene fusjoneres via Reciprocal Rank Fusion (RRF)-algoritmen. Dette gir bedre relevans enn enten keyword- eller vektorsøk alene, fordi BM25 fanger eksakte termer mens vektorsøk fanger semantisk mening.
RRF-algoritmen beregner en samlet score basert på formelen 1/(rank + k), der rank er dokumentets posisjon i hver resultatliste og k er en konstant (typisk 60). Dokumenter som rangerer høyt på tvers av begge metoder prioriteres. Dette gjør hybrid search robust for varierte spørringstyper — fra eksakte nøkkelord-søk til vage, konseptuelle spørsmål.
Hybrid search er tilgjengelig fra Basic-tier og oppover i Azure AI Search, og krever ingen ekstra kostnad utover standard spørringsoperasjoner. Funksjonen er GA siden 2023, med kontinuerlige forbedringer i scoring og ytelse.
Kjernekomponenter
Scoring-modeller
| Søkemetode | Score-property | Algoritme | Område |
|---|---|---|---|
| Full-text | @search.score |
BM25 | 0 til ubegrenset |
| Vector | @search.score |
HNSW/KNN | 0.333–1.00 (Cosine) |
| Hybrid | @search.score |
RRF | 0 til ~1/k per query |
| Semantic ranking | @search.rerankerScore |
ML comprehension | 0.00–4.00 |
Vektervekting
Vector queries støtter weight-parameter for å justere relativ viktighet:
- Default: 1.0
- Redusere: 0.5 (halverer vektorens bidrag til RRF-scoren)
- Øke: 2.0 (dobler vektorens bidrag)
from azure.search.documents.models import VectorizedQuery
vector_query = VectorizedQuery(
vector=query_vector,
k_nearest_neighbors=10,
fields="DescriptionVector",
weight=2.0 # Prioriter semantisk likhet
)
maxTextRecallSize
Kontrollerer hvor mange BM25-resultater som mates inn i RRF:
- Default: 1000
- Justérbar: Høyere verdi = mer tekst-recall, men økt latency
- Anbefaling: Default er tilstrekkelig for de fleste scenarioer
Arkitekturmønstre
Mønster 1: Hybrid Search uten semantic ranking
Flyt: Brukerquery → BM25 + Vector (parallelt) → RRF-fusjon → Topp-N resultater
Fordeler:
- Lavere latency (ingen L2-reranking)
- Fungerer på alle tier (Basic+)
- Ingen ekstra kostnad for semantic ranking
Ulemper:
- RRF er en generell ranking-algoritme, ikke domene-optimert
- Lavere relevans for komplekse, naturnlige spørsmål
Beste for: Høy-volum søk der latency er kritisk, eller der BM25+vector gir tilstrekkelig relevans.
Mønster 2: Hybrid Search med Semantic Ranking (anbefalt)
Flyt: Brukerquery → BM25 + Vector (parallelt) → RRF-fusjon → Semantic Ranker (topp 50) → Topp-N resultater
Fordeler:
- Best mulig relevans (dokumentert i benchmarks)
- Semantiske captions og answers inkludert
- Scoring profile kan legges på etter semantic ranking
Ulemper:
- Krever S1-tier eller høyere
- Ekstra kostnad per query (etter 1000 gratis/måned)
- Noe høyere latency (~50–200ms ekstra)
Beste for: Enterprise RAG, kunnskapsportaler, dokumentsøk i offentlig sektor.
Mønster 3: Hybrid Search med filtrering og facettering
Flyt: Brukerquery + filter/facet → Prefilter/Postfilter → BM25 + Vector → RRF → Resultater med facets
results = client.search(
search_text="luxury hotel",
vector_queries=[vector_query],
filter="Rating gt 4 and ParkingIncluded eq true",
vector_filter_mode="postFilter",
facets=["Category", "Address/StateProvince"],
select=["HotelName", "Description", "Rating"],
top=10
)
Fordeler:
- Kombinerer semantisk søk med strukturert filtrering
- Støtter faceted navigation for brukergrensesnitt
Ulemper:
preFilterkan redusere vektorkandidater for myepostFilterkan returnere færre resultater enn forventet
Beste for: E-commerce-liknende søk, sakssystemer med metadata-filtre.
Beslutningsveiledning
Når bruke hybrid search vs. alternativer
| Scenario | Anbefaling | Begrunnelse |
|---|---|---|
| Generell enterprise-søk | Hybrid + semantic | Best relevans dokumentert |
| Eksakt ID/kode-søk | Kun BM25 | Vektor tilfører ingen verdi for eksakte treff |
| Konseptuelle spørsmål | Hybrid + semantic | BM25 fanger nøkkelord, vektor fanger mening |
| Multilingual søk | Hybrid med fokus på vektor | Vektor bypasser språk-analysatorer |
| Strukturert data | BM25 + filtre | Vektor er designet for ustrukturert tekst |
| Høy-volum, lav-latency | Hybrid uten semantic | Semantic ranking legger til latency |
Vanlige feil
- Ikke sette k=50 for vektor-queries med semantic ranking — Semantic ranker jobber med topp 50, så
kbør være minst 50 - Bruke
preFiltermed semantic ranking — Kan eliminere relevante resultater før ranking - Sammenligne scores på tvers av indekser — BM25-scores er relative til dokumentfrekvens i indeksen
- Ignorere vekter — Default-vekter (1.0/1.0) passer ikke alltid domenet
Røde flagg
- Lav relevans med hybrid search → Sjekk om embedding-modellen er trent for domenet
- Høy latency → Vurder om semantic ranking er nødvendig for dette use caset
- Uventede resultater med filtre → Sjekk
preFiltervs.postFiltermodus
Integrasjon med Microsoft-stakken
| Tjeneste | Integrasjon |
|---|---|
| Azure OpenAI | Embedding-modeller (text-embedding-3-large) for vektordelen |
| Azure AI Foundry | Integrert vektorisering via skills i indekserings-pipeline |
| Copilot Studio | Azure AI Search som grounding-kilde for Copilot-agenter |
| Semantic Kernel | AzureAISearchVectorStore connector for hybrid queries |
| Power Platform | AI Builder kan bruke Azure AI Search via custom connectors |
Offentlig sektor (Norge)
Datasuverenitet
- Azure AI Search er tilgjengelig i Norway East og Norway West
- All indeksdata forblir i valgt region
- Fullt GDPR-kompatibelt via Azures rammeverk
- Microsofts EU Data Boundary gjelder for norske deployments
Sikkerhetsfunksjoner
- Azure Private Link: Isoler search service fra offentlig internett
- Managed Identity: Sikker autentisering via Entra ID (ingen API-nøkler)
- Customer-managed keys: Krypter data med egne nøkler i Azure Key Vault
- Dokumentnivå-sikkerhet: Filtrer resultater basert på brukeridentitet
- RBAC: Rollebasert tilgangskontroll for indeks- og spørringsoperasjoner
Relevante use cases
- Regelverk og retningslinjer: Kombinér eksakt match (§-referanser) med semantisk søk
- Sakssystemer: Hybrid search med metadata-filtrering per sakstype
- Publikumstjenester: Multilingual search der vektor bypasser språkbarrierer
- Arkivsøk: Historisk dokumentasjon med varierende terminologi
Kostnad og lisensiering
Tier-krav
| Funksjon | Minimumstier |
|---|---|
| Hybrid search (BM25 + vektor) | Basic |
| Scoring profiles | Alle tier |
| Semantic ranking | S1+ (1000 gratis/mnd) |
| Integrert vektorisering | Basic+ |
Kostnadsoptimering
- Scalar/binary quantization reduserer vektorlagring med opptil 50% (preview)
stored: falsepå vektorfelt sparer lagring hvis du ikke trenger å hente embeddings- Narrower data types for vektorfelt der presisjon tillater det
- Tune
k-parameter — færre naboer = lavere kostnad - Hybrid queries teller som én spørringsoperasjon (ingen prisøkning vs. enkelt søk)
For arkitekten (Cosmo)
Spørsmål å stille kunden
- Hvilke typer søk gjør brukerne deres — eksakte nøkkelord, naturlige spørsmål, eller begge deler?
- Hvor viktig er latency vs. relevans for dette use caset?
- Har dere strukturerte metadata (kategorier, datoer, avdelinger) som bør filtreres?
- Hvilket tier bruker dere i dag, og er semantic ranking et alternativ?
- Trengs multilingual support?
- Hvor store er dokumentene, og hvordan chunkes de?
Fallgruver
- Å starte med ren vektor-search og legge til BM25 etterpå er vanskeligere enn å starte med hybrid
- Scoring profiles og semantic ranking interagerer på ikke-åpenbare måter — test grundig
- Vektervekting krever eksperimentering; det finnes ingen universell "riktig" vekt
Anbefalinger per modenhetsnivå
| Nivå | Anbefaling |
|---|---|
| Starter | Hybrid search med default-vekter, uten semantic ranking |
| Intermediær | Legg til semantic ranking, tune vekter basert på evaluering |
| Avansert | Scoring profiles, A/B-testing med debug-modus, custom reranking |
Debug-tips
Bruk debug: "vector" eller debug: "semantic" i API-kallet for å pakke ut subscores og forstå ranking-bidrag fra hver komponent.
Kilder og verifisering
Verified (MCP-research)
- Hybrid Search Overview
- RRF Ranking Algorithm
- Hybrid Query How-To
- Relevance Overview
- BM25 Scoring Details
- Vector Search Overview
Baseline (modellkunnskap)
- Kostnadsoptimerings-tips basert på generell Azure-erfaring
- Offentlig sektor-anbefalinger basert på norsk kontekst
Hybrid Search — Konfigurasjon og Tuning (oppdatert 2026-04)
Anbefalt startpunkt: Balanced hybrid med k=30-50, top=10-20, semantic ranking etter relevans-test.
maxTextRecallSize (preview): Kontrollerer BM25-bidrag til RRF
- Default: 1000, Max: 10000
- Reduser hvis vector dominerer; øk for store indekser der default ikke gir nok dekning
countAndFacetMode: "countRetrievableResults"scope-r teller til maxTextRecallSize-vinduet
Ytelsesmønstre:
- Recall-first: øk
maxTextRecallSizegradvis - Precision-first: lav
kogtop, unngå unødvendig semantic ranker
Filter-moduser i hybrid:
preFilter(default) — filtrerer FØR query, reduserer søkerom for begge subqueriespostFilter— filtrerer ETTER, men kan gi <50 docs til semantic rankerstrictPostFilter(preview) — strengeste modus, ikke anbefalt med semantic rankerfilterOverride(preview) — per-vectorQuery filter, overstyrer globalt filter
SDK-støtte: Python (azure-search-documents), C# (Azure.Search.Documents), Java, JavaScript.
API-versjoner: 2025-09-01 (stable), 2025-11-01-preview (maxTextRecallSize, filterOverride, etc.)