Гибридный поиск с помощью векторов и полнотекстового текста в поиске ИИ Azure

Гибридный поиск — это сочетание полнотекстовых и векторных запросов, выполняемых в индексе поиска, содержащего как доступное для поиска содержимое обычного текста, так и созданные внедрения. В целях запроса гибридный поиск:

  • Один запрос, включающий оба search и vectors параметры запроса.
  • Параллельное выполнение
  • С объединенными результатами в ответе на запрос забили с помощью Ревзального ранга Fusion (RRF)

В этой статье описываются понятия, преимущества и ограничения гибридного поиска. Просмотрите это внедренное видео , чтобы объяснить и короткие демонстрации того, как гибридное извлечение способствует высококачественным приложениям чата и copilot.

Как работает гибридный поиск?

В поиске ИИ Azure векторные поля, содержащие внедрение, могут работать вместе с текстовыми и числовыми полями, что позволяет сформулировать гибридные запросы, которые выполняются параллельно. Гибридные запросы могут воспользоваться преимуществами существующих функций, таких как фильтрация, фасетирование, сортировка, оценка профилей и семантический ранжирование в одном поисковом запросе.

Гибридный поиск объединяет результаты как полнотекстовых, так и векторных запросов, которые используют различные функции ранжирования, такие как BM25, HNSW и EKNN. Алгоритм обратного ранжирования Fusion (RRF) объединяет результаты. Ответ запроса предоставляет только один результирующий набор, используя RRF для ранжирования унифицированных результатов.

Структура гибридного запроса

Гибридный поиск определяется наличие индекса поиска, содержащего поля различных типов данных, включая обычный текст и цифры, географические координаты, если требуется геопространственный поиск, и векторы для математического представления фрагмента текста. Вы можете использовать почти все возможности запросов в поиске ИИ Azure с векторным запросом, за исключением взаимодействия на стороне клиента чистого текста, таких как автозавершение и предложения.

Репрезентативный гибридный запрос может быть следующим (обратите внимание, что векторные запросы имеют значения заполнителей для краткости):

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

Ключевые моменты:

  • search задает один полнотекстовый поисковый запрос.
  • vectors для векторных запросов, которые могут быть несколькими, предназначенными для нескольких векторных полей. Если пространство внедрения включает многоязычное содержимое, векторные запросы могут найти совпадение без анализаторов языка или перевода.
  • select указывает, какие поля должны возвращаться в результатах, которые должны быть текстовыми полями, которые доступны для чтения.
  • filters может указывать геопространственный поиск или другие критерии включения и исключения, например, включена ли парковка. Геопространственный запрос в этом примере находит отели в радиусе 300 километров от Вашингтона.
  • facets можно использовать для вычисления сегментов аспектов по результатам, возвращаемым из гибридных запросов.
  • queryType=semantic вызывает семантический рангировщик, применяя понимание машинного чтения для получения более релевантных результатов поиска. Семантическое ранжирование является необязательным. Если вы не используете эту функцию, удалите последние три строки гибридного запроса.

Фильтры и аспекты целевых структур данных в индексе, отличные от инвертированных индексов, используемых для полнотекстового поиска и векторных индексов, используемых для поиска векторов. Таким образом, при выполнении фильтров и фасетных операций поисковая система может применить операционный результат к результатам гибридного поиска в ответе.

Обратите внимание, что в запросе нет orderby . Явные заказы сортировки переопределяют результаты ранжирования релевантности, поэтому если требуется сходство и релевантность BM25, опустите сортировку в запросе.

Ответ из приведенного выше запроса может выглядеть следующим образом:

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

Гибридный поиск объединяет сильные стороны векторного поиска и поиска ключевых слов. Преимущество векторного поиска заключается в поиске информации, которая концептуально похожа на поисковый запрос, даже если в инвертированном индексе нет совпадений ключевых слов. Преимуществом ключевого слова или полнотекстового поиска является точность, с возможностью применения необязательного семантического ранжирования, что повышает качество первоначальных результатов. Некоторые сценарии , такие как запросы по кодам продуктов, высоко специализированный жаргон, даты и имена людей , могут улучшить поиск по ключевым словам, так как он может определить точные совпадения.

Тестирование тестов на реальных и тестовых наборах данных указывает, что гибридное извлечение семантики семантического ранга обеспечивает значительные преимущества в релевантности поиска.

В следующем видео объясняется, как гибридное извлечение дает оптимальные данные о заземления для создания полезных ответов ИИ.

См. также

Поиск вектора outperform с гибридным извлечением и ранжированием (технический блог)