Partager via


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

La recherche hybride est une combinaison de requêtes vectorielles et de texte intégral qui s’exécutent sur un index de recherche contenant à 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 Azure AI, 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 de requêtes vectorielles et de texte intégral qui utilisent différentes fonctions de classement telles que BM25, HNSW et EKNN. Un algorithme de fusion de classement réciproque (RRF) fusionne les résultats. La réponse de requête fournit un seul jeu de résultats en utilisant RRF pour classer les résultats unifiés.

Structure d’une requête hybride

La recherche hybride repose du l’existence d’un index de recherche qui contient des champs de différents types de données, notamment le texte brut et les nombres, les coordonnées géographiques si vous voulez une recherche géospatiale, et les 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 de texte pur telles que la saisie semi-automatique et les suggestions.

Une requête hybride représentative peut être la suivante (notez que les requêtes vectorielles ont des valeurs d’espace réservé pour la concision) :

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

Les points clés sont les suivants :

  • search spécifie une seule 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 doivent ê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 classeur sémantique, en appliquant la compréhension de lecture automatique pour exposer des résultats de recherche plus pertinents. Le classement sémantique est facultatif. Si vous n’utilisez pas cette fonctionnalité, supprimez les trois dernières lignes de la requête hybride.

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

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 facultatif 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 classeur 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)