Гибридный поиск с помощью векторов и полнотекстового текста в поиске ИИ Azure
Гибридный поиск — это сочетание полнотекстовых и векторных запросов, выполняемых в индексе поиска, содержащего как доступное для поиска содержимое обычного текста, так и созданные внедрения. В целях запроса гибридный поиск:
- Один запрос, включающий оба
search
иvectors
параметры запроса. - Параллельное выполнение
- С объединенными результатами в ответе на запрос забили с помощью Ревзального ранга Fusion (RRF)
В этой статье описываются понятия, преимущества и ограничения гибридного поиска. Ссылки в конце содержат инструкции и дальнейшие действия. Вы также можете посмотреть это внедренное видео , чтобы объяснить, как гибридное извлечение способствует высококачественным приложениям RAG.
Как работает гибридный поиск?
В поиске ИИ Azure векторные поля, содержащие внедрение, могут работать вместе с текстовыми и числовыми полями, что позволяет сформулировать гибридные запросы, которые выполняются параллельно. Гибридные запросы могут воспользоваться существующими функциями на основе текста, такими как фильтрация, фасетирование, сортировка, оценка профилей и семантический ранжирование в текстовых полях, при выполнении поиска сходства по векторам в одном запросе поиска.
Гибридный поиск объединяет результаты как полнотекстовых, так и векторных запросов, которые используют различные функции ранжирования, такие как BM25 для текста, и иерархический навигационный небольшой мир (HNSW) и исчерпывающие K Ближайшие соседи (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",
"vectorFilterMode": "postFilter",
"facets": [ "Address/StateProvince"],
"vectorQueries": [
{
"kind": "vector",
"vector": [ <array of embeddings> ]
"k": 50,
"fields": "DescriptionVector",
"exhaustive": true,
"oversampling": 20
},
{
"kind": "vector",
"vector": [ <array of embeddings> ]
"k": 50,
"fields": "Description_frVector",
"exhaustive": false,
"oversampling": 10
}
],
"skip": 0,
"top": 10,
"queryType": "semantic",
"queryLanguage": "en-us",
"semanticConfiguration": "my-semantic-config"
}
Ключевые моменты:
-
search
задает один полнотекстовый поисковый запрос. -
vectorQueries
для векторных запросов, которые могут быть несколькими, предназначенными для нескольких векторных полей. Если пространство внедрения включает многоязычное содержимое, векторные запросы могут найти совпадение без анализаторов языка или перевода. Если вы также используете семантический рангировщик, установитеk
значение 50, чтобы максимально увеличить входные данные. -
select
указывает, какие поля должны возвращаться в результатах, которые должны быть текстовыми полями, которые доступны для чтения, если вы отображаете их пользователям или отправляете их в LLM. -
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
}
}
]
}
Почему выбрать гибридный поиск?
Гибридный поиск объединяет сильные стороны векторного поиска и поиска ключевых слов. Преимущество векторного поиска заключается в поиске информации, которая концептуально похожа на поисковый запрос, даже если в инвертированном индексе нет совпадений ключевых слов. Преимуществом ключевого слова или полнотекстового поиска является точность, с возможностью применения необязательного семантического ранжирования, что повышает качество первоначальных результатов. Некоторые сценарии , такие как запросы по кодам продуктов, высоко специализированный жаргон, даты и имена людей , могут улучшить поиск по ключевым словам, так как он может определить точные совпадения.
Тестирование тестов на реальных и тестовых наборах данных указывает, что гибридное извлечение семантики семантического ранга обеспечивает значительные преимущества в релевантности поиска.
В следующем видео объясняется, как гибридное извлечение дает оптимальные данные о заземления для создания полезных ответов ИИ.