Recherche hybride à l’aide de vecteurs et de texte intégral dans Recherche Azure AI

La recherche hybride est une combinaison de requêtes de texte intégral et de vecteur qui s’exécutent sur un index de recherche qui contient à la fois du contenu texte brut pouvant faire l’objet d’une recherche et des incorporations générées. À des fins de requête, la recherche hybride est la suivante :

  • Requête unique qui inclut à la fois des paramètres de requête search et vectors
  • Exécution en parallèle
  • Avec les résultats fusionnés dans la réponse de requête, notées à l’aide de la fusion de classement réciproque (RRF)

Cet article explique les concepts, les avantages et les limitations de la recherche hybride. Regardez cette vidéo incorporée pour obtenir une explication et des démonstrations courtes de la façon dont la récupération hybride contribue à des applications de copilote et de style de conversation de haute qualité.

Comment fonctionne la recherche hybride ?

Dans Recherche IA Azure, les champs vectoriels contenant des incorporations peuvent vivre en même temps que les champs textuels et numériques, ce qui vous permet de formuler des requêtes hybrides qui s’exécutent en parallèle. Les requêtes hybrides peuvent tirer parti des fonctionnalités existantes telles que le filtrage, les facettes, le tri, les profils de score et le classement sémantique dans une seule requête de recherche.

La recherche hybride combine les résultats des requêtes de texte intégral et de vecteur, qui utilisent différentes fonctions de classement telles que BM25 et HNSW. Un algorithme RRF (Mutual Rank Fusion) fusionne les résultats. La réponse de requête fournit un seul jeu de résultats, en utilisant RRF pour sélectionner les correspondances les plus pertinentes de chaque requête.

Structure d’une requête hybride

La recherche hybride est précédée d’un index de recherche qui contient des champs de différents types de données, notamment du texte brut et des nombres, des coordonnées géographiques pour la recherche géospatiale et des vecteurs pour une représentation mathématique d’un bloc de texte. Vous pouvez utiliser presque toutes les fonctionnalités de requête dans Recherche Azure AI avec une requête vectorielle, à l’exception des interactions côté client telles que l’autocomplétion et les suggestions.

Une requête hybride représentative peut être la suivante (notez que le vecteur est coupé pour la concision) :

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

Les points clés sont les suivants :

  • search spécifie une requête de recherche en texte intégral.
  • vectors pour les requêtes vectorielles, qui peuvent être multiples, ciblant plusieurs champs vectoriels. Si l’espace d’incorporation inclut du contenu multilingue, les requêtes vectorielles peuvent trouver la correspondance sans analyseur de langue ni traduction requis.
  • select spécifie les champs à retourner dans les résultats, qui peuvent être des champs de texte lisibles par l’homme.
  • filters peut spécifier la recherche géospatiale ou d’autres critères d’inclusion et d’exclusion, par exemple si le stationnement est inclus. La requête géospatiale dans cet exemple recherche des hôtels dans un rayon de 300 kilomètres de Washington D.C.
  • facets peut être utilisé pour calculer des compartiments de facettes sur des résultats retournés par des requêtes hybrides.
  • queryType=semantic appelle le classement sémantique, en appliquant la compréhension de lecture automatique pour exposer des résultats de recherche plus pertinents.

Les filtres et facettes ciblent des structures de données au sein des index distincts des index inversés utilisés pour la recherche en texte intégral et les index vectoriels utilisés pour la recherche vectorielle. Par conséquent, lorsque des filtres et des opérations à facettes s’exécutent, le moteur de recherche peut appliquer le résultat opérationnel aux résultats de recherche hybrides dans la réponse.

Notez qu’il n’y a pas de orderby dans la requête. Les ordres de tri explicites remplacent les résultats classés par pertinence. Par conséquent, si vous souhaitez une similarité et une pertinence BM25, omettez le tri dans votre requête.

Une réponse de la requête ci-dessus peut ressembler à ceci :

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

La recherche hybride combine les forces de la recherche vectorielle et de la recherche par mot clé. L’avantage de la recherche vectorielle est de trouver des informations qui sont conceptuellement similaires à votre requête, même s’il n’y a pas de mots-clés correspondants dans l’index inversé. L’avantage de la recherche par mot clé ou en texte intégral est la précision, avec la possibilité d’appliquer le classement sémantique qui améliore la qualité des résultats initiaux. Certains scénarios, tels que l’interrogation sur les codes de produit, le jargon hautement spécialisé, les dates et les noms des personnes, peuvent s’améliorer avec la recherche de mots clés, car elle peut identifier des correspondances exactes.

Les tests de référence sur les jeux de données réels et de référence indiquent que la récupération hybride avec le classement sémantique offre des avantages significatifs dans la pertinence de la recherche.

La vidéo suivante explique comment la récupération hybride vous donne des données de base optimales pour générer des réponses d’IA utiles.

Voir aussi

Une recherche vectorielle plus performante avec des fonctionnalités de récupération et de classement hybrides (Blog Tech)