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


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

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

Инструментирование состоит из следующих частей:

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

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

Примечание.

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

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

  • Поиск ИИ Azure, любой регион, базовый уровень и выше.

  • Application Insights.

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

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

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

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

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

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

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

Для поиска ИИ Azure портал Azure предоставляет страницу аналитики трафика поиска с фрагментами кода C# и JavaScript для добавления клиента телеметрии, заголовков запросов и свойств, необходимых для пользовательских событий журнала.

Внимание

Страница портала аналитики трафика поиска в настоящее время устарела и ссылается на устаревшую клиентную библиотеку. Решением является использование фрагментов кода из репозитория GitHub azure-search-traffic-analytics . В этой статье содержатся фрагменты кода из репозитория GitHub.

Снимок экрана: команда портала и страница настройки Application Insights.

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

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

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

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

На этом шаге предоставьте строка подключения Application Insights.

Ярлык, который подходит для некоторых типов проектов Visual Studio, представлен на следующих шагах.

  1. Откройте решение в Visual Studio.

  2. В меню "Проект" выберите "Добавить> подключенные службы>приложение Azure Insights".

  3. В разделе "Подключение к зависимости" выберите приложение Azure Insights и нажмите кнопку "Далее".

  4. Выберите подписку Azure, ресурс Application Insights и нажмите кнопку Готово.

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

Если этот ярлык не работал для вас, см . статью "Включить телеметрию на стороне сервера Application Insights" или ссылаться на фрагменты кода на смежных вкладках.

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

Добавьте код инструментирования в клиентское приложение.

Сопоставление событий clickstream с результатами поиска

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

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

var client = new SearchClient(new Uri("https://contoso.search.windows.net"), "hotels-sample-index", new DefaultAzureCredential());

// Generate a new correlation id for logs
string searchId = Guid.NewGuid().ToString();
string searchText = "*";
SearchResults<SearchDocument> searchResults;

// Set correlation id for search request
using (HttpPipeline.CreateClientRequestIdScope(clientRequestId: searchId))
{
    searchResults = client.Search<SearchDocument>(searchText, options: new SearchOptions { IncludeTotalCount = true } );
}

Журнал пользовательских событий

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

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

Примечание.

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

// Create properties for telemetry
var properties = new Dictionary<string, string>
{
    ["searchId"] = searchId,
    ["serviceName"] = "<PUT YOUR SEARCH SERVICE NAME HERE, example: contoso-search>",
    ["indexName"] = "<PUT YOUR INDEX NAME HERE>",
    ["searchText"] = searchText,
    ["resultsCount"] = searchResults.TotalCount?.ToString()
};

Отправка настраиваемого события в Application Insights

Добавьте настраиваемую даже в таблицу пользовательских событий в Application Insights. Дополнительные сведения см. в API Application Insights для пользовательских событий и метрик.

telemetryClient.TrackEvent("search", properties);
telemetryClient.Flush();

Шаг 3. Просмотр журналов

Используйте любой из подходов, поддерживаемых Application Insights для просмотра пользовательских событий.

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

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

Дополнительные сведения о создании отчетов. См. статью Начало работы с Power BI Desktop.