Новый уровень поиска. Exploratory search

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

<i>(Например, вот так. Вопрос: как это загуглить?)</i>
(Например, вот так. Вопрос: как это загуглить?)

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

Краткое введение

У меня встреча с разведочным поиском (в литературе можно встретить «исследовательский поиск», это то же самое) произошла почти случайно, в процессе обсуждения с коллегами темы для написания магистерской диссертации. Мне тогда подкинули вот какую задачу: есть некая папка с кучей презентаций на разные темы, надо найти нужную, но в памяти осталось только то, что она на десять минут, кажется, про железнодорожный транспорт и там был пример патента на тормоза для поезда. Обычный поиск по файлам не факт, что даст что-то ценное (в частности, потому что в половине случаев патент был не на тормоза, и презентация вообще про самолеты, но память – штука сложная). Нужно что-то придумать, чтобы поиск работал даже так.
Это и есть задача для разведочного поиска. Разведочный поиск (Exploratory Search) – часть области извлечения информации (information retrieval), направленная на решение задач поиска в области, с которой пользователь незнаком, в силу чего не может составить строгий запрос, а должен осуществлять поиск последовательно, в несколько этапов, на каждом из которых он будет получать больше данных для следующего поиска.
Одна из ключевых публикаций по теме – «Exploratory Search. Beyond the Query–Response Paradigm» («Разведочный поиск. За пределами парадигмы «Запрос-Ответ»). В этой публикации авторы определяют разведочный поиск и очерчивают набор областей, которые он затрагивает.

<i>(Схема из статьи «Exploratory Search. Beyond the Query–Response Paradigm»)</i>
(Схема из статьи «Exploratory Search. Beyond the Query–Response Paradigm»)

Мне кажется, что из всех областей можно выделить шесть ключевых:

  • обработка естественного языка (NLP);
  • взаимодействие «человек-компьютер»;
  • когнитивная психология;
  • анализ данных;
  • извлечение информации;
  • UX / UI дизайн (функционал и внешний вид интерфейса).

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

  • интерактивное извлечение информации (Interactive Information Retrieval). Предполагает, что у пользователя должна быть возможность улучшать запрос шаг за шагом, улучшая результат (поисковую выдачу). Это сама по себе междисциплинарная область, которая использует два вида моделей: когнитивные (для изучения процессов мышления пользователя в ходе поиска) и модели взаимодействия пользователя с поисковой системой на разных уровнях (на уровне системного интерфейса, обстоятельств поиска, мотивации пользователя и т.д.);
  • когнитивные модели поиска (Cognitive Information Retrieval) можно рассматривать отдельно, уделяя больше внимания человеческому поведению и процессам восприятия информации и обучения;
  • эволюционная модель («berrypicking»). Мой перевод может быть не вполне корректным, но идея заключается в том, что в процессе поиска пользователь получает дополнительную информацию и добавляет ее в запрос, чтобы получить больше информации на следующем этапе. Аналогия со сбором ягод в том, что информация собирается «по ягодке», процесс поиска нелинейный, пользователь не может получить большой блок информации целиком за один запрос;
  • информационно-продовольственная теория (в переводах встречатся как «теория охоты на информацию», что мне больше нравится; Information Foraging). Сравнивает поведение человека, который ищет информацию, с поведением животного, которое ищет еду. И те, и другие стараются потратить меньше времени с максимальной выгодой для себя. Авторы концепции вводят такие понятия как «запах информации» (information scent) – указания на то, что пользователь движется в нужном направлении, – и «информационная среда» (environment), которая разделена на участки. Каждый участок содержит определенное количество информации, и пользователь решает, оставаться на нем или двигаться дальше, если с участка собран максимальный объем информации;
  • подход, основанный на прототипах (Archetype-Based Approach). Главная идея заключается в том, чтобы для темы поиска собрать набор документов, которые точно к ней относятся, и извлекать из них ключевые слова, и осуществлять на их основе поиск;
  • подход, основанный на иерархическом моделировании (Hierarchical Topic Modeling-Based Approach). В России этой темой активно занимается Константин Воронцов с коллегами. Они предложили поисковый движок, который поддерживает каскадный поиск – пошаговый переход от более ширкой области к более узким до тех пор, пока цель поиска не будет достигнута.

Переход к языковым моделям

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

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

Придется снова сделать оговорку: всеобъемлющий обзор коротко написать не получится, слишком много этих областей применения. Мне понравился перечень, приведенный в статье «Large Language Models and Search» («Большие языковые модели и поиск»). Он, кажется, достаточно полный:

  • генерация ответа, дополненная результатами поиска (Retrieval-Augmented Generation);
  • понимание запросов (Query Understanding);
  • создание указателей (Index Construction);
  • ранжирование результатов поиска по релевантности запросу (Re-ranking);
  • сжатие поисковой выдачи (Search Result Compression).

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

Не очень красивое сокращение («RAG» переводится как «тряпье» или «лохмотья») получилось по недосмотру: авторы просто не подумали, что вскоре после публикации работы RAG станет популярной и активно растущей областью исследований. Бывает, что уж. У меня как-то в процессе работы над одним из проектов получилась метрика WTF (соблазн ее оставить в неизменном виде был велик).

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

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

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

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

Заключение

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

11
5 комментариев

на пикабу то же к стати часто бывает помогают найти книги, сам помогал пару раз

1
Ответить

Искала как-то на Пикабу автора по размытому описанию книги. Через минуту прилетел ответ, а ещё через пару минут — обвинение в ботности ради активности :)
Дело было ночью.

Ответить

я в Яндекс вообще ничего не могу найти... у друзей спросить надежней

Ответить

Помоги найти клип: Стиль Synthiepop, поет девушку в обтягивающей ковбойской одежде

Ответить