Сбор данных телеметрии для аналитики трафика поиска

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

Этот шаблон зависит от Application Insights (функция Azure Monitor) для сбора данных пользователей. Для этого необходимо добавить инструментирование в код клиента, как описано в этой статье. Наконец, для анализа данных потребуется механизм создания отчетов. Мы рекомендуем использовать Power BI, но вы можете предпочесть панель мониторинга приложения или любое средство, которое подключается к Application Insights.

Примечание.

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

Определение соответствующих данных поиска

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

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

  • События щелчка, созданные пользователем: на странице результатов поиска событие щелчка обычно означает, что документ является соответствующим результатом для определенного поискового запроса.

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

Добавление аналитики поискового трафика

На странице портала для azure AI служба откройте страницу "Аналитика трафика поиска", чтобы получить доступ к памятке по этому шаблону телеметрии. На этой странице можно выбрать или создать ресурс Application Insights, получить ключ инструментирования, скопировать фрагменты кода, которые можно адаптировать для решения, и загрузить отчет Power BI, созданный на основе схемы, которая отражена в шаблоне.

Search Traffic Analytics page in the portal

1. Настройка Application Insights

Выберите или создайте ресурс Application Insights (если у вас его нет). При использовании страницы "Поиск аналитики трафика" можно скопировать ключ инструментирования, который требуется приложению для подключения к Application Insights.

Получив ресурс Application Insights, можно выполнить инструкции для поддерживаемых языков и платформ, чтобы зарегистрировать приложение. Регистрация — это просто добавление ключа инструментирования из Application Insights в код, который настраивает связь. Ключ находится на портале или на странице "Поиск аналитики трафика" при выборе существующего ресурса.

Ярлык, который подходит для некоторых типов проектов Visual Studio, представлен на следующих шагах. Он служит для создания ресурса и регистрации приложения всего несколькими щелчками мышью.

  1. Для разработки с помощью Visual Studio и ASP.NET откройте решение и выберите Проект>Добавить телеметрию Application Insights.

  2. Щелкните Начать работу.

  3. Зарегистрируйте приложение, предоставив учетную запись Майкрософт, подписку Azure и ресурс Application Insights (по умолчанию используется новый ресурс). Щелкните Зарегистрировать.

На этом этапе приложение настроено для мониторинга приложений, что означает, что все загрузки страниц отслеживаются с помощью метрик по умолчанию. Дополнительные сведения о предыдущих шагах см. в разделе Включение телеметрии Enable Application Insights на стороне сервера.

2. Добавление инструментирования

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

Шаг 1. Создание клиента телеметрии

Создайте объект, отправляющий события в Application Insights. Можно добавить инструментирование в код приложения на стороне сервера или клиентский код, выполняемый в браузере, который представлен здесь как варианты C# и JavaScript (для других языков см. полный список поддерживаемых платформ и инфраструктур). Выберите подход, который обеспечивает нужную глубину информации.

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

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

Использование C#

Для C# значение InstrumentationKey должно присутствовать в конфигурации приложения (например, для проектов ASP.NET — в файле appsettings.json). Если вы точно не знаете, где расположен ключ, обратитесь к инструкциям по регистрации.

private static TelemetryClient _telemetryClient;

// Add a constructor that accepts a telemetry client:
public HomeController(TelemetryClient telemetry)
{
    _telemetryClient = telemetry;
}

Использование JavaScript

Сведения о создании объекта, отправляющего события в приложение Аналитика с помощью скрипта загрузчика пакета SDK JavaScript (Web), см. в статье microsoft Azure Monitor Application Аналитика JavaScript SDK.

Шаг 2. Запрос идентификатора поиска для корреляции

Для корреляции поисковых запросов с щелчками необходим идентификатор корреляции, связывающий эти два различных события. Поиск по искусственному интеллекту Azure предоставляет идентификатор поиска при запросе его с заголовком HTTP.

Наличие идентификатора поиска позволяет корреляции метрик, создаваемых azure AI Search для самого запроса, с пользовательскими метриками, которые вы выполняете вход в приложение Аналитика.

Использование C# (пакет SDK версии 11 и более новый)

Для работы последнего пакета SDK необходимо с помощью конвейера HTTP задать заголовок, как описано в этом примере.

// Create a custom policy to add the correct headers
public class SearchIdPipelinePolicy : HttpPipelineSynchronousPolicy
{
    public override void OnSendingRequest(HttpMessage message)
    {
        message.Request.Headers.SetValue("x-ms-azs-return-searchid", "true");
    }
}
// This sample uses the .NET SDK https://www.nuget.org/packages/Azure.Search.Documents

SearchClientOptions clientOptions = new SearchClientOptions();
clientOptions.AddPolicy(new SearchIdPipelinePolicy(), HttpPipelinePosition.PerCall);

var client = new SearchClient("<SearchServiceName>", "<IndexName>", new AzureKeyCredential("<QueryKey>"), options: clientOptions);

Response<SearchResults<SearchDocument>> response = await client.SearchAsync<SearchDocument>(searchText: searchText, searchOptions: options);
string searchId = string.Empty;
if (response.GetRawResponse().Headers.TryGetValues("x-ms-azs-searchid", out IEnumerable<string> headerValues))
{
    searchId = headerValues.FirstOrDefault();
}

Использование C# (пакет SDK версии 10 и старше)

// This sample uses the .NET SDK https://www.nuget.org/packages/Microsoft.Azure.Search

var client = new SearchIndexClient(<SearchServiceName>, <IndexName>, new SearchCredentials(<QueryKey>));

// Use HTTP headers so that you can get the search ID from the response
var headers = new Dictionary<string, List<string>>() { { "x-ms-azs-return-searchid", new List<string>() { "true" } } };
var response = await client.Documents.SearchWithHttpMessagesAsync(searchText: searchText, searchParameters: parameters, customHeaders: headers);
string searchId = string.Empty;
if (response.Response.Headers.TryGetValues("x-ms-azs-searchid", out IEnumerable<string> headerValues))
{
    searchId = headerValues.FirstOrDefault();
}

Использование JavaScript (вызов REST API)

request.setRequestHeader("x-ms-azs-return-searchid", "true");
request.setRequestHeader("Access-Control-Expose-Headers", "x-ms-azs-searchid");
var searchId = request.getResponseHeader('x-ms-azs-searchid');

Шаг 3. События поиска по журналам

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

  • SearchServiceName: (строка) имя службы поиска
  • SearchId: (GUID) уникальный идентификатор поискового запроса (входит в ответ поиска)
  • IndexName: (строка) индекс службы поиска для запроса
  • QueryTerms: (строка) слова для поиска, вводимые пользователем
  • ResultCount: (целое число) число возвращенных документов (входит в ответ поиска)
  • ScoringProfile: (строка) имя используемого профиля оценки, если имеется

Примечание.

Получите число запросов, создаваемых пользователем, добавив $count=true в поисковый запрос. Дополнительные сведения см. в статье Поиск документов (REST).

Использование C#

var properties = new Dictionary <string, string> 
{
    {"SearchServiceName", <service name>},
    {"SearchId", <search Id>},
    {"IndexName", <index name>},
    {"QueryTerms", <search terms>},
    {"ResultCount", <results count>},
    {"ScoringProfile", <scoring profile used>}
};
_telemetryClient.TrackEvent("Search", properties);

Использование JavaScript

appInsights.trackEvent("Search", {
  SearchServiceName: <service name>,
  SearchId: <search id>,
  IndexName: <index name>,
  QueryTerms: <search terms>,
  ResultCount: <results count>,
  ScoringProfile: <scoring profile used>
});

Шаг 4. События щелчка журнала

Каждый щелчок документа — это событие, которое необходимо зарегистрировать для анализа поиска. Используйте пользовательские события Application Insights для регистрации этих событий по следующей схеме:

  • ServiceName: (строка) имя службы поиска
  • SearchId: (GUID) уникальный идентификатор связанного поискового запроса
  • DocId: (строка) идентификатор документа
  • Position: (целое число) положение документа на странице результатов поиска

Примечание.

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

Использование C#

var properties = new Dictionary <string, string> 
{
    {"SearchServiceName", <service name>},
    {"SearchId", <search id>},
    {"ClickedDocId", <clicked document id>},
    {"Rank", <clicked document position>}
};
_telemetryClient.TrackEvent("Click", properties);

Использование JavaScript

appInsights.trackEvent("Click", {
    SearchServiceName: <service name>,
    SearchId: <search id>,
    ClickedDocId: <clicked document id>,
    Rank: <clicked document position>
});

3. Анализ в Power BI

После инструментирования приложения и проверки правильности его подключения к Application Insights можно загрузить предварительно заданный шаблон отчета, чтобы проанализировать данные в Power BI Desktop. В отчете содержатся предварительно заданные диаграммы и таблицы, которые можно использовать при анализе дополнительных данных, полученных для аналитики поискового трафика.

  1. В области навигации слева на панели поиска ИИ Azure в разделе Параметры щелкните "Аналитика трафика поиска".

  2. На странице Поиск аналитики трафика на шаге 3 щелкните Получить Power BI Desktop, чтобы установить Power BI.

    Get Power BI reports

  3. На этой же странице щелкните Скачать отчет Power BI.

  4. В Power BI Desktop откроется отчет, и вам будет предложено подключиться к Application Insights и указать учетные данные. Сведения о подключении представлены на страницах портала Azure для вашего ресурса Application Insights. Для учетных данных укажите те же имя пользователя и пароль, которые используются для входа на портал.

    Connect to Application Insights

  5. Нажмите кнопку Загрузить.

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

Метрики содержат следующие элементы.

  • Объем поиска и распространенные пары "условие —документ". Условия, в результате которых щелкают тот же документ, c упорядочиванием по щелчкам.
  • Поисковые запросы без щелчков. Условия основных запросов, для которых не выполнялись щелчки.

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

Power BI dashboard for Azure AI Search

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

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

Вы можете узнать больше об Application Insights и перейти на страницу цен, чтобы получить дополнительные сведения о соответствующих уровнях служб.

Узнайте больше о создании удивительных отчетов. См. статью Начало работы с Power BI Desktop.