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:
commit
baa2d0220b
488 changed files with 213221 additions and 0 deletions
|
|
@ -0,0 +1,278 @@
|
|||
# Semantic Ranker and Reranking Models
|
||||
|
||||
**Last updated:** 2026-02
|
||||
**Status:** GA (core), Preview (query rewrite, prerelease models)
|
||||
**Category:** RAG Architecture & Semantic Search
|
||||
|
||||
---
|
||||
|
||||
## Introduksjon
|
||||
|
||||
Semantic Ranker er en premium-funksjon i Azure AI Search som bruker Microsofts språkforståelsesmodeller (opprinnelig fra Bing) til å forbedre søkerelevans gjennom **L2 (Level 2) reranking**. Den opererer oppå de initielle BM25- eller RRF-rangerte resultatene, og rerangerer de topp 50 basert på dyp semantisk forståelse av innholdet.
|
||||
|
||||
Semantic Ranker er ikke et generativt AI-system — den **ekstraherer** eksisterende tekst fra dokumenter. Den produserer semantiske captions (relevante passasjer), semantiske answers (direkte svar på spørsmål), og en `@search.rerankerScore` fra 0.0 til 4.0 som indikerer semantisk relevans. Dette gjør den ideell for kunnskapsbaser, dokumentportaler og RAG-scenarioer der høy relevans er kritisk.
|
||||
|
||||
Funksjonen er GA for kjernefunksjonalitet, med preview-features som query rewrite (utvider spørsmål til opptil 10 varianter) og mulighet for å opt-in til prerelease-modeller.
|
||||
|
||||
## Kjernekomponenter
|
||||
|
||||
### Trestegs-prosessen
|
||||
|
||||
1. **Input og summarisering**
|
||||
- Tar topp 50 resultater fra initial ranking (BM25 eller RRF)
|
||||
- Assembler opptil 2000 tokens per dokument fra konfigurerte felt
|
||||
- Token-allokering: title (128), keywords (128), content (resten)
|
||||
- Fra november 2024: summary strings opptil **2048 tokens** (tidligere 256)
|
||||
|
||||
2. **Scoring**
|
||||
- Evaluerer semantisk relevans med språkmodeller
|
||||
- Tildeler `@search.rerankerScore` (0.0–4.0 skala)
|
||||
|
||||
3. **Output-generering**
|
||||
- Returnerer re-scorede resultater i synkende rekkefølge
|
||||
- Ekstraherer verbatim captions og answers
|
||||
- Gir både plain text og highlighted versjoner
|
||||
|
||||
### Reranker Score-skala
|
||||
|
||||
| Score | Betydning |
|
||||
|-------|-----------|
|
||||
| 4.0 | Svært relevant, komplett svar |
|
||||
| 3.0 | Relevant men mangler noen detaljer |
|
||||
| 2.0 | Noe relevant, delvis svar |
|
||||
| 1.0 | Relatert men minimalt svar |
|
||||
| 0.0 | Irrelevant |
|
||||
|
||||
**Tommelregel:** Bruk score 3.0+ som høy-konfidensresultater i RAG-systemer.
|
||||
|
||||
### Semantic Configuration
|
||||
|
||||
```json
|
||||
{
|
||||
"semantic": {
|
||||
"defaultConfiguration": "my-semantic-config",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "my-semantic-config",
|
||||
"prioritizedFields": {
|
||||
"titleField": { "fieldName": "Title" },
|
||||
"prioritizedContentFields": [
|
||||
{ "fieldName": "Description" },
|
||||
{ "fieldName": "Content" }
|
||||
],
|
||||
"prioritizedKeywordsFields": [
|
||||
{ "fieldName": "Tags" },
|
||||
{ "fieldName": "Category" }
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Feltkrav:**
|
||||
- Må være `searchable` og `retrievable`
|
||||
- Må være strings (`Edm.String` eller `Collection(Edm.String)`)
|
||||
- Title: maks 25 ord anbefalt
|
||||
- Content: lengre, deskriptiv tekst (prioritert rekkefølge)
|
||||
- Keywords: tagger, kategorier (prioritert rekkefølge)
|
||||
|
||||
## Reranking-tilnærminger
|
||||
|
||||
### 1. Azure AI Search Semantic Ranker (innebygd)
|
||||
|
||||
| Egenskap | Detalj |
|
||||
|----------|--------|
|
||||
| Type | Proprietary Microsoft-modell (fra Bing) |
|
||||
| Integrasjon | Innebygd i Azure AI Search |
|
||||
| Kapasitet | ~10 samtidige queries per replika |
|
||||
| Aktivering | `queryType=semantic` i spørring |
|
||||
| Multilingual | Ja |
|
||||
|
||||
```python
|
||||
results = search_client.search(
|
||||
query_type='semantic',
|
||||
semantic_configuration_name='my-semantic-config',
|
||||
search_text="historic hotel walk to restaurants",
|
||||
select='HotelName,Description',
|
||||
query_caption='extractive',
|
||||
query_answer='extractive'
|
||||
)
|
||||
|
||||
for result in results:
|
||||
print(f"Reranker Score: {result['@search.reranker_score']}")
|
||||
captions = result["@search.captions"]
|
||||
if captions:
|
||||
print(f"Caption: {captions[0].highlights}")
|
||||
```
|
||||
|
||||
### 2. Cross-Encoder Reranking (custom)
|
||||
|
||||
For scenarier der du trenger full kontroll over reranking-logikk:
|
||||
|
||||
```python
|
||||
from sentence_transformers import CrossEncoder
|
||||
|
||||
model = CrossEncoder('cross-encoder/ms-marco-MiniLM-L-6-v2')
|
||||
pairs = [(query, doc["content"]) for doc in initial_results]
|
||||
scores = model.predict(pairs)
|
||||
|
||||
# Re-sort basert på cross-encoder scores
|
||||
reranked = sorted(
|
||||
zip(initial_results, scores),
|
||||
key=lambda x: x[1],
|
||||
reverse=True
|
||||
)
|
||||
```
|
||||
|
||||
**Fordeler:** Full kontroll, open-source modeller, kan fintunes for domene
|
||||
**Ulemper:** Ekstra infrastruktur, høyere latency, vedlikeholdskostnad
|
||||
|
||||
### 3. LLM-basert reranking
|
||||
|
||||
Bruk en LLM for å vurdere og rangere søkeresultater:
|
||||
|
||||
**Fordeler:** Fleksibel, kontekstuell forståelse
|
||||
**Ulemper:** Høy token-kostnad, uforutsigbar latency
|
||||
|
||||
### 4. List-wise Ranking (RRF)
|
||||
|
||||
Automatisk i hybrid queries — Reciprocal Rank Fusion kombinerer rankings fra multiple queries uten eksplisitt reranking-steg.
|
||||
|
||||
## Arkitekturmønstre
|
||||
|
||||
### Mønster 1: Semantic Ranking for RAG
|
||||
|
||||
**Flyt:** Query → Hybrid search → RRF (L1) → Semantic Ranker (L2, topp 50) → Topp-k kontekst → LLM
|
||||
|
||||
**Fordeler:**
|
||||
- Best mulig relevans for RAG-kontekst
|
||||
- Semantiske captions gir bedre kontekst enn hele dokumenter
|
||||
- Reduserer hallusinering gjennom høy-kvalitets grounding
|
||||
|
||||
**Ulemper:**
|
||||
- Ekstra latency (~50–200ms)
|
||||
- Krever S1-tier
|
||||
- Kun topp 50 rerankes
|
||||
|
||||
### Mønster 2: Multi-layer Ranking
|
||||
|
||||
**Flyt:** Query → BM25+Vector → RRF (L1) → Semantic Ranker (L2) → Custom reranker (L3)
|
||||
|
||||
Brukes når standard semantic ranking ikke er tilstrekkelig for domenet, f.eks. medisinsk, juridisk, eller teknisk dokumentasjon.
|
||||
|
||||
### Mønster 3: Agentic Retrieval med L3
|
||||
|
||||
**Flyt:** Query → LLM query planning → Subqueries → Parallel retrieval → Semantic ranking → LLM-assistert L3 ranking
|
||||
|
||||
Preview-funksjon (2025) som integrerer iterativ søk med semantic ranking.
|
||||
|
||||
## Beslutningsveiledning
|
||||
|
||||
### Når bruke semantic ranking
|
||||
|
||||
| Scenario | Semantic Ranker? | Begrunnelse |
|
||||
|----------|------------------|-------------|
|
||||
| Enterprise kunnskapsbase | Ja | Høy relevans for varierte spørsmål |
|
||||
| RAG-grounding | Ja | Bedre kontekst = mindre hallusinering |
|
||||
| E-commerce produktsøk | Vurder | Kan hjelpe for beskrivende søk, men ikke for SKU-oppslag |
|
||||
| Logg-analyse | Nei | Strukturert data, ikke deskriptiv tekst |
|
||||
| Høy-volum API (>10K qps) | Vurder | Kapasitetsbegrensning per replika |
|
||||
| Utvikling/testing | Ja (gratis tier) | 1000 requests/mnd gratis |
|
||||
|
||||
### Vanlige feil
|
||||
|
||||
1. **Glemme å sette `k=50` for vector queries** — Semantic ranker jobber med topp 50 fra L1
|
||||
2. **Feil felt i semantic configuration** — Korte, kodelignende felt gir dårlige resultater
|
||||
3. **Forvente generative svar** — Semantic ranker ekstraherer verbatim, den genererer ikke
|
||||
4. **Ignorere `@search.rerankerScore`** — Bruk den for filtrering og konfidensgrenseverdier
|
||||
|
||||
### Røde flagg
|
||||
|
||||
- `CapacityOverloaded` feil → For mange samtidige queries per replika
|
||||
- Lave reranker scores (<1.0) på relevante dokumenter → Sjekk semantic configuration feltvalg
|
||||
- Uventede answers → Sjekk at content-felt er tilstrekkelig deskriptive
|
||||
|
||||
## Integrasjon med Microsoft-stakken
|
||||
|
||||
| Tjeneste | Integrasjon |
|
||||
|----------|-------------|
|
||||
| **Azure OpenAI** | RAG med semantic-ranked kontekst for bedre svar |
|
||||
| **Azure AI Foundry** | Evaluering av semantic ranking-kvalitet via built-in evaluators |
|
||||
| **Copilot Studio** | Automatisk bruk av semantic ranking i grounding |
|
||||
| **Azure Cosmos DB** | Semantic Reranker (separat produkt, lignende konsept) |
|
||||
| **Databricks** | Vector Search med reranking-integrasjon |
|
||||
|
||||
## Offentlig sektor (Norge)
|
||||
|
||||
### Relevans
|
||||
- Semantic ranker er multilingual — fungerer med norsk tekst uten ekstra konfigurasjon
|
||||
- Ideell for offentlige kunnskapsbaser der brukere stiller spørsmål i naturlig språk
|
||||
- Captions og answers kan brukes direkte i brukergrensesnitt for raskere saksbehandling
|
||||
|
||||
### Tilgjengelighet
|
||||
- Tilgjengelig i Norway East og Norway West regioner
|
||||
- All prosessering skjer i valgt region (datasuverenitet)
|
||||
- Ingen data sendes ut av regionen for reranking
|
||||
|
||||
### Compliance
|
||||
- GDPR-kompatibel
|
||||
- Schrems II-kompatibel (EU Data Boundary)
|
||||
- Ingen tredjepartsleverandører involvert i reranking-prosessen
|
||||
|
||||
## Kostnad og lisensiering
|
||||
|
||||
### Prismodell
|
||||
|
||||
| Plan | Detaljer |
|
||||
|------|---------|
|
||||
| **Gratis** | 1000 semantic ranker-requests/måned, alle tier (inkl. Free) |
|
||||
| **Standard** | Pay-as-you-go etter gratis kvote, per 1000 requests |
|
||||
|
||||
### Faktureringsregler
|
||||
- **Belastes:** `queryType=semantic` OG søkestreng er ikke tom
|
||||
- **Belastes IKKE:** `search=*` (tom query), selv med `queryType=semantic`
|
||||
- Overgang fra gratis til betalt skjer sømløst (ingen varsling)
|
||||
|
||||
### Kostnadsoptimering
|
||||
- Bruk gratis tier for utvikling og testing
|
||||
- Vurder om alle queries trenger semantic ranking, eller kun de med lav BM25-relevans
|
||||
- Batch queries med lignende emner for bedre cache-utnyttelse
|
||||
|
||||
## For arkitekten (Cosmo)
|
||||
|
||||
### Spørsmål å stille kunden
|
||||
1. Hvilken type innhold skal søkes — deskriptivt, strukturert, eller blandet?
|
||||
2. Stiller brukerne naturlige spørsmål eller bruker de nøkkelord?
|
||||
3. Hva er akseptabel latency for søkeresultater?
|
||||
4. Hvor mange samtidige søk forventes?
|
||||
5. Er multilingual support nødvendig?
|
||||
6. Finnes det et budsjett for semantic ranking utover gratis tier?
|
||||
7. Har dere allerede S1-tier, eller krever dette en oppgradering?
|
||||
|
||||
### Fallgruver
|
||||
- Semantic ranker er IKKE en erstatning for god indeksdesign — dårlige felt gir dårlige resultater
|
||||
- Summary string-lengden (2048 tokens) betyr at svært lange dokumenter kan miste kontekst
|
||||
- Semantiske answers returneres kun når modellen er 70% konfident — ikke forvent svar på alle queries
|
||||
|
||||
### Anbefalinger per modenhetsnivå
|
||||
| Nivå | Anbefaling |
|
||||
|------|------------|
|
||||
| **Starter** | Aktiver semantic ranker med default config, bruk gratis tier |
|
||||
| **Intermediær** | Optimer semantic configuration-felt, implementer score-basert filtrering |
|
||||
| **Avansert** | Kombinér med custom cross-encoder, A/B-test reranking-strategier, opt-in til prerelease-modeller |
|
||||
|
||||
## Kilder og verifisering
|
||||
|
||||
### Verified (MCP-research)
|
||||
- [Semantic ranking in Azure AI Search](https://learn.microsoft.com/en-us/azure/search/semantic-search-overview)
|
||||
- [Configure semantic ranker](https://learn.microsoft.com/en-us/azure/search/semantic-how-to-configure)
|
||||
- [Add semantic ranking to queries](https://learn.microsoft.com/en-us/azure/search/semantic-how-to-query-request)
|
||||
- [Enable or disable semantic ranker](https://learn.microsoft.com/en-us/azure/search/semantic-how-to-enable-disable)
|
||||
- [Relevance in Azure AI Search](https://learn.microsoft.com/en-us/azure/search/search-relevance-overview)
|
||||
- [Hybrid search overview](https://learn.microsoft.com/en-us/azure/search/hybrid-search-overview)
|
||||
|
||||
### Baseline (modellkunnskap)
|
||||
- Cross-encoder-eksempler basert på Sentence Transformers-dokumentasjon
|
||||
- Offentlig sektor-anbefalinger basert på norsk kontekst
|
||||
Loading…
Add table
Add a link
Reference in a new issue