Freigeben über


Umschreiben von Abfragen mit einem semantischen Sortierer in Azure KI-Suche (Vorschau)

Hinweis

Dieses Feature ist zurzeit als öffentliche Preview verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel (SLA) bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Bei der Abfrageumschreibung handelt es sich um den Prozess der Transformation einer Benutzerabfrage in eine effektivere Abfrage durch das Hinzufügen von Begriffen und das Optimieren der Suchergebnisse. Der Suchdienst sendet die Suchabfrage (oder eine Variation davon) an ein generatives Modell, das alternative Abfragen generiert.

Die Abfrageumschreibung verbessert die Ergebnisse von semantischen Bewertungen, indem Tippfehler oder Rechtschreibfehler in Benutzerabfragen korrigiert und Abfragen mit Synonymen erweitert werden.

Die Suche mit Neuformulierung von Suchanfragen funktioniert wie folgt:

  • Die Benutzerabfrage wird über die search-Eigenschaft in der Anforderung übermittelt.
  • Der Suchdienst sendet die Suchabfrage (oder eine Variation davon) an ein generatives Modell, das alternative Abfragen generiert.
  • Der Suchdienst verwendet die ursprüngliche Abfrage und die umgeschriebenen Abfragen, um Suchergebnisse abzurufen.

Die Abfrageumschreibung ist ein optionales Feature. Ohne Abfrageumschreibung verwendet der Suchdienst nur die ursprüngliche Abfrage, um Suchergebnisse abzurufen.

Hinweis

Die umgeschriebenen Abfragen enthalten möglicherweise nicht alle genauen Begriffe aus der ursprünglichen Abfrage. Dies kann sich auf Suchergebnisse auswirken, wenn die Abfrage sehr spezifisch war und genaue Übereinstimmungen für eindeutige Bezeichner oder Produktcodes erforderlich sind.

Voraussetzungen

  • Ein Suchdienst auf Basisebene oder höher in Nordeuropa oder Südostasien.

  • Der semantische Rangfolger muss aktiviert sein. Sie ist standardmäßig für neuere Suchdienste aktiviert. Überprüfen Sie semantic ranking, wenn Sie eine Einführung in die Funktion benötigen.

  • Vorhandener Suchindex mit semantischer Konfiguration und Rich-Text-Inhalt In den Beispielen in diesem Leitfaden werden die Beispieldaten aus dem hotels-sample-index verwendet, um die Abfrageumschreibung zu veranschaulichen. Sie können eigene Daten und einen eigenen Index verwenden, um die Abfrageumschreibung zu testen.

  • Um den Anweisungen in diesem Artikel zu folgen, benötigen Sie einen Webclient, der REST-API-Anforderungen unterstützt. Die Beispiele in diesem Leitfaden wurden mit Visual Studio Code und der Erweiterung für den REST-Client getestet.

Tipp

Inhalte, die Erläuterungen oder Definitionen enthalten, funktionieren mit dem semantischen Sortierer am besten.

Erstellen einer Suchanforderung mit Abfrageumschreibung

Verwenden Sie in diesem REST-API-Beispiel Suchdokumente (Vorschau), um die Anforderung zu formulieren.

  1. Fügen Sie die folgende Anforderung als Vorlage in einen Webclient ein.

    POST https://[search-service-name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2025-03-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
    }
    
    • Ersetzen Sie search-service-name mit Ihrem Suchdienstnamen.

    • Ersetzen Sie hotels-sample-index durch Ihren Indexnamen, wenn er anders ist.

    • Setzen Sie „search“ auf eine Volltextsuchabfrage. Die search-Eigenschaft ist für die Abfrageumschreibung erforderlich, sofern Sie keine Vektorabfragen angeben. Wenn Sie Vektorabfragen angeben, muss der Text „search“ mit der "text"-Eigenschaft des "vectorQueries"-Objekts übereinstimmen. Ihre Suchzeichenfolge kann entweder die einfache Syntax oder die vollständige Lucene-Syntax unterstützen.

    • Legen Sie "semanticConfiguration" auf eine vordefinierte semantische Konfiguration fest, die in Ihrem Index eingebettet ist.

    • Legen Sie „queryType“ auf „semantic“ fest. Sie müssen entweder "queryType" auf "semantisch" festlegen oder eine nicht benötigte "semanticQuery"-Eigenschaft in die Anforderung einschließen. Semantische Rangfolge ist für das Umschreiben von Abfragen erforderlich.

    • Legen Sie "queryRewrites" auf "generative|count-5" fest, um bis zu fünf Abfrageumschreibungen abzurufen. Sie können die Anzahl auf einen beliebigen Wert zwischen 1 und 10 festlegen.

    • Da Sie Abfrageumschreibungen anfordern, indem Sie die queryRewrites-Eigenschaft festlegen, müssen Sie „queryLanguage“ auf die Suchtextsprache festlegen. Der Suchdienst verwendet dieselbe Sprache für die Abfrageumschreibungen. In diesem Beispiel verwenden Sie "en-US". Die unterstützten Gebietsschemas sind: 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 und zh-TW.

    • Legen Sie „debug“ auf „queryRewrites“ fest, um die Abfrageumschreibungen in der Antwort abzurufen.

      Tipp

      Legen Sie "debug": "queryRewrites" nur für Testzwecke fest. Verwenden Sie für eine bessere Leistung in der Produktion kein Debugging.

    • Legen Sie "top" auf 1 fest, um nur das oberste Suchergebnis zurückzugeben.

  2. Senden Sie die Anforderung, um die Abfrage auszuführen und Ergebnisse zurückzugeben.

Als Nächstes bewerten Sie die Suchergebnisse mit den umformulierten Suchanfragen.

Auswertung der Antwort

Im Folgenden finden Sie ein Beispiel für eine Antwort, die Neuschreibungen der Abfrage enthält:

"@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
  }
]

Beachten Sie vor allem die folgenden Punkte:

  • Da Sie die Eigenschaft "debug" zum Testen auf "queryRewrites" festlegen, enthält die Antwort ein @search.debug Objekt mit der Texteingabeabfrage und Abfrageumschreibungen.
  • Da Sie die Eigenschaft "queryRewrites" auf "generative|count-5" festlegen, enthält die Antwort bis zu fünf Abfrageumschreibungen.
  • Der "inputQuery"-Wert ist die Abfrage, die für die Abfrageumschreibung an das generative Modell übermittelt wird. Die Eingabeabfrage ist nicht immer mit der "search"-Benutzerabfrage identisch.

Im Folgenden finden Sie ein Beispiel für eine Antwort ohne Abfrageumschreibungen.

"@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
  }
]

Vektorabfragen mit Abfrageumschreibung

Sie können Vektorabfragen in Ihre Suchanforderung einschließen, um die Stichwortsuche und die Vektorsuche in einer einzelnen Anforderung und einer einheitlichen Antwort zu kombinieren.

Im Folgenden finden Sie ein Beispiel für eine Abfrage, die eine Vektorabfrage mit Abfrageumschreibungen enthält. Ändern Sie ein vorheriges Beispiel , um eine Vektorabfrage einzuschließen.

  • Fügen Sie der Anforderung ein "vectorQueries"-Objekt hinzu. Dieses Objekt enthält eine Vektorabfrage, bei der „kind“ auf „text“ festgelegt ist.
  • Der Wert „text“ ist identisch mit dem Wert „search“. Diese Werte müssen identisch sein, damit die Abfrageumschreibung funktioniert.
POST https://[search-service-name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2025-03-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
}

Die Antwort enthält Abfrageumschreibungen sowohl für die Textabfrage als auch für die Vektorabfrage.

Testen von Abfrageumschreibungen mit Debuggen

Sie sollten die Abfrageumschreibungen testen, um sicherzustellen, dass sie wie erwartet funktionieren. Legen Sie die "debug": "queryRewrites"-Eigenschaft in Ihrer Abfrageanforderung fest, um die Abfrageumschreibungen in der Antwort abzurufen. Die Einstellung "debug" ist bei Tests optional. Für eine bessere Leistung legen Sie diese Eigenschaft in der Produktion nicht fest.

Gründe für partielle Antworten

Sie könnten beobachten, dass die Debug-Antwort (Test) ein leeres Array für die Eigenschaften text.rewrites und vectors umfasst.

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

Im vorherigen Beispiel:

  • Die Antwort enthält eine @search.semanticPartialResponseReason-Eigenschaft mit dem Wert „Transient“. Diese Meldung bedeutet, dass mindestens eine der Abfragen nicht abgeschlossen werden konnte.
  • Die Antwort enthält auch eine @search.semanticQueryRewriteResultType-Eigenschaft mit dem Wert „OriginalQueryOnly“. Diese Meldung bedeutet, dass keine Abfrageumschreibungen verfügbar sind. Nur die ursprüngliche Abfrage wird zum Abrufen von Suchergebnissen verwendet.

Nächste Schritte

Die semantische Rangfolge kann in Hybridabfragen verwendet werden, die die Schlüsselwortsuche und die Vektorsuche in einer einzelnen Anforderung und einer einheitlichen Antwort kombinieren.