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 AI Search können Vektorfelder, die Einbettungen enthalten, zusammen mit Text- und numerischen Feldern leben, sodass Sie Hybridabfragen formulieren können, die parallel ausgeführt werden. 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 und HNSW verwenden. Ein RRF-Algorithmus (Reziprozis Rank Fusion) führt die Ergebnisse zusammen. Die Abfrageantwort stellt nur ein Resultset bereit, wobei RRF verwendet wird, um die relevantesten Übereinstimmungen aus jeder Abfrage zu wählen.

Struktur einer Hybridabfrage

Die Hybridsuche basiert auf einem Suchindex, der Felder verschiedener Datentypen enthält, einschließlich Nur-Text und Zahlen, Geokoordinaten für die Geospatialsuche und Vektoren für eine mathematische Darstellung eines Textabschnitts. Sie können fast alle Abfragefunktionen in Azure AI Search mit einer Vektorabfrage verwenden, mit Ausnahme von clientseitigen Interaktionen wie AutoVervollständigung und Vorschlägen.

Eine repräsentative Hybridabfrage kann wie folgt assehen (beachten Sie, dass der Vektor aus Platzgründen gekürzt ist):

POST https://{{searchServiceName}}.search.windows.net/indexes/hotels-vector-quickstart/docs/search?api-version=2023-11-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 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, was Textfelder, die für Menschen die lesbar sind, sein können.
  • 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 die semantische Rangfolge auf, wobei das Verständnis des maschinellen Lesens angewendet wird, um relevantere Suchergebnisse anzuzeigen.

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": "Old Carrabelle 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 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, semantische Rangfolge 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 semantischer Rangfolge 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)