Wyszukiwanie hybrydowe przy użyciu wektorów i pełnego tekstu w usłudze Azure AI Search

Wyszukiwanie hybrydowe to kombinacja pełnotekstowych i wektorowych zapytań wykonywanych względem indeksu wyszukiwania zawierającego zarówno przeszukiwalną zawartość w postaci zwykłego tekstu, jak i wygenerowane osadzanie. Na potrzeby zapytań wyszukiwanie hybrydowe to:

  • Pojedyncze żądanie zapytania zawierające parametry zapytania i searchvectors
  • Równoległe wykonywanie
  • Po scaleniu wyników w odpowiedzi zapytania wynik został obliczony przy użyciu wzajemnego łączenia rangi (RRF)

W tym artykule wyjaśniono pojęcia, korzyści i ograniczenia wyszukiwania hybrydowego. Obejrzyj to osadzone wideo , aby uzyskać wyjaśnienie i krótkie pokazy sposobu, w jaki pobieranie hybrydowe przyczynia się do wysokiej jakości aplikacji czatu i copilot.

Jak działa wyszukiwanie hybrydowe?

W usłudze Azure AI Search pola wektorowe zawierające osadzanie mogą żyć obok pól tekstowych i liczbowych, co umożliwia formułowanie zapytań hybrydowych wykonywanych równolegle. Zapytania hybrydowe mogą korzystać z istniejących funkcji, takich jak filtrowanie, tworzenie aspektów, sortowanie, ocenianie profilów i klasyfikacja semantyczna w jednym żądaniu wyszukiwania.

Wyszukiwanie hybrydowe łączy wyniki zarówno z pełnotekstowych, jak i wektorowych zapytań, które używają różnych funkcji klasyfikacji, takich jak BM25 i HNSW. Algorytm łączenia wzajemnego rangi (RRF) scala wyniki. Odpowiedź zapytania zawiera tylko jeden zestaw wyników, używając protokołu RRF do wybierania najbardziej odpowiednich dopasowań z każdego zapytania.

Struktura zapytania hybrydowego

Wyszukiwanie hybrydowe jest oparte na indeksie wyszukiwania zawierającym pola różnych typów danych, w tym zwykły tekst i liczby, współrzędne geograficzne wyszukiwania geoprzestrzennego i wektory dla matematycznej reprezentacji fragmentu tekstu. Niemal wszystkie funkcje zapytań w usłudze Azure AI Search można używać z zapytaniem wektorowym, z wyjątkiem interakcji po stronie klienta, takich jak autouzupełnianie i sugestie.

Reprezentatywne zapytanie hybrydowe może być następujące (zwróć uwagę, że wektor jest przycięty do zwięzłości):

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

Kluczowe kwestie obejmują:

  • search określa kwerendę wyszukiwania pełnotekstowego.
  • vectors w przypadku zapytań wektorowych, które mogą być wielokrotne, przeznaczone dla wielu pól wektorów. Jeśli miejsce osadzania zawiera zawartość wielojęzyczną, zapytania wektorowe mogą znaleźć dopasowanie bez analizatorów języka ani tłumaczenia.
  • select Określa, które pola mają być zwracane w wynikach, które mogą być polami tekstowymi czytelnymi dla człowieka.
  • filters może określać wyszukiwanie geoprzestrzenne lub inne kryteria dołączania i wykluczania, takie jak to, czy parking jest dołączony. Zapytanie geoprzestrzenne w tym przykładzie znajduje hotele w promieniu 300 kilometrów od Waszyngtonu.
  • facets Może służyć do obliczania zasobników aspektów na wynikach zwracanych z zapytań hybrydowych.
  • queryType=semantic wywołuje semantyczną klasyfikację, stosując zrozumienie odczytu maszyny w celu uwidocznienia bardziej odpowiednich wyników wyszukiwania.

Filtry i aspekty dotyczą struktur danych w indeksie, które różnią się od odwróconych indeksów używanych do wyszukiwania pełnotekstowego i indeksów wektorów używanych do wyszukiwania wektorowego. W związku z tym, gdy filtry i operacje aspektowe są wykonywane, wyszukiwarka może zastosować wynik operacyjny do wyników wyszukiwania hybrydowego w odpowiedzi.

Zwróć uwagę, że w zapytaniu nie ma orderby żadnych informacji. Jawne zamówienia sortowania zastępują wyniki sklasyfikowane według istotności, więc jeśli chcesz uzyskać podobieństwo i istotność BM25, pomiń sortowanie w zapytaniu.

Odpowiedź z powyższego zapytania może wyglądać następująco:

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

Wyszukiwanie hybrydowe łączy mocne strony wyszukiwania wektorów i wyszukiwania słów kluczowych. Zaletą wyszukiwania wektorowego jest znalezienie informacji, które są koncepcyjnie podobne do zapytania wyszukiwania, nawet jeśli w indeksie odwróconym nie ma pasujących słów kluczowych. Zaletą wyszukiwania słów kluczowych lub pełnotekstowych jest precyzja, dzięki czemu można zastosować klasyfikację semantyczną, która poprawia jakość początkowych wyników. Niektóre scenariusze — takie jak wykonywanie zapytań dotyczących kodów produktów, wysoce wyspecjalizowanego żargonu, dat i nazwisk osób — może działać lepiej dzięki wyszukiwaniu słów kluczowych, ponieważ może identyfikować dokładne dopasowania.

Testy porównawcze na rzeczywistych i porównawczych zestawach danych wskazują, że pobieranie hybrydowe z klasyfikacją semantyczną zapewnia znaczne korzyści w zakresie istotności wyszukiwania.

W poniższym filmie wideo wyjaśniono, jak pobieranie hybrydowe zapewnia optymalne dane uziemione do generowania przydatnych odpowiedzi sztucznej inteligencji.

Zobacz też

Wyszukiwanie wektorów przewyższanych za pomocą hybrydowego pobierania i klasyfikowania (blog tech)