Своевременный обзор ландшафта и жаргона систем семантического поиска и ответов на вопросы.

Фреймворк Haystack основан на ответах на вопросы (QA). Концепция поиска — большая часть функциональности Haystack, но как она связана? Что ж, задача QA-конвейера — сначала найти нужные документы. Затем он продолжает искать правильный ответ или ответы в этих документах. Поскольку наши современные системы поиска и ответов на вопросы используют нейронные сети последнего поколения, их можно отнести к общему термину нейронный поиск.

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

Простые парадигмы поиска

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

Точное сопоставление строк вернет все те документы, которые содержат ваш поисковый запрос, в произвольном порядке. С большой текстовой коллекцией далеко не уедешь. Представьте, что вы ищете поисковый запрос в Google, и вместо того, чтобы предоставлять вам наиболее релевантные результаты, поисковая система просто возвращает все веб-сайты, которые соответствуют вашим условиям поиска, в случайном порядке. Чтобы повысить релевантность результатов поиска, мы можем использовать соответствие ключевым словам. В методах сопоставления ключевых слов, таких как tf-idf или BM25, термины в документе взвешиваются в соответствии с их релевантностью в корпусе. Эти методы быстрые и не зависят от языка.

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

Семантический поиск: смена парадигмы

При семантическом (или «нейронном») поиске вместо того, чтобы сравнивать запрос (например, строку или изображение) непосредственно с базой данных, мы запускаем его через нейронную сеть, предварительно обученную на миллионах точек данных. Нейронная модель научилась кодировать запрос как многомерный вектор. Такая многомерность позволяет нейронным моделям лучше улавливать значение запроса или семантическое значение. Нейронный поиск можно использовать для различных типов файлов, включая изображения:

Возможности семантического поиска Haystack сосредоточены на естественном языке. Все последние модели нейронного языка основаны на архитектуре Transformer. Это относится к типу нейронной сети, который впервые был представлен в 2017 году в уже ставшей легендарной статье Google Внимание — это все, что вам нужно. Есть две вещи, которые вы должны знать о трансформерах: во-первых, они работают на основе метода, называемого внимание, что позволяет им определять отношения между словами; Точно так же они гораздо лучше подходят для параллельных вычислений, чем их предшественники, а это означает, что их гораздо быстрее обучать.

В настоящее время существуют тысячи языковых моделей на основе Transformer, обслуживающих множество вариантов использования и множество разных языков. Сайт НЛП-компании Hugging Face стал популярным местом для поиска и загрузки предварительно обученных моделей. Давайте теперь подробнее рассмотрим некоторые разновидности нейронного поиска.

Семантический поиск документов

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

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

Семантический поиск тесно связан с задачей поиска информации. Задача поиска значительно облегчается благодаря новому поколению векторно-оптимизированных баз данных. Такие проекты, как FAISS, Weaviate, Jina и Milvus, позволяют быстро сравнивать векторы, даже когда их много. Давайте теперь посмотрим, как семантический поиск влияет на современные системы ответов на вопросы.

Экстрактивный ответ на вопрос

Все дело в названии: система ответов на вопросы принимает вопрос, а потом возвращает не документ, а ответ. Термин «извлекающий ответ на вопрос» намекает на тот факт, что система выделяет один или несколько отрывков (из одного или нескольких документов) в качестве ответов. Напротив, существует также генеративный контроль качества, который генерирует ответы с нуля (хотя все еще основан на текстовой базе знаний).

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

Контроль качества с открытым доменом сочетает поиск документов с экстрактивным контролем качества в конвейере "извлечение-чтение-считывание". Система контроля качества с открытым доменом может отвечать на вопросы в стиле SQuAD по большому набору документов. Во-первых, средство извлечения ищет наиболее релевантные документы в ответ на запрос либо с помощью метода разреженного поиска, такого как tf-idf или BM25, либо с использованием плотной модели поиска на основе преобразования.

На следующем этапе читатель внимательно изучает выбранные документы, пропуская их через предварительно обученную языковую модель QA. Затем модель возвращает отрывки текста, которые, по ее мнению, наиболее вероятно отвечают на запрос. Вот пример конвейера извлечения-считывания в действии:

Когда система обеспечения качества с открытым доменом станет достаточно точной, она может функционировать как инструмент поиска общего назначения. Например, Google теперь возвращает ответы на простые фактические вопросы, когда он очень уверен как в своем понимании запроса, так и в правильности своего ответа. Чтобы увидеть эту функцию в действии, попробуйте запросить информацию, например «Какое полное имя у Тони Моррисон?»

Далее мы рассмотрим особый случай ответа на вопрос, когда процесс сопоставления работает немного иначе, чем мы видели до сих пор.

Ответ на вопрос в стиле FAQ

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

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

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

Нейронный поиск следующего поколения

Как вы увидите, просматривая Хаб моделей Hugging Face, модели на основе Transformer позволяют выполнять различные задачи НЛП. Как насчет модели, которая умеет переводить с романских языков на английский? Или обобщающая модель для Bahasa Indonesia? Вы можете найти это и многое другое на веб-сайте Hugging Face.

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

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

Вот еще несколько примеров составных систем, которые мы построили с помощью Haystack:

Ищите и находите — вместе с Haystack!

Независимо от типа конвейера поиска, который вы хотите внедрить: велика вероятность, что у нас есть именно то, что вам нужно. Фреймворк Haystack использует модульный подход к конвейерам ответов на вопросы и поиска, что позволяет создавать системы любой сложности.

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

Готовы попробовать Haystack? Зайдите в наш репозиторий GitHub, и если вам нравится то, что вы видите, поставьте нам звезду :) Чтобы увидеть, чем занимается наше сообщество, и напрямую поговорить с членами нашей команды, присоединяйтесь к нашему каналу Discord.