Hybridsuche mit Vektoren und Volltext in Azure AI Search

Die Hybridsuche ist eine Kombination aus Volltext- und Vektorabfragen, die für einen Suchindex ausgeführt werden, der sowohl durchsuchbare Nur-Text-Inhalte als auch generierte Einbettungen enthält. Für Abfragezwecke lautet die Hybridsuche:

  • Eine einzelne Abfrageanforderung, die sowohl search als auch vectors als Abfrageparameter enthält
  • Paralleles Ausführen
  • Mit zusammengeführten Ergebnissen in der Abfrageantwort, bewertet mit Reciprocal Rank Fusion (RRF)

In diesem Artikel werden die Konzepte, Vorteile und Einschränkungen der Hybridsuche erläutert. Schauen Sie sich dieses eingebettete Video an, um eine Erläuterung und kurze Demo darüber zu erhalten, wie ein hybrider Abruf zu qualitativ hochwertigen Chat- und Copilot-Apps beiträgt.

Wie funktioniert die Hybridsuche?

In Azure KI-Suche können Vektorfelder, die Einbettungen enthalten, zusammen mit Textfeldern und numerischen Feldern vorhanden sein, sodass Sie parallel ausführbare Hybridabfragen formulieren können. Hybridabfragen können vorhandene Funktionen wie Filterung, Facetten, Sortierung, Bewertungsprofile und semantische Rangfolge in einer einzigen Suchanforderung nutzen.

Die Hybridsuche kombiniert Ergebnisse aus Volltext- und Vektorabfragen, die verschiedene Bewertungsfunktionen wie BM25, HNSW und EKNN verwenden. Ein RRF-Algorithmus (Reciprocal Rank Fusion) mergt die Ergebnisse. Die Abfrageantwort stellt nur ein Resultset bereit, wobei RRF verwendet wird, um die einheitlichen Ergebnisse zu bewerten.

Struktur einer Hybridabfrage

Die Hybridsuche basiert auf einem Suchindex, der Felder verschiedener Datentypen enthält, einschließlich Nur-Text-Elemente und Zahlen, Geokoordinaten für die räumliche Suche und Vektoren für die mathematische Darstellung eines Textblocks. Sie können fast alle Abfragefunktionalitäten in Azure KI-Suche mit einer Vektorabfrage verwenden, mit Ausnahme von clientseitigen Interaktionen wie AutoVervollständigen und Vorschlägen.

Eine repräsentative hybride Abfrage könnte wie folgt aussehen (beachten Sie, dass die Vektorabfragen der Kürze halber Platzhalterwerte haben):

POST https://{{searchServiceName}}.search.windows.net/indexes/hotels-vector-quickstart/docs/search?api-version=2024-07-01
  content-type: application/JSON
{
    "count": true,
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelId, HotelName, Category, Description, Address/City, Address/StateProvince",
    "filter": "geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 300",
    "facets": [ "Address/StateProvince"], 
    "vectors": [
        {
            "value": [ <array of embeddings> ]
            "k": 7,
            "fields": "DescriptionVector"
        },
        {
            "value": [ <array of embeddings> ]
            "k": 7,
            "fields": "Description_frVector"
        }
    ],
    "queryType": "semantic",
    "queryLanguage": "en-us",
    "semanticConfiguration": "my-semantic-config"
}

Wichtige Punkte sind:

  • search gibt eine einzelne Volltextsuchabfrage an.
  • vectors für Vektorabfragen, die mehrfach, also auf mehrere Vektorfelder ausgerichtet, sein können. Wenn der Einbettungsbereich mehrsprachige Inhalte enthält, können Vektorabfragen die Übereinstimmung ohne Sprachanalyse oder Übersetzung finden.
  • select gibt an, welche Felder in Ergebnissen zurückgegeben werden sollen, wobei es sich um Textfelder handeln sollte, die für den Menschen lesbar sind.
  • filters kann Geodatensuche oder andere Ein- und Ausschlusskriterien festlegen, z. B. ob Parkplätze enthalten sind. Die Geodatenabfrage in diesem Beispiel findet Hotels innerhalb eines Radius von 300 Kilometern von Washington D.C.
  • facets kann verwendet werden, um Facetten-Buckets über Ergebnisse zu berechnen, die von Hybridabfragen zurückgegeben werden.
  • queryType=semantic ruft den semantischen Sortierer auf, wobei das Verständnis des maschinellen Lesens angewendet wird, um relevantere Suchergebnisse anzuzeigen. Die semantische Bewertung ist optional. Wenn Sie dieses Feature nicht verwenden, entfernen Sie die letzten drei Zeilen der Hybridabfrage.

Filter- und Facetten-Zieldatenstrukturen innerhalb des Indexes, die sich von den invertierten Indizes unterscheiden, die für die Volltextsuche verwendet werden, und von den Vektorindizes, die für die Vektorsuche verwendet werden. Wenn Filter und Facetten-Vorgänge angewendet werden, kann die Suchmaschine das operative Ergebnis auf die Hybridsuchergebnisse in der Antwort anwenden.

Beachten Sie, dass die Abfrage orderby nicht enthalten ist. Explizite Sortierreihenfolgen setzen relevanzbezogene Ergebnisse außer Kraft. Wenn Sie eine Ähnlichkeit und BM25-Relevanz wünschen, lassen Sie die Sortierung in Ihrer Abfrage weg.

Eine Antwort aus der obigen Abfrage könnte wie folgt aussehen:

{
    "@odata.count": 3,
    "@search.facets": {
        "Address/StateProvince": [
            {
                "count": 1,
                "value": "NY"
            },
            {
                "count": 1,
                "value": "VA"
            }
        ]
    },
    "value": [
        {
            "@search.score": 0.03333333507180214,
            "@search.rerankerScore": 2.5229012966156006,
            "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",
                "StateProvince": "VA"
            }
        },
        {
            "@search.score": 0.032522473484277725,
            "@search.rerankerScore": 2.111117362976074,
            "HotelId": "48",
            "HotelName": "Nordick's Valley Motel",
            "Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer.  Hiking? Wine Tasting? Exploring the caverns?  It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.",
            "Category": "Boutique",
            "Address": {
                "City": "Washington D.C.",
                "StateProvince": null
            }
        }
    ]
}

Die Hybridsuche kombiniert die Stärken der Vektorsuche und der Stichwortsuche. Der Vorteil der Vektorsuche besteht darin, Informationen zu finden, die ihrer Suchabfrage konzeptionell ähnlich sind, auch wenn im invertierten Index keine Schlüsselwortübereinstimmungen vorhanden sind. Der Vorteil der Schlüsselwort- oder Volltextsuche ist Präzision, mit der Möglichkeit, optional eine semantische Bewertung anzuwenden, welche die Qualität der ersten Ergebnisse verbessert. Einige Szenarien – z. B. Abfragen von Produktcodes, hochspezialisiertem Jargon, Datumsangaben und Namen von Personen – können mit der Stichwortsuche besser funktionieren, da sie genaue Übereinstimmungen identifizieren kann.

Vergleichstests auf realen und Vergleichsdatensätzen deuten darauf hin, dass der Hybridabruf mit semantischem Sortierer erhebliche Vorteile bei der Suchrelevanz bietet.

Im folgenden Video wird erläutert, wie Ihnen der Hybridabruf optimale Bodendaten zum Generieren nützlicher KI-Antworten liefert.

Siehe auch

Outperform-Vektorsuche mit Hybridabruf und Rangfolge (Tech-Blog)