Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
Ein Azure-Abonnement. Erstellen Sie eine kostenlos.
Ein Azure KI-Suche-Dienst. Ein Dienst erstellen oder finden Sie einen vorhandenen Dienst.
Ein Suchindex, der Vektor- und Nichtvektorfelder enthält
searchable. Es wird empfohlen, dass der Assistent zum Importieren von Daten schnell einen Index erstellt. Andernfalls siehe Erstellen eines Indexes und Hinzufügen von Vektorfeldern zu einem Suchindex.Berechtigungen: Sie benötigen den Suchindexdatenleser , um einen Index abzufragen. Zum Erstellen oder Aktualisieren eines Indexes benötigen Sie einen Mitwirkenden für Suchindex-Daten. Weitere Informationen finden Sie unter "Verbinden mithilfe von Rollen".
(Optional) SDK-Installation:
- Python:
pip install azure-search-documents - C#:
dotnet add package Azure.Search.Documents
- Python:
(Optional) Wenn Sie eine integrierte Text-in-Vektorkonvertierung einer Abfragezeichenfolge benötigen, erstellen und zuweisen Sie einen Vektorizer zu Vektorfeldern im Suchindex.
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
kdem Bereich von 30 bis 50,topim 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
maxTextRecallSizeschrittweise 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
kundtopin 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:
- Reduzieren Sie zuerst teure Vektorsucheinstellungen.
Wenn
efSearchundmaxConnectionsbeispielsweise aggressiv festgelegt sind, verringern Sie sie vor dem Skalieren (z. B. reduzieren SieefSearchvon ungefähr 800 auf 128 bis 192, und verringern SiemaxConnectionsvon 64 auf 32). - Beschränken Sie den semantischen Reranking-Bereich auf Fälle, die davon profitieren.
- Erneutes Testen der Latenz und 429-Raten unter repräsentativer Auslastung.
- 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.
Wechseln Sie zum Suchdienst im Azure-Portal.
Wählen Sie unter "Suchverwaltungsindizes>" einen Index mit Vektoren und nicht Vektorinhalten aus. Der Such-Explorer ist die erste Registerkarte.
Wechseln Sie unter "Ansicht" zur JSON-Ansicht , sodass Sie eine Vektorabfrage einfügen können.
Ersetzen Sie die Standardabfragevorlage durch eine Hybridabfrage. Eine einfache Hybridabfrage enthält eine Textabfrage, die in
searchangegeben ist, und eine Vektorabfrage, die untervectorQueries.vectorangegeben 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 } ] }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.
Hier ist eine weitere Version der Abfrage. Dadurch wird eine
countfür die Anzahl der gefundenen Übereinstimmungen, einenselectParameter für die Auswahl bestimmter Felder und eintopParameter 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
kDokumente. - In einer Hybridabfrage berücksichtigen Facets sowohl Vektor- als auch Textergebnisse. Die Vektorseite trägt die
knächstgelegenen Dokumente bei. Die textbasierte Komponente liefert nach BM25 eingestufte Dokumente. DercountAndFacetModeParameter (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.
Verwenden Sie Search - POST (Vorschau) oder Suche – GET (Vorschau), um Vorschauparameter anzugeben.
Fügen Sie ein
hybridSearchAbfrageparameterobjekt 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:maxTextRecallSizegibt 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.countAndFacetModegibt die Anzahl und den Facet-Gültigkeitsbereich für eine Hybridabfrage an. Der StandardwertcountAllResultsverwendet 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 desmaxTextRecallSize-Fensters liegen. Verwenden SiecountRetrievableResults, um Anzahl und Facets auf die für das Ranking abgerufenen Dokumente zu beschränken, einschließlich dermaxTextRecallSizenach BM25 eingestuften Dokumente und derkVektortreffer.
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 auchtop,skipundnextfestlegen, 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
filterableIndexschema 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. UmpostFilteroderstrictPostFilter(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:
Verwenden Sie die REST-API latest preview Search Documents oder ein Azure SDK Betapaket, das das Feature bereitstellt.
Ändern Sie eine Abfrageanforderung, und fügen Sie einen neuen
vectorQueries.filterOverrideParameter zu einem OData-Filterausdruck hinzu.
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
}
Beispiel: Semantische Hybridsuche
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.
preFilterwird vor der Abfrageausführung angewendet. Wenn der Präfilter den Suchbereich auf 100 Dokumente reduziert, wird die Vektorabfrage über dasDescriptionVectorFeld 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.postFilterwird 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 Topergebnisseknach der Abfrageausführung angewendet. Damit werden immer weniger als oder genaukDokumente 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
retrievableFelder (eine REST-API-Standardeinstellung). - Felder, die in einem
selectParameter 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": nErgebnisse für nur Schlüsselwortabfragen (kein Vektor) -
"k": nErgebnisse für nur Vektorabfragen -
"top": nErgebnisse 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
topauf 50. - Für die Hybridsuche
kauf 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. |
Verwandte Inhalte
- Übersicht über die Hybridsuche
- Hybrid-Suchrangfolge mit RRF
- Vorgehensweise für die Vektorsuche
- Semantische Rangfolge
- Vektorsuchfilter
- Überprüfen Sie den Vektordemocode für Python, C# oder JavaScript