Condividi tramite


Ricerca ibrida con vettori e full-text in Azure AI Search

La ricerca ibrida è una combinazione di query full-text e vettoriali eseguite su un indice di ricerca contenente sia contenuto testo normale ricercabile che incorporamenti generati. A scopo di query, la ricerca ibrida è:

  • Una singola richiesta di query che include parametri di query sia search che vectors
  • Esecuzione in parallelo
  • Con risultati uniti nella risposta della query, a cui viene assegnato un punteggio RRF (Reciprocal Rank Fusion)

Questo articolo illustra i concetti, i vantaggi e le limitazioni della ricerca ibrida. Guardare questo video incorporato per una spiegazione e brevi demo del modo in cui il recupero ibrido contribuisce alle app in stile chat e copilot di alta qualità.

Come funziona la ricerca ibrida?

In Azure AI Search, campi vettoriali contenenti incorporamenti possono esistere insieme a campi testuali e numerici, consentendo di formulare query ibride eseguite in parallelo. Le query ibride possono sfruttare funzionalità esistenti come il filtro, il faceting, l'ordinamento, i profili di punteggio e la classificazione semantica in una singola richiesta di ricerca.

La ricerca ibrida combina i risultati delle query full-text e vettoriali, che usano funzioni di classificazione diverse, ad esempio BM25, HNSW e EKNN. Un algoritmo RRF (Reciprocal Rank Fusion) unisce i risultati. La risposta alla query fornisce un solo set di risultati, usando RRF per classificare i risultati unificati.

Struttura di una query ibrida

La ricerca ibrida si basa sulla presenza di un indice di ricerca che contiene campi di vari tipi di dati, tra cui testo normale e numeri, coordinate geografiche se si desidera una ricerca geospaziale e vettori per una rappresentazione matematica di un blocco di testo. È possibile usare quasi tutte le funzionalità di query in Ricerca di intelligenza artificiale di Azure con una query vettoriale, ad eccezione delle interazioni sul lato client di testo puro, ad esempio completamento automatico e suggerimenti.

Una query ibrida rappresentativa potrebbe essere la seguente (si noti che le query vettoriali hanno valori segnaposto per brevità):

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

I punti chiave includono:

  • search specifica una singola query di ricerca full-text.
  • vectors per le query vettoriali, che possono essere multiple, destinate a più campi vettoriali. Se lo spazio di incorporamento include contenuto multilingue, le query vettoriali possono trovare la corrispondenza senza alcuna traduzione o analizzatore del linguaggio.
  • select specifica i campi da restituire nei risultati, che devono essere campi di testo leggibili.
  • filters può specificare la ricerca geospaziale o altri criteri di inclusione ed esclusione, ad esempio se il parcheggio è incluso. La query geospaziale in questo esempio trova gli hotel entro un raggio di 300 chilometri di Washington D.C.
  • facets può essere usato per calcolare bucket di facet sui risultati restituiti da query ibride.
  • queryType=semantic richiama il classificatore semantico, applicando la comprensione della lettura automatica per visualizzare risultati di ricerca più pertinenti. La classificazione semantica è facoltativa. Se non si usa questa funzionalità, rimuovere le ultime tre righe della query ibrida.

Filtri e facet hanno come destinazione strutture di dati all'interno dell'indice, distinte dagli indici invertiti usati per la ricerca full-text e gli indici vettoriali usati per la ricerca vettoriale. Di conseguenza, quando vengono eseguiti filtri e operazioni con faceting, il motore di ricerca può applicare il risultato operativo ai risultati della ricerca ibrida nella risposta.

Tenere presente la query non include orderby. Gli ordini di ordinamento espliciti eseguono l'override dei risultati classificati con pertinenza, quindi, se si desidera una somiglianza e una pertinenza BM25, omettere l'ordinamento nella query.

Una risposta dalla query precedente potrebbe essere simile alla seguente:

{
    "@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 ricerca ibrida combina i punti di forza della ricerca vettoriale e della ricerca di parole chiave. Il vantaggio della ricerca vettoriale consiste nell'individuazione di informazioni concettualmente simili alla query di ricerca, anche se non sono presenti corrispondenze di parole chiave nell'indice invertito. Il vantaggio della ricerca full-text o della parola chiave è la precisione, con la possibilità di applicare una classificazione semantica facoltativa che migliora la qualità dei risultati iniziali. Alcuni scenari, ad esempio esecuzione di query su codici di prodotto, gergo altamente specializzato, date e nomi di persone, possono offrire prestazioni migliori con la ricerca di parole chiave perché possono identificare corrispondenze esatte.

I test di benchmark su set di dati reali e di confronto indicano che il recupero ibrido con classificatore semantico offre vantaggi significativi nella pertinenza della ricerca.

Il video seguente illustra in che modo il recupero ibrido offre dati di base ottimali per generare risposte utili dell'intelligenza artificiale.

Vedi anche

Ottenere prestazioni migliori della ricerca vettoriale con la classificazione e il recupero ibridi (blog tecnico)