Erstellen einer Hybridabfrage in Azure KI-Suche

Hinweis

Azure KI-Suche ist über das Azure Portal, REST-APIs und Azure SDKs verfügbar. Es unterstützt auch Foundry IQ, die verwaltete Wissensschicht, die Unternehmensinhalte in wiederverwendbare, berechtigungsfähige Wissensbasen für Agenten im Microsoft Foundry-Portal transformiert.

Important

Features, Funktionen oder Eigenschaften, die als (Vorschau) gekennzeichnet sind, werden von keiner Dienstebenenvereinbarung (SLA) abgedeckt, werden für Produktionsworkloads nicht empfohlen und können geändert oder eingeschränkt werden, bevor sie allgemein verfügbar sind. Die Azure KI-Suche Vorschaubedingungen gelten für alle Vorschaufunktionen, unabhängig davon, ob sie eigenständig oder Teil eines allgemein verfügbaren Features ist.

Die Hybridsuche kombiniert Text (Schlüsselwort) und Vektorabfragen in einer einzigen Suchanforderung. Beide Abfragen werden parallel ausgeführt. Die Ergebnisse werden anhand neuer Suchbewertungen zusammengeführt und neu angeordnet, wobei Reziproke Rangfusion (RRF) verwendet wird, um ein einheitliches Resultset zurückzugeben. In vielen Fällen geben Hybridabfragen mit semantischer Rangfolge die relevantesten Ergebnisse pro Benchmark-Tests zurück.

In diesem Artikel erfahren Sie, wie Sie:

  • Einrichten einer einfachen Hybridanforderung
  • Hinzufügen von Parametern und Filtern
  • Verbessern der Relevanz mithilfe von semantischen Rangfolgen oder Vektorgewichtungen
  • Optimieren von Abfrageverhalten durch Steuern von Eingaben (maxTextRecallSize)

Am Ende dieses Artikels können Sie Hybridabfragen ausführen, die Schlüsselwort- und Vektorsuche mit optionaler semantischer Rangfolge kombinieren.

Voraussetzungen

Wählen Sie eine API, ein Tool und ein funktionierendes Muster

  • Der Such-Explorer im Azure-Portal (unterstützt sowohl stabile als auch Vorschau-API-Suchsyntax) verfügt über eine JSON-Ansicht, mit der Sie eine Hybridanforderung einfügen können.

  • Neuere stabile oder Vorschaupakete der Azure SDKs (siehe Änderungsprotokolle für die SDK-Featureunterstützung).

  • Stabile REST-APIs oder eine aktuelle Vorschau-API-Version, wenn Sie Vorschaufeatures wie maxTextRecallSize und countAndFacetMode (Vorschau) verwenden.

    Zur Lesbarkeit verwenden wir REST-Beispiele, um zu erläutern, wie die APIs funktionieren. Sie können einen REST-Client wie Visual Studio Code mit der REST-Erweiterung verwenden, um Hybridabfragen zu erstellen. Sie können auch die Azure SDKs verwenden. Weitere Informationen finden Sie in der Schnellstartanleitung: Vektorsuche.

Arbeitsfähige Hybridmuster

Wenn Sie noch nicht mit der Hybridsuche vertraut sind, wählen Sie ein Muster aus und optimieren Sie es in kleinen Schritten. Beginnen Sie nicht mit dem maximalen Vektorrückruf, einem großen Textrückruf und der semantischen Umrankung in derselben Anforderung.

  • Ausgeglichener Hybrid (Standard): Verwenden Sie dies zuerst für die meisten Workloads. Beginnen Sie mit k dem Bereich von 30 bis 50, top im Bereich von 10 bis 20, und aktivieren Sie die semantische Rangfolge nur, wenn sie die gemessene Relevanz verbessert.

  • Recall-first Hybrid: Verwenden Sie dies für schwierige Abfragen, bei denen die Abdeckung das Ziel ist. Erhöhen Sie maxTextRecallSize schrittweise und halten Sie die Vektoreinstellungen moderat. Erwarten Sie höhere Zusammenführungskosten.

  • Precision-first-Hybridsystem: Verwenden Sie es, um eine geringe Latenz im großen Maßstab zu erreichen. Behalten Sie k und top in einem bescheidenen Rahmen, wenden Sie selektive Filter an und vermeiden Sie semantische Features, die keinen Mehrwert bieten.

Warum überladene Abfragen drosseln

Hybridabfragen führen Text- und Vektorabrufe parallel aus und führen dann Ergebnisse mit RRF zusammen. Wenn Sie den lexikalischen Beitrag erhöhen (z. B. indem Sie die Hybridgewichtung zugunsten von BM25 ändern), erhöhen Sie die Anzahl der Textkandidaten, die mit Vektorkandidaten zusammengeführt werden müssen. Wenn Sie dies mit teuren Vektoreinstellungen und semantischem Reranking kombinieren, steigt der CPU- und Arbeitsspeicherdruck schnell.

Bei kleineren Kapazitätskonfigurationen kann diese zusätzliche Zusammenführungs- und Rerankarbeit zu Folgendem führen:

  • Höhere Latenz und p95/p99-Spitzen
  • 429 Drosselungsantworten
  • Von Clients beobachtete verworfene Anforderungen oder Timeouts bei nicht konfiguriertem Wiederholungsverhalten

Optimieren der Reihenfolge vor dem Skalieren

Optimieren Sie die Abfrage- und Vektoreinstellungen, bevor Sie Replikate hinzufügen:

  1. Reduzieren Sie zuerst teure Vektorsucheinstellungen. Wenn efSearch und maxConnections beispielsweise aggressiv festgelegt sind, verringern Sie sie vor dem Skalieren (z. B. reduzieren Sie efSearch von ungefähr 800 auf 128 bis 192, und verringern Sie maxConnections von 64 auf 32).
  2. Beschränken Sie den semantischen Reranking-Bereich auf Fälle, die davon profitieren.
  3. Erneutes Testen der Latenz und 429-Raten unter repräsentativer Auslastung.
  4. Skalieren Sie Replikate nur, wenn die Drosselung nach der Optimierung beibehalten wird.

Verwenden Sie diese Sequenz, um die Stabilität zuerst zu verbessern und Kosten zu steuern, bevor Sie skalieren.

Einrichten einer Hybridabfrage

In diesem Abschnitt wird die grundlegende Struktur einer Hybridabfrage und das Einrichten einer Abfrage im Such-Explorer oder für die Ausführung in einem REST-Client erläutert.

Ergebnisse werden in Nur-Text zurückgegeben, einschließlich Vektoren in Feldern, die als retrievablegekennzeichnet sind. Da numerische Vektoren in Suchergebnissen nicht nützlich sind, wählen Sie andere Felder im Index als Proxy für die Vektorüberstimmung aus. Wenn ein Index beispielsweise die Felder "descriptionVector" und "descriptionText" enthält, kann die Abfrage für "descriptionVector" übereinstimmen, aber das Suchergebnis kann "descriptionText" anzeigen. Verwenden Sie den select Parameter, um nur lesbare Felder in den Ergebnissen anzugeben.

  1. Wechseln Sie zum Suchdienst im Azure-Portal.

  2. Wählen Sie unter "Suchverwaltungsindizes>" einen Index mit Vektoren und nicht Vektorinhalten aus. Der Such-Explorer ist die erste Registerkarte.

  3. Wechseln Sie unter "Ansicht" zur JSON-Ansicht , sodass Sie eine Vektorabfrage einfügen können.

  4. Ersetzen Sie die Standardabfragevorlage durch eine Hybridabfrage. Eine einfache Hybridabfrage enthält eine Textabfrage, die in search angegeben ist, und eine Vektorabfrage, die unter vectorQueries.vector angegeben ist. Die Textabfrage und Vektorabfrage kann gleichwertig oder divergent sein, aber es ist üblich, dass sie dieselbe Absicht teilen.

    Dieses Beispiel stammt aus der Schnellstartanleitung vector mit Vektor- und Nichtvektorinhalten sowie mehreren Abfragebeispielen. Aus Platzgründen wird der Vektor in diesem Artikel abgeschnitten.

    {
        "search": "historic hotel walk to restaurants and shopping",
        "vectorQueries": [
            {
                "vector": [0.01944167, 0.0040178085, -0.007816401 ... <remaining values omitted> ], 
                "k": 7,
                "fields": "DescriptionVector",
                "kind": "vector",
                "exhaustive": true
            }
        ]
    }
    
  5. Wählen Sie "Suchen" aus.

    Tipp

    Suchergebnisse sind einfacher zu lesen, wenn Sie die Vektoren ausblenden. Aktivieren Sie in den Abfrageoptionen die Option Vektorwerte in Suchergebnissen ausblenden.

  6. Hier ist eine weitere Version der Abfrage. Dadurch wird eine count für die Anzahl der gefundenen Übereinstimmungen, einen select Parameter für die Auswahl bestimmter Felder und ein top Parameter hinzugefügt, um die obersten sieben Ergebnisse zurückzugeben.

     {
         "count": true,
         "search": "historic hotel walk to restaurants and shopping",
         "select": "HotelId, HotelName, Category, Tags, Description",
         "top": 7,
         "vectorQueries": [
             {
                 "vector": [0.01944167, 0.0040178085, -0.007816401 ... <remaining values omitted> ], 
                 "k": 7,
                 "fields": "DescriptionVector",
                 "kind": "vector",
                 "exhaustive": true
             }
         ]
     }
    

maxTextRecallSize und countAndFacetMode (Vorschau) festlegen

Eine Hybridabfrage kann optimiert werden, um zu steuern, wie viel von den einzelnen Unterabfragen zu den kombinierten Ergebnissen beiträgt. Das Festlegen des Parameters maxTextRecallSize (Vorschau) legt fest, wie viele BM25-bewertete Ergebnisse an das Hybrid-Rankingmodell übergeben werden.

Wenn Ihre Abfrage Facetten enthält, verwenden Sie Nicht-Vektorfelder, die im Index als facetable gekennzeichnet sind. Vektorfelder können nicht facettiert werden.

Die Anzahl der Facetten hängt vom Abfragetyp ab:

  • In einer reinen Textabfrage zählen Facetten die Dokumente, die mit der Textabfrage übereinstimmen.
  • Bei einer ausschließlichen Vektorabfrage zählen Facetten die von der Vektorabfrage zurückgegebenen k Dokumente.
  • In einer Hybridabfrage berücksichtigen Facets sowohl Vektor- als auch Textergebnisse. Die Vektorseite trägt die k nächstgelegenen Dokumente bei. Die textbasierte Komponente liefert nach BM25 eingestufte Dokumente. Der countAndFacetMode Parameter (Vorschau) bestimmt, ob Anzahl- und Facetberechnungen alle Text-Übereinstimmungen verwenden oder nur die Text-Übereinstimmungen, die für die Rangfolge abgerufen werden.

Wenn Sie maxTextRecallSize verwenden, möchten Sie möglicherweise auch countAndFacetMode festlegen. Dieser Parameter bestimmt, ob count und facets alle Dokumente umfassen, die mit der Textabfrage übereinstimmen, oder nur Dokumente, die innerhalb des maxTextRecallSize-Fensters abgerufen wurden. Der Standardwert ist countAllResults.

Mit dem Standardmodus countAllResults können Anzahl und Facets textseitige Dokumente enthalten, die nicht für die RRF-Rangfolge abgerufen werden, da sie außerhalb des maxTextRecallSize-Fensters liegen. Eine Erhöhung von maxTextRecallSize erhöht die Anzahl der BM25-bewerteten Dokumente, die für das Ranking verfügbar sind, erhöht den Vektorbeitrag jedoch nicht über k hinaus. Verwenden Sie countRetrievableResults, wenn Anzahl- und Facetberechnungen auf die für das Hybridranking abgerufenen Dokumente beschränkt werden sollen.

Wir empfehlen die neueste Vorschau-REST-API zum Festlegen dieser Optionen.

Tipp

Ein weiterer Ansatz für die Hybridabfrageoptimierung ist die Vektorgewichtung, die verwendet wird, um die Bedeutung von Vektorabfragen in der Anforderung zu erhöhen.

  1. Verwenden Sie Search - POST (Vorschau) oder Suche – GET (Vorschau), um Vorschauparameter anzugeben.

  2. Fügen Sie ein hybridSearch Abfrageparameterobjekt hinzu, um die maximale Anzahl von Dokumenten festzulegen, die über die BM25-bewerteten Ergebnisse einer Hybridabfrage zurückgerufen werden. Es verfügt über zwei Eigenschaften:

    • maxTextRecallSize gibt die Anzahl der BM25-bewerteten Ergebnisse an, die dem in Hybridabfragen verwendeten RRF-Bewerter (Reciprocal Rank Fusion) zur Verfügung stehen. Der Standardwert ist 1.000. Das Maximum beträgt 10.000.

    • countAndFacetMode gibt die Anzahl und den Facet-Gültigkeitsbereich für eine Hybridabfrage an. Der Standardwert countAllResults verwendet den vollständigen hybriden Ergebnissatz, einschließlich aller Dokumente, die der Textabfrage entsprechen, selbst wenn einige dieser textuellen Treffer nicht für das RRF-Ranking abgerufen werden, weil sie außerhalb des maxTextRecallSize-Fensters liegen. Verwenden Sie countRetrievableResults, um Anzahl und Facets auf die für das Ranking abgerufenen Dokumente zu beschränken, einschließlich der maxTextRecallSize nach BM25 eingestuften Dokumente und der k Vektortreffer.

  3. Festlegen von maxTextRecallSize:

    • Verringern Sie maxTextRecallSize, wenn die Vektorsuche im Allgemeinen der Textkomponente der Hybridabfrage überlegen ist.

    • Erhöhen Sie maxTextRecallSize , wenn Sie einen großen Index haben, und der Standardwert erfasst keine ausreichende Anzahl von Ergebnissen. Mit einem größeren BM25-bewerteten Resultset können Sie auch top, skip und next festlegen, um Teile dieser Ergebnisse abzurufen.

Die folgenden REST-Beispiele zeigen zwei Anwendungsfälle für die Einstellung maxTextRecallSize.

Das erste Beispiel reduziert maxTextRecallSize sich auf 100, wodurch die Textseite der Hybridabfrage auf nur 100 Dokumente beschränkt wird. Außerdem wird countAndFacetMode so festgelegt, dass nur abrufbare Dokumente in Anzahl- und Facettenberechnungen einbezogen werden.

POST https://[service-name].search.windows.net/indexes/[index-name]/docs/search?api-version=2026-08-01-preview

    { 
      "vectorQueries": [ 
        { 
          "kind": "vector", 
          "vector": [1.0, 2.0, 3.0], 
          "fields": "my_vector_field", 
          "k": 10 
        } 
      ], 
      "search": "hello world", 
      "hybridSearch": { 
        "maxTextRecallSize": 100, 
        "countAndFacetMode": "countRetrievableResults" 
      } 
    } 

Im zweiten Beispiel wird maxTextRecallSize auf 5.000 erhöht. Außerdem verwendet es „top“, „skip“ und „next“, um Ergebnisse aus großen Resultsets abzurufen. In diesem Fall ruft die Anforderung die BM25-bewerteten Ergebnisse ab Position 1.500 bis 2.000 als Textabfragebeitrag zum zusammengesetzten RRF-Resultset ab.

POST https://[service-name].search.windows.net/indexes/[index-name]/docs/search?api-version=2026-08-01-preview

    { 
      "vectorQueries": [ 
        { 
          "kind": "vector", 
          "vector": [1.0, 2.0, 3.0], 
          "fields": "my_vector_field", 
          "k": 10 
        } 
      ], 
      "search": "hello world",
      "top": 500,
      "skip": 1500,
      "next": 500,
      "hybridSearch": { 
        "maxTextRecallSize": 5000, 
        "countAndFacetMode": "countRetrievableResults" 
      } 
    } 

Referenz: hybridSearch | maxTextRecallSize | countAndFacetMode

Beispiele für Hybridabfragen

Dieser Abschnitt enthält mehrere Abfragebeispiele, die hybride Abfragemuster veranschaulichen.

Beispiel: Hybridsuche mit Filter

In diesem Beispiel wird ein Filter hinzugefügt, der auf die filterable Nichtvektorfelder des Suchindex angewendet wird.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "k": 10
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "vectorFilterMode": "preFilter",
    "filter": "ParkingIncluded",
    "top": "10"
}

Wichtige Punkte:

  • Filter werden auf den Inhalt von filterbaren Feldern angewendet. In diesem Beispiel ist das Feld "ParkingIncluded" ein boolescher Wert und wird im filterable Indexschema markiert.

  • In Hybridabfragen können Filter vor der Abfrageausführung angewendet werden, um die Abfrageoberfläche zu reduzieren, oder nach der Abfrageausführung, um die Ergebnisse zu kürzen. "preFilter" ist der Standardwert. Um postFilter oder strictPostFilter (Vorschau) zu verwenden, legen Sie den Filterverarbeitungsmodus wie in diesem Beispiel gezeigt fest.

  • Wenn Sie Abfrageergebnisse nachfiltern, kann die Anzahl der Ergebnisse möglicherweise kleiner als Top-N sein.

Referenz: filter | vectorFilterMode

Beispiel: Hybridsuche mit Filtern für Vektorunterabfragen (Vorschau)

Mithilfe der neuesten REST-API der Vorschau können Sie einen globalen Filter für die Suchanforderung außer Kraft setzen, indem Sie einen sekundären Filter anwenden, der nur auf die Vektorunterabfragen in einer Hybridanforderung abzielt.

Dieses Feature bietet eine differenzierte Kontrolle, indem sichergestellt wird, dass Filter nur die Vektorsuchergebnisse beeinflussen und schlüsselwortbasierte Suchergebnisse nicht betroffen bleiben.

Der gezielte Filter überschreibt den globalen Filter vollständig, einschließlich aller Filter, die für die Sicherheitstrimmung oder für die geospatiale Suche verwendet werden. In Fällen, in denen globale Filter erforderlich sind, z. B. die Sicherheitskürzung, müssen Sie diese Filter explizit sowohl in den Filter der obersten Ebene als auch in jeden Filter auf Vektorebene einschließen, um sicherzustellen, dass Sicherheit und andere Einschränkungen konsistent erzwungen werden.

So wenden Sie gezielte Vektorfilter an:

Hier sehen Sie ein Beispiel für eine Hybridabfrage, die einen Filter-Override hinzufügt. Der globale Filter „Rating gt 3“ wird während der Ausführung durch die filterOverride ersetzt.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-08-01-preview

{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "exhaustive": true,
            "filterOverride": "Address/City eq 'Seattle'",
            "k": 10
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelName, Description, Address/City, Rating",
    "filter": "Rating gt 3",
    "debug": "vector",
    "top": 10
}

Wenn Ihre Indexdefinition eine semantische Konfiguration enthält, können Sie eine Abfrage formulieren, die die Vektorsuche und die Schlüsselwortsuche umfasst, mit semantischer Rangfolge über dem zusammengeführten Resultset. Optional können Sie Beschriftungen und Antworten hinzufügen.

Wenn Sie die semantische Rangfolge mit Vektoren verwenden, stellen Sie sicher, dass k sie auf 50 festgelegt ist. Der semantische Rangierer verwendet bis zu 50 Übereinstimmungen als Eingabe. Die Angabe von weniger als 50 beraubt die semantischen Bewertungsmodelle der notwendigen Eingaben.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "k": 50
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelName, Description, Tags",
    "queryType": "semantic",
    "semanticConfiguration": "my-semantic-config",
    "captions": "extractive",
    "answers": "extractive",
    "top": "50"
}

Wichtige Punkte:

  • Der semantische Rangierer akzeptiert bis zu 50 Ergebnisse aus der zusammengeführten Antwort.

  • "queryType" und "semanticConfiguration" sind erforderlich.

  • "Untertitel" und "Antworten" sind optional. Werte werden aus dem Wortlaut in den Ergebnissen extrahiert. Eine Antwort wird nur zurückgegeben, wenn die Ergebnisse Inhalte mit den Merkmalen einer Antwort auf die Abfrage enthalten.

Referenz: queryType | semanticConfiguration | captions | answers

Beispiel: Semantische Hybridsuche mit Filter

In diesem Beispiel wird einer semantischen Hybridabfrage ein ParkingIncluded Filter hinzugefügt.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "k": 50
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelName, Description, Tags",
    "queryType": "semantic",
    "semanticConfiguration": "my-semantic-config",
    "captions": "extractive",
    "answers": "extractive",
    "filter": "ParkingIncluded",
    "vectorFilterMode": "preFilter",
    "top": "50"
}

Wichtige Punkte:

  • Der Filtermodus kann sich auf die Anzahl der ergebnisse auswirken, die für den semantischen Rangfolger verfügbar sind. Geben Sie als bewährte Methode dem semantischen Rangfolger die maximale Anzahl von Dokumenten (50). Wenn Prefilter oder Postfilter zu selektiv sind, stellen Sie dem semantischen Ranker möglicherweise weniger als 50 Dokumente zur Verfügung.

  • preFilter wird vor der Abfrageausführung angewendet. Wenn der Präfilter den Suchbereich auf 100 Dokumente reduziert, wird die Vektorabfrage über das DescriptionVector Feld für diese 100 Dokumente ausgeführt und gibt die k=50 besten Übereinstimmungen zurück. Diese 50 übereinstimmenden Dokumente werden dann für zusammengeführte Ergebnisse an RRF und anschließend an den semantischen Sortierer übergeben.

  • postFilter wird nach der Abfrageausführung angewendet. Wenn k=50 50 Übereinstimmungen auf der Vektorabfrageseite zurückgibt, gefolgt von einem Nachfilter, der auf die 50 Übereinstimmungen angewendet wurde, werden die Ergebnisse um die Anzahl der Dokumente reduziert, die Filterkriterien erfüllen. Dadurch werden weniger als 50 Dokumente an den semantischen Sortierer übergeben. Beachten Sie dies, wenn Sie die semantische Rangfolge verwenden. Der semantische Rangierer funktioniert am besten, wenn er über 50 Dokumente als Eingabe verfügt.

  • strictPostFilter (Vorschau) wird auf die ungefilterten Topergebnissek nach der Abfrageausführung angewendet. Damit werden immer weniger als oder genau k Dokumente zurückgegeben. Wenn der ungefilterte k=50 50 nicht gefilterte Ergebnisse zurückgibt und der Filter mit 30 Dokumenten übereinstimmt, werden nur 30 Dokumente im Resultset zurückgegeben, auch wenn der Index mehr als 30 Dokumente enthält, die dem Filter entsprechen. Da dieser Modus die größte Reduzierung der Erinnerung verursacht, empfehlen wir nicht, ihn mit einem semantischen Ranker zu verwenden.

Konfigurieren einer Abfrageantwort

Wenn Sie die Hybridabfrage einrichten, denken Sie an die Antwortstruktur. Die Suchmaschine bewertet die übereinstimmenden Dokumente und gibt die relevantesten Ergebnisse zurück. Die Antwort ist ein flaches Rowset. Parameter für die Abfrage bestimmen, welche Felder sich in jeder Zeile befinden und wie viele Zeilen in der Antwort enthalten sind.

Felder in einer Antwort

Suchergebnisse bestehen aus retrievable Feldern aus Ihrem Suchindex. Ein Ergebnis ist entweder:

  • Alle retrievable Felder (eine REST-API-Standardeinstellung).
  • Felder, die in einem select Parameter für die Abfrage explizit aufgeführt sind.

In den Beispielen in diesem Artikel wurde eine select Anweisung zum Angeben von Textfeldern (nonvector) in der Antwort verwendet.

Hinweis

Vektoren werden nicht in lesbaren menschlichen Text umgeleitet, daher vermeiden Sie, sie in der Antwort zurückzugeben. Wählen Sie stattdessen keine Vektorfelder aus, die repräsentativ für das Suchdokument sind. Wenn die Abfrage z. B. auf ein "DescriptionVector"-Feld ausgerichtet ist, geben Sie ein entsprechendes Textfeld zurück, wenn sie eine ("Beschreibung") in der Antwort haben.

Anzahl der Ergebnisse

Eine Abfrage kann mit einer beliebigen Anzahl von Dokumenten übereinstimmen, so viele wie alle, wenn die Suchkriterien schwach sind (z. B. "search=*" für eine NULL-Abfrage). Da es selten praktisch ist, ungebundene Ergebnisse zurückzugeben, sollten Sie ein Maximum für die Gesamtantwort angeben:

  • "top": n Ergebnisse für nur Schlüsselwortabfragen (kein Vektor)
  • "k": n Ergebnisse für nur Vektorabfragen
  • "top": n Ergebnisse für Hybridabfragen (mit oder ohne Semantik), die einen Parameter "search" enthalten

Beide k und top sind optional. Nicht angegeben, die Standardanzahl der Ergebnisse in einer Antwort ist 50. Sie können top und skip festlegen, um durch mehr Ergebnisse zu blättern, oder die Standardeinstellung ändern.

Hinweis

Wenn Sie die Hybridsuche in 2024-05-01-preview-API verwenden, können Sie die Anzahl der Ergebnisse aus der Schlüsselwortabfrage mithilfe von maxTextRecallSize steuern. Kombinieren Sie dies mit einer Einstellung für k, um die Darstellung der jeweiligen Suchsubsysteme (Schlüsselwort- und Vektorbasierte) zu steuern.

Ergebnisse des semantischen Rankers

Hinweis

Der semantische Rangierer kann bis zu 50 Ergebnisse annehmen.

Wenn Sie den semantischen Sortierer in der Vorschau 2024-05-01 oder höher verwenden, empfiehlt es sich, k und maxTextRecallSize festzulegen, um mindestens eine Summe von insgesamt 50 zu erreichen. Anschließend können Sie die ergebnisse einschränken, die mit dem top Parameter an den Benutzer zurückgegeben werden.

Wenn Sie das semantische Ranking mit einer API-Version vor 2024-05-01-preview verwenden, führen Sie die folgenden Schritte aus:

  • Bei einer reinen Schlüsselwortsuche (keine Vektoren) setzen Sie top auf 50.
  • Für die Hybridsuche k auf 50 setzen, um sicherzustellen, dass die semantische Rangfolge mindestens 50 Ergebnisse erhält.

Einstufung

Mehrere Sätze werden für Hybridabfragen mit oder ohne die optionale semantische Umrankung erstellt. Die Rangfolge der Ergebnisse wird durch reziproke Rangfusion (RRF) berechnet.

Vergleichen Sie in diesem Abschnitt die Antworten zwischen der Einzelvektorsuche und der einfachen Hybridsuche für das oberste Ergebnis. Die verschiedenen Bewertungsalgorithmen und die Ähnlichkeitsmetrik von HNSW sowie im Fall von RRF erzeugen Scores, die unterschiedliche Größenordnungen aufweisen. Dieses Verhalten ist beabsichtigt. RRF-Bewertungen können recht niedrig erscheinen, auch bei einer Übereinstimmung mit hoher Ähnlichkeit. Niedrigere Bewertungen sind ein Merkmal des RRF-Algorithmus. Bei einer Hybridabfrage mit RRF wird ein größerer Teil des Kehrwerts der rangfolgebewerteten Dokumente in die Ergebnisse einbezogen, da die Bewertungen der RRF-Dokumente im Vergleich zur reinen Vektorsuche relativ kleiner sind.

Einzelvektorsuche: @search.score Für Ergebnisse, die nach Kosinusgleichheit sortiert sind (Standardvektor-Ähnlichkeitsabstandsfunktion).

{
    "@search.score": 0.8399121,
    "HotelId": "49",
    "HotelName": "Swirling Currents Hotel",
    "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
    "Category": "Luxury",
    "Address": {
    "City": "Arlington"
    }
}

Hybridsuche: @search.score für hybride Ergebnisse, die mit Reciprocal Rank Fusion eingestuft wurden.

{
    "@search.score": 0.032786883413791656,
    "HotelId": "49",
    "HotelName": "Swirling Currents Hotel",
    "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
    "Category": "Luxury",
    "Address": {
    "City": "Arlington"
    }
}

Behandeln von Problemen mit Hybridabfragen

Verwenden Sie die folgende Tabelle, um häufige Probleme mit Hybridabfragen zu diagnostizieren.

Angelegenheit Mögliche Ursache Auflösung
Leere Ergebnisse Nichtübereinstimmung des Vektorfeldnamens oder fehlende Indexdaten Überprüfen Sie, ob fields in vectorQueries einem Vektorfeld in Ihrem Indexschema entspricht. Überprüfen Sie, ob Dokumente Vektordaten enthalten.
Niedrige RRF-Ergebnisse Normales RRF-Verhalten RRF-Bewertungen sind inhärent niedriger als Ähnlichkeitsbewertungen. Eine Punktzahl von 0,03 kann dennoch auf eine starke Übereinstimmung hindeuten.
Vektorergebnisse dominieren Textabfrage schneidet schlechter ab als erwartet Erhöhen Sie maxTextRecallSize, um mehr BM25-Ergebnisse einzuschließen oder die Vektorgewichtung anzupassen.
Textergebnisse dominieren Vektorähnlichkeit zu niedrig Überprüfen Sie die Einbettungsqualität. Stellen Sie sicher, dass der Abfragevektor dasselbe Modell wie Dokumentvektoren verwendet.
Der semantische Rangierer gibt weniger Ergebnisse zurück. Unzureichende Eingabedokumente Setzen Sie k auf mindestens 50, wenn Sie die semantische Rangfolge verwenden. Überprüfen Sie, ob Filter nicht zu restriktiv sind.
Filter nicht auf Vektoren angewendet Nur den globalen Filter verwenden Verwenden Sie filterOverride für die vektorspezifische Filterung in der Vektorabfrage (Vorschau).
Unerwartetes Feld in Ergebnissen select Parameter fehlt Fügen Sie select hinzu, um anzugeben, welche Felder zurückgegeben werden sollen. Schließen Sie Vektorfelder aus, um die Lesbarkeit zu verbessern.