Skriv om frågor med semantisk ranker i Azure AI-sökning (förhandsversion)

Observera

Azure AI-sökning är tillgängligt via Azure-portalen, REST-API:er och Azure-SDK:er. Den ligger också till grund för Foundry IQ, det hanterade kunskapsskiktet som omvandlar företagsinnehåll till återanvändbara, behörighetsmedvetna kunskapsbaser för agenter i Microsoft Foundry-portalen.

Important

Funktioner, funktioner eller egenskaper som har markerats (förhandsversion) omfattas inte av ett serviceavtal, rekommenderas inte för produktionsarbetsbelastningar och kan ändras eller begränsas innan de blir allmänt tillgängliga. Villkoren för Azure AI-sökning förhandsgranskning gäller för alla förhandsgranskningsfunktioner, oavsett om de är fristående eller en del av en allmänt tillgänglig funktion.

Frågeomskrivning (förhandsversion) är processen att omvandla en användares fråga till en mer effektiv fråga, lägga till fler termer och förfina sökresultat. Söktjänsten skickar sökfrågan (eller en variant av den) till en generativ modell som genererar alternativa frågor.

Omskrivning av frågor förbättrar resultatet från semantisk rangordning genom att korrigera felstavningar i användarfrågor och utöka frågor med synonymer.

Sökning med frågeomskrivning fungerar så här:

  • Användarfrågan skickas via egenskapen search i begäran.
  • Söktjänsten skickar sökfrågan (eller en variant av den) till en generativ modell som genererar alternativa frågor.
  • Söktjänsten använder den ursprungliga frågan och de omskrivna frågorna för att hämta sökresultat.

Frågeomskrivning är en valfri funktion. Utan frågeskrivning använder söktjänsten bara den ursprungliga frågan för att hämta sökresultat.

Observera

De omskrivna frågorna kanske inte innehåller alla exakta termer som den ursprungliga frågan hade. Detta kan påverka sökresultaten om frågan var mycket specifik och krävde exakta matchningar för unika identifierare eller produktkoder.

Förutsättningar

Tips

Innehåll som innehåller förklaringar eller definitioner fungerar bäst för semantisk rangordning.

Skapa en sökförfrågan med omskrivningar

I det här REST API-exemplet använder du Sökdokument (förhandsversion) för att formulera begäran.

  1. Klistra in följande begäran i en webbklient som en mall.

    POST https://[search-service-name].search.windows.net/indexes/hotels-sample/docs/search?api-version=2026-08-01-preview
    {
        "search": "newer hotel near the water with a great restaurant",
        "semanticConfiguration":"en-semantic-config",
        "queryType":"semantic",
        "queryRewrites":"generative|count-5",
        "queryLanguage":"en-US",
        "debug":"queryRewrites",
        "top": 1
    }
    
    • Ersätt search-service-name med söktjänstens namn.

    • Ersätt hotels-sample med ditt indexnamn om det är annorlunda.

    • Ange "sök" till en fulltextsökningsfråga. Sökegenskapen krävs för omskrivning av frågor, såvida du inte anger vektorfrågor. Om du anger vektorfrågor måste texten "sök" matcha "text" objektets "vectorQueries" egenskap. Söksträngen kan antingen ha stöd för den enkla syntaxen eller den fullständiga Lucene-syntaxen.

    • Ange "semanticConfiguration" till en fördefinierad semantisk konfiguration inbäddad i ditt index.

    • Ange "queryType" till "semantisk". Du måste antingen ange "queryType" till "semantisk" eller inkludera en icke-ymplig "semanticQuery"-egenskap i begäran. Semantisk rangordning krävs för omskrivning av frågor.

    • Ange "queryRewrites" till "generative|count-5" för att få upp till fem frågeomskrivningar. Du kan ange antalet till valfritt värde mellan 1 och 10.

    • Eftersom du begärde frågeomskrivningar genom att ange egenskapen "queryRewrites" måste du ange "queryLanguage" till söktextspråket. Söktjänsten använder samma språk för frågeomskrivningarna. I det här exemplet använder du "en-US". De lokaler som stöds är: en-AU, en-CA, en-GB, en-IN, en-US, ar-EG, ar-JO, ar-KW, ar-MA, ar-SA, bg-BG, bn-IN, ca-ES, cs-CZ, da-DK, de-DE, el-GR, es-ES, es-MX, et-EE, eu-ES, fa-AE, fi-FI, fr-CA, fr-FR, ga-IE, gl-ES, gu-IN, he-IL, hi-IN, hr-BA, hr-HR, hu-HU, hy-AM, id-ID, is-IS, it-IT, ja-JP, kn-IN, ko-KR, lt-LT, lv-LV, ml-IN, mr-IN, ms-BN, ms-MY, nb-NO, nl-BE, nl-NL, no-NO, pa-IN, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sk-SK, sl-SL, sr-BA, sr-ME, sr-RS, sv-SE, ta-IN, te-IN, th-TH, tr-TR, uk-UA, ur-PK, vi-VN, zh-CN, zh-TW.

    • Ange "felsökning" till "queryRewrites" för att hämta frågeomskrivningarna i svaret.

      Tips

      Anges "debug": "queryRewrites" endast i testsyfte. Använd inte felsökning i produktion för bättre prestanda.

    • Ange "topp" till 1 för att endast returnera det översta sökresultatet.

  2. Skicka begäran för att köra frågan och returnera resultat.

Därefter utvärderar du sökresultaten med omskrivningar av sökfrågorna.

Utvärdera svaret

Här är ett exempel på ett svar som innehåller frågeomskrivningar:

"@search.debug": {
  "semantic": null,
  "queryRewrites": {
    "text": {
      "inputQuery": "newer hotel near the water with a great restaurant",
      "rewrites": [
        "new waterfront hotels with top-rated eateries",
        "new waterfront hotels with top-rated restaurants",
        "new waterfront hotels with excellent dining",
        "new waterfront hotels with top-rated dining",
        "new water-side hotels with top-rated restaurants"
      ]
    },
    "vectors": []
  }
},
"value": [
  {
    "@search.score": 58.992092,
    "@search.rerankerScore": 2.815633535385132,
    "HotelId": "18",
    "HotelName": "Ocean Water Resort & Spa",
    "Description": "New Luxury Hotel for the vacation of a lifetime. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
    "Description_fr": "Nouvel h\u00f4tel de luxe pour des vacances inoubliables. Vue sur la baie depuis chaque chambre, emplacement pr\u00e8s de la jet\u00e9e, piscine sur le toit, restaurant au bord de l'eau et plus encore.",
    "Category": "Luxury",
    "Tags": [
      "view",
      "pool",
      "restaurant"
    ],
    "ParkingIncluded": true,
    "LastRenovationDate": "2020-11-14T00:00:00Z",
    "Rating": 4.2,
    "Location": {
      "type": "Point",
      "coordinates": [
        -82.537735,
        27.943701
      ],
      "crs": {
        "type": "name",
        "properties": {
          "name": "EPSG:4326"
        }
      }
    },
    //... more properties redacted for brevity
  }
]

Här följer några viktiga punkter att tänka på:

  • Eftersom du anger egenskapen "felsöka" till "queryRewrites" för testning innehåller svaret ett @search.debug objekt med textinmatningsfrågan och frågeomskrivningar.
  • Eftersom du anger egenskapen "queryRewrites" till "generative|count-5" innehåller svaret upp till fem frågeomskrivningar.
  • Värdet "inputQuery" är frågan som skickas till den generativa modellen för frågeomskrivning. Indatafrågan är inte alltid densamma som användarens "search" fråga.

Här är ett exempel på ett svar utan frågeomskrivningar.

"@search.debug": {
  "semantic": null,
  "queryRewrites": {
    "text": {
      "inputQuery": "",
      "rewrites": []
    },
    "vectors": []
  }
},
"value": [
  {
    "@search.score": 7.774868,
    "@search.rerankerScore": 2.815633535385132,
    "HotelId": "18",
    "HotelName": "Ocean Water Resort & Spa",
    "Description": "New Luxury Hotel for the vacation of a lifetime. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
    "Description_fr": "Nouvel h\u00f4tel de luxe pour des vacances inoubliables. Vue sur la baie depuis chaque chambre, emplacement pr\u00e8s de la jet\u00e9e, piscine sur le toit, restaurant au bord de l'eau et plus encore.",
    "Category": "Luxury",
    "Tags": [
      "view",
      "pool",
      "restaurant"
    ],
    "ParkingIncluded": true,
    "LastRenovationDate": "2020-11-14T00:00:00Z",
    "Rating": 4.2,
    "Location": {
      "type": "Point",
      "coordinates": [
        -82.537735,
        27.943701
      ],
      "crs": {
        "type": "name",
        "properties": {
          "name": "EPSG:4326"
        }
      }
    },
    //... more properties redacted for brevity
  }
]

Vektorfrågor med frågeomskrivning

Du kan inkludera vektorfrågor i din sökbegäran för att kombinera nyckelordssökning och vektorsökning till en enda begäran och ett enhetligt svar.

Här är ett exempel på en fråga som innehåller en vektorfråga med frågeomskrivningar. Ändra ett tidigare exempel så att det innehåller en vektorfråga.

  • Lägg till ett "vectorQueries"-objekt i begäran. Det här objektet innehåller en vektorfråga med "typ" inställt på "text".
  • Värdet "text" är samma som "sök"-värdet. Dessa värden måste vara identiska för att omskrivning av frågan ska fungera.
POST https://[search-service-name].search.windows.net/indexes/hotels-sample/docs/search?api-version=2026-08-01-preview
{
    "search": "newer hotel near the water with a great restaurant",
    "vectorQueries": [
        {
            "kind": "text",
            "text": "newer hotel near the water with a great restaurant",
            "k": 50,
            "fields": "Description",
            "queryRewrites": "generative|count-3"
        }
    ],
    "semanticConfiguration":"en-semantic-config",
    "queryType":"semantic",
    "queryRewrites":"generative|count-5",
    "queryLanguage":"en-US",
    "top": 1
}

Svaret innehåller frågeomskrivningar för både textfrågan och vektorfrågan.

Testa frågeomskrivningar med debug-läge

Du bör testa frågeomskrivningarna för att säkerställa att de fungerar som förväntat. Ställ in "debug": "queryRewrites"-egenskapen i din frågebegäran för att få omskrivningarna av frågan i svaret. Inställningen "debug" är valfri i testsyfte. För bättre prestanda ska du inte ange den här egenskapen i produktion.

Partiella svarsorsaker

Du kan observera att svaret för felsökning (test) innehåller en tom matris för text.rewrites egenskaperna och vectors .

{
  "@odata.context": "https://demo-search-svc.search.windows.net/indexes('hotels-sample')/$metadata#docs(*)",
  "@search.debug": {
    "semantic": null,
    "queryRewrites": {
      "text": {
        "rewrites": []
      },
      "vectors": []
    }
  },
  "@search.semanticPartialResponseReason": "Transient",
  "@search.semanticQueryRewriteResultType": "OriginalQueryOnly",
  //... more properties redacted for brevity
}

I föregående exempel:

  • Svaret innehåller en @search.semanticPartialResponseReason egenskap med värdet "Transient". Det här meddelandet innebär att minst en av frågorna inte kunde slutföras.
  • Svaret innehåller också en @search.semanticQueryRewriteResultType egenskap med värdet "OriginalQueryOnly". Det här meddelandet innebär att frågeomskrivningarna inte är tillgängliga. Endast den ursprungliga frågan används för att hämta sökresultat.

Nästa steg

Semantisk rangordning kan användas i hybridfrågor som kombinerar nyckelordssökning och vektorsökning i en enda begäran och ett enhetligt svar.