Share via


Hybride zoekopdrachten met vectoren en volledige tekst in Azure AI Search

Hybride zoeken is een combinatie van volledige tekst- en vectorquery's die worden uitgevoerd op basis van een zoekindex die zowel doorzoekbare tekstinhoud als gegenereerde insluitingen bevat. Hybride zoekopdrachten zijn voor querydoeleinden:

  • Eén queryaanvraag die zowel search als vectors queryparameters bevat
  • Parallel uitvoeren
  • Met samengevoegde resultaten in het queryantwoord, gescoord met behulp van Wederzijdse Rank Fusion (RRF)

In dit artikel worden de concepten, voordelen en beperkingen van hybride zoekopdrachten uitgelegd. Bekijk deze ingesloten video voor een uitleg en korte demo's over hoe hybride ophalen bijdraagt aan chatstijl en copilot-apps van hoge kwaliteit.

Hoe werkt hybride zoeken?

In Azure AI Search kunnen vectorvelden met insluitingen naast tekst- en numerieke velden leven, zodat u hybride query's kunt formuleren die parallel worden uitgevoerd. Hybride query's kunnen profiteren van bestaande functionaliteit, zoals filteren, facet, sorteren, scoreprofielen en semantische classificatie in één zoekaanvraag.

Hybride zoekopdrachten combineren resultaten van zowel volledige tekst als vectorquery's, die gebruikmaken van verschillende classificatiefuncties zoals BM25 en HNSW. Het RRF-algoritme (Reciprocal Rank Fusion) voegt de resultaten samen. Het queryantwoord biedt slechts één resultatenset, waarbij RRF wordt gebruikt om de meest relevante overeenkomsten uit elke query te kiezen.

Structuur van een hybride query

Hybride zoekopdrachten zijn gebaseerd op een zoekindex die velden van verschillende gegevenstypen bevat, waaronder tekst zonder opmaak en getallen, geografische coördinaten voor georuimtelijke zoekopdrachten en vectoren voor een wiskundige weergave van een stuk tekst. U kunt bijna alle querymogelijkheden in Azure AI Search gebruiken met een vectorquery, met uitzondering van interacties aan de clientzijde, zoals automatisch aanvullen en suggesties.

Een representatieve hybride query kan er als volgt uitzien (u ziet dat de vector is ingekort voor beknoptheid):

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

Belangrijke punten zijn onder andere:

  • search hiermee geeft u een zoekquery voor volledige tekst op.
  • vectors voor vectorquery's, die meerdere vectorvelden kunnen zijn. Als de insluitingsruimte meertalige inhoud bevat, kunnen vectorquery's de overeenkomst vinden zonder taalanalyses of vertaling vereist.
  • select geeft aan welke velden moeten worden geretourneerd in resultaten, die tekstvelden kunnen zijn die door mensen kunnen worden gelezen.
  • filters kan georuimtelijke zoekopdrachten of andere criteria voor opnemen en uitsluiten opgeven, zoals of parkeren is opgenomen. De georuimtelijke query in dit voorbeeld vindt hotels binnen een straal van 300 kilometer van Washington D.C.
  • facets kan worden gebruikt voor het berekenen van facet-buckets ten opzichte van resultaten die worden geretourneerd door hybride query's.
  • queryType=semantic roept semantische classificatie aan, waarbij machineleesbegrip wordt toegepast om relevantere zoekresultaten weer te geven.

Filters en facetten richten zich op gegevensstructuren binnen de index die verschillen van de omgekeerde indexen die worden gebruikt voor zoeken in volledige tekst en de vectorindexen die worden gebruikt voor vectorzoekopdrachten. Als filters en facetbewerkingen worden uitgevoerd, kan de zoekmachine het operationele resultaat toepassen op de hybride zoekresultaten in het antwoord.

U ziet dat de query niet orderby aanwezig is. Expliciete sorteervolgorde overschrijft relevantie gerangschikte resultaten, dus als u overeenkomsten en BM25 relevantie wilt, laat u sorteren in uw query weg.

Een antwoord van de bovenstaande query kan er als volgt uitzien:

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

Hybride zoeken combineert de sterke punten van vectorzoekopdrachten en trefwoordzoekopdrachten. Het voordeel van vectorzoekopdrachten is het zoeken naar informatie die conceptueel vergelijkbaar is met uw zoekquery, zelfs als er geen trefwoordovereenkomsten zijn in de omgekeerde index. Het voordeel van trefwoorden of zoeken in volledige tekst is precisie, met de mogelijkheid om semantische classificatie toe te passen die de kwaliteit van de eerste resultaten verbetert. Sommige scenario's, zoals het uitvoeren van query's op productcodes, zeer gespecialiseerde jargon, datums en namen van personen, kunnen beter presteren met trefwoordzoekopdrachten, omdat hiermee exacte overeenkomsten kunnen worden geïdentificeerd.

Benchmarktests op echte gegevenssets en benchmarkgegevenssets geven aan dat hybride ophalen met semantische classificatie aanzienlijke voordelen biedt op zoekrelevantie.

In de volgende video wordt uitgelegd hoe hybride ophalen u optimale grondgegevens biedt voor het genereren van nuttige AI-antwoorden.

Zie ook

Outperform vector search with hybrid retrieval and ranking (Tech blog)