Ricerca ibrida con vettori e testo completo in Ricerca di intelligenza artificiale di Azure

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

  • Una singola richiesta di query che include parametri di query e searchvectors
  • Esecuzione in parallelo
  • Con i risultati uniti nella risposta della query, assegnare un punteggio usando La fusione di rango reciproco (RRF)

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 di alta qualità di chat e copilot.

Come funziona la ricerca ibrida?

In Ricerca di intelligenza artificiale di Azure i campi vettoriali contenenti incorporamenti possono essere visualizzati insieme a campi testuali e numerici, consentendo di formulare query ibride eseguite in parallelo. Le query ibride possono sfruttare le funzionalità esistenti, ad esempio il filtro, l'ordinamento, 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 e HNSW. Un algoritmo RRF (Reciprocal Rank Fusion) unisce i risultati. La risposta alla query fornisce un solo set di risultati, usando RRF per selezionare le corrispondenze più rilevanti da ogni query.

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 per la 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 lato client, ad esempio completamento automatico e suggerimenti.

Una query ibrida rappresentativa potrebbe essere la seguente (si noti che il vettore viene tagliato per brevità):

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

I punti chiave includono:

  • search specifica una 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 possono 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 i bucket di facet sui risultati restituiti dalle query ibride.
  • queryType=semantic richiama la classificazione semantica, applicando la comprensione della lettura automatica per visualizzare risultati di ricerca più pertinenti.

I filtri e i facet hanno come destinazione le 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 in base a facet, il motore di ricerca può applicare il risultato operativo ai risultati della ricerca ibrida nella risposta.

Si noti che nella query non è presente alcun orderby elemento. 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": "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 ricerca ibrida combina i punti di forza della ricerca vettoriale e della ricerca di parole chiave. Il vantaggio della ricerca vettoriale è trovare 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 la classificazione semantica che migliora la qualità dei risultati iniziali. Alcuni scenari, ad esempio l'esecuzione di query sui codici prodotto, il gergo altamente specializzato, le date e i nomi degli utenti, 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 benchmark indicano che il recupero ibrido con classificazione semantica 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 all'intelligenza artificiale.

Vedi anche

Ricerca di vettori outperform con recupero ibrido e classificazione (blog tecnico)