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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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