Поделиться через


Создание семантического запроса в поиске ИИ Azure

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

Необходимые компоненты

Примечание.

Заголовки и ответы извлекаются дословно из текста в документе поиска. Семантическая подсистема использует понимание машинного чтения для распознавания содержимого с характеристиками подпись или ответа, но не создает новые предложения или фразы. По этой причине содержимое, включающее объяснения или определения, лучше всего подходит для семантического ранжирования. Если требуется взаимодействие в стиле чата с созданными ответами, см. статью "Извлечение дополненного поколения" (RAG).

Выбор клиента

Выберите клиент поиска, поддерживающий семантический ранжирование. Ниже приведено несколько вариантов:

Избегайте функций, которые обходят оценку релевантности

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

  • Запрос со search=* строкой поиска или пустой строкой поиска, такой как чистый запрос только для фильтра, не будет работать, так как не нужно измерять семантику релевантности. Запрос должен предоставлять термины или фразы, которые можно оценить во время обработки.

  • Запрос, состоящий из полного синтаксиса Lucene (queryType=full) несовместим с семантической ранжированием (queryType=semantic). Семантическая модель не поддерживает полный синтаксис Lucene.

  • Сортировка (предложения orderBy) для определенных полей переопределяет оценки поиска и семантические оценки. Учитывая, что семантическая оценка должна предоставлять рейтинг, добавление предложения orderby приводит к ошибке HTTP 400 при применении семантического ранжирования по упорядоченным результатам.

Настройка запроса

На этом шаге добавьте параметры в запрос запроса. Для успешного выполнения запроса должен быть полнотекстовый поиск (с помощью search параметра, передаваемого в строку), а индекс должен содержать текстовые поля с форматированным семантическим содержимым и семантической конфигурацией.

Обозреватель поиска включает параметры семантического ранжирования.

  1. Войдите на портал Azure.

  2. Откройте индекс поиска и выберите обозреватель поиска.

  3. Выберите параметры запроса. Если вы уже определили семантику конфигурации, она выбрана по умолчанию. Если у вас его нет, создайте семантику конфигурации для индекса.

    Screenshot showing query options in Search explorer.

  4. Введите запрос, например "исторический отель с хорошей едой", и выберите "Поиск".

  5. Кроме того, выберите представление JSON и вставьте определения в редактор запросов:

    Screenshot showing JSON query syntax in the Azure portal.

    Ниже приведен текст JSON, который можно вставить в представление:

     {
         "queryType": "semantic",
         "search": "historic hotel with good food",
         "semanticConfiguration": "my-semantic-config",
         "answers": "extractive|count-3",
         "captions": "extractive|highlight-true",
         "highlightPreTag": "<strong>",
         "highlightPostTag": "</strong>",
         "select": "HotelId,HotelName,Description,Category",
         "count": true
     }
    

Оценка ответа

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

В семантическом ранжировании ответ имеет больше элементов: новая семантическая оценка релевантности, необязательный подпись в виде обычного текста и выделения и необязательный ответ. Если результаты не включают эти дополнительные элементы, запрос может быть неправильно настроен. В качестве первого шага по устранению проблемы проверка семантической конфигурации, чтобы убедиться, что она указана как в определении индекса, так и в запросе.

В клиентском приложении можно структурировать страницу поиска, включив в нее заголовок в качестве описания совпадения, а не всего содержимого определенного поля. Этот подход полезен, если отдельные поля слишком плотны для страницы результатов поиска.

Ответ для приведенного выше примера запроса возвращает следующее совпадение в качестве лучшего варианта. Заголовки возвращаются, так как свойство "подпись" задано с обычным текстом и выделенными версиями. Ответы опущены из примера, так как не удалось определить для этого конкретного запроса и корпуса.

"@odata.count": 35,
"@search.answers": [],
"value": [
    {
        "@search.score": 1.8810667,
        "@search.rerankerScore": 1.1446577133610845,
        "@search.captions": [
            {
                "text": "Oceanside Resort. Luxury. New Luxury Hotel. Be the first to stay. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
                "highlights": "<strong>Oceanside Resort.</strong> Luxury. New Luxury Hotel. Be the first to stay.<strong> Bay</strong> views from every room, location near the pier, rooftop pool, waterfront dining & more."
            }
        ],
        "HotelName": "Oceanside Resort",
        "Description": "New Luxury Hotel. Be the first to stay. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
        "Category": "Luxury"
    },
  ...
]

Следующие шаги

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