Все, что вам нужно для создания нейронной поисковой системы, в одной платформе с открытым исходным кодом
Поиск прошел долгий путь с момента сопоставления строк. Хотя наши рабочие процессы адаптированы к этому простому и вездесущему инструменту, появилось новое поколение технологий нейронного поиска, которое коренным образом меняет способ поиска нужной нам информации. Haystack, наша платформа для ответов на вопросы с открытым исходным кодом, предназначена для того, чтобы предоставить вам компоненты для создания поисковых систем, которые работают не путем сопоставления символа с символом, а путем чтения с учетом контекста и синтаксиса и реального понимания текста. Только представьте себе, что у вас есть возможности современной поисковой системы для ваших собственных документов!
Мы в deepset работали со всем от Word2Vec и GloVe до сетей прямого распространения и LSTM. Но когда мы увидели, насколько хорошо модели ответов на вопросы на основе Transformer понимают текст и насколько хорошо они могут отвечать на ранее не встречавшиеся запросы, мы поняли, что нам нужно принять вызов, чтобы заставить эту работу работать в промышленных сценариях использования. Итак, мы приступили к реализации баз данных, в которых хранится ваш текст, ретриверов, которые ускоряют ваши запросы, и API-интерфейсов, которые позволяют интегрировать эту технологию в ваши платформы. С Haystack у вас есть тщательно подобранная коллекция самых важных достижений в области обработки естественного языка, поиска информации и проектирования баз данных, и мы с нетерпением ждем, чтобы увидеть, что вы выберете для создания с ее помощью.
Что нейронный поиск может для вас сделать
Допустим, вы хотите собрать информацию о финансовых перспективах NVIDIA на 2020 год в стопке собранных вами документов. Используя имеющиеся у вас инструменты, вы можете начать с поиска «NVIDIA». Но вскоре вы обнаружите, что результатов гораздо больше, чем вам действительно нужно. Вы можете попытаться сузить диапазон, добавив еще несколько ключевых слов, таких как «доход», «увеличение» и «доход». Но теперь у вас есть документы, которые не соответствуют тому году, или содержат эти слова лишь случайно. Все эти вопросы, просто чтобы ответить на вопрос, который вы могли бы прямо задать мне в предложении. Так почему бы не искать напрямую, задавая вопрос: «Как будет развиваться выручка NVIDIA в 2020 году»?
С нейронными поисковыми системами вы можете это сделать, потому что они понимают суть того, о чем вы спрашиваете, и соответствующим образом корректируют свой поиск. Когда они увидят слово «мировоззрение», они намеренно начнут обращать больше внимания на слова или фразы, которые имеют схожее значение. Даже если в одних документах это может быть «прогноз», а в других - «прогноз», нейронная поисковая система будет читать, чтобы выяснить, то ли это то, что вы ищете. Это не просто расширенный поиск по синонимам. Эти модели «понимают», что грамматика структурирует предложения, а текст - это не набор слов. Эти модели знают, что «прогноз погоды» - это не то же самое, что «финансовый прогноз», который вы ищете, потому что важна не форма, а значение.
Такой языковой интеллект также знает, как взяться за дело. Несмотря на то, что системы НЛП всегда играли роль в структурировании текста, они традиционно нуждались в большом количестве предметно-ориентированного обучения для выполнения желаемой вами задачи. Системы NER должны знать, какие объекты вы ищете, а в моделях классификации документов должны быть приведены примеры категорий, которые вам интересны. Системы нейронного поиска, напротив, могут начать работать на вас сразу же благодаря последним достижениям в трансферном обучении. Они достаточно гибкие, чтобы даже в невидимых доменах часто могли разбираться в запросах и документах. Например, вам не всегда нужно знать, что такое «клапан высокого давления», чтобы узнать, какой компонент подключен к «клапану высокого давления». Ответ может быть на стандартном английском. Тем не менее, эти модели все еще можно преподавать, и предоставление им большего количества текста из вашей области учит их стать экспертами в идиомах и жаргоне вашей области.
Открытый исходный код - это больше, чем просто код
Для нас крайне важно, чтобы вы могли построить комплексную сквозную систему только с помощью Haystack. Все, что вам нужно как индивидуальному разработчику, есть и всегда будет с открытым исходным кодом. Мы хотим дать разработчикам возможность проверять компоненты, чтобы точно видеть, что происходит под капотом, и мы хотим, чтобы разработчики могли настраивать код так, чтобы они работали для их конкретного случая использования. Существуют и другие варианты, такие как AWS Kendra, но Haystack предлагает техническую сложность лучших современных систем, а также степень прозрачности, которая не может быть сопоставима с решениями черного ящика. Абстракции, которые структурируют Haystack, предназначены для использования, а не скрыты от разработчика. Наша миссия - постоянно помогать пользователям понимать технологии, которые делают Haystack настолько эффективным. Вы, безусловно, можете ожидать от нас большего количества статей в ближайшем будущем, проливающих свет на различные компоненты. В то же время мы также знаем, что у крупных предприятий есть дополнительные требования при использовании программного обеспечения с открытым исходным кодом в производстве, и для этих случаев мы предложим коммерческие продукты и поддержку, которые помогут вам работать с Haystack в контексте предприятия.
Haystack также является открытым исходным кодом в том смысле, что он является участником и бенефициаром щедрой и процветающей экосистемы программного обеспечения с открытым исходным кодом. Бегло взглянув на наш репозиторий, вы сможете увидеть, как мы стоим на плечах других гигантов с открытым исходным кодом, и мы в долгу перед всей работой, которую они вложили в свои проекты. Так же, как они предоставили нам инструменты для создания фреймворка Haystack, мы хотели бы отдать должное сообществу и поддержать ваши проекты. Благодаря регулярному обмену мнениями с программистами всех типов мы смогли лучше понять, что нам нужно и какие проблемы разделяются. Мы стремимся реагировать на отзывы и с нетерпением ждем ваших идей и запросов на включение. Haystack - это совместные усилия по решению проблемы улучшения поиска, и наша цель - помочь вам создать отличные поисковые системы.
Масштабируемость нейронного поиска с помощью Retriever-Reader-Design
На этом этапе стоит остановиться на отдельных частях, которые заставляют Haystack работать. Как уже упоминалось, Haystack представляет собой сочетание технологий из NLP, IR и Backend Engineering, но наиболее важные компоненты, такие как Document Store, Retriever и Reader, показаны ниже.
Читатель - это компонент, который выполняет самый тщательный анализ текста с большим вниманием к синтаксическим и семантическим деталям, чтобы найти диапазон, который лучше всего удовлетворяет вопрос или запрос. Те из вас, кто пришел из мира НЛП, узнают Readers как модели ответов на вопросы на основе Transformer (также известные как модели машинного чтения), которые работают с наборами данных, такими как SQuAD или Natural Questions (узнайте, как они работают здесь). Качество этих моделей резко возросло с выпуском языковой модели BERT, и последующие итерации BERT также повысили производительность лучших моделей QA. Благодаря интеграции с центром моделей HuggingFace, пользователи Haystack уже смогут начать работу с любой из загруженных моделей ответов на вопросы. Те, кто пришел из нашей системы обучения передаче FARM, также смогут продолжать использовать модели, обученные FARM, в идеальном сельском спокойствии.
При выполнении запросов в настройках открытого домена поиск можно значительно ускорить, если сначала отклонить документы, которые не имеют шансов быть релевантными. Это осуществляется с помощью легкого фильтра документов, известного как Retriever, который принимает все документы в качестве входных данных и возвращает их в качестве подмножества для Reader для дальнейшей обработки. Традиционно они основаны на редких методах, таких как TF-IDF или BM25, но мы начинаем видеть следующее поколение плотных методов, которые полагаются на встраивание документов, генерируемых глубокими нейронными сетями. Поиск плотного прохода - один из таких подходов, который нас впечатлил. Фактически, он нам настолько понравился, что мы не могли не реализовать его, и вы уже можете опробовать его в Haystack!
Haystack также дает вам гибкость в выборе типа DocumentStore, который вы хотите использовать, предлагая Elasticsearch, SQL или внутренние механизмы в памяти. Имеется поддержка REST API на основе FastAPI, так что вы можете интегрировать свои модели в любой другой ваш проект, независимо от того, создаете ли вы поисковую систему, чат-бота или задаете стандартизированный набор вопросов входящему потоку. документов. Мы также включили Аннотировать - инструмент для создания надписей, чтобы вы могли быстро научить модели говорить на жаргоне в вашем домене. Конечно, это только начало, и в ближайшие месяцы вы можете ожидать еще много новых функций. И если нам не хватает чего-то важного для вашего проекта, мы будем рады услышать от вас!
Начните использовать Haystack сегодня
Все больше и больше разработчиков просят создать платформы данных, которые позволят работникам находить нужную им информацию, и мы не сомневаемся, что нейронный поиск играет в этом ключевую роль. Haystack здесь, чтобы разработчики начали создавать и развертывать решения, которые фактически отражают текущую SotA и соответствуют их сценариям использования. Репозиторий является результатом совместных усилий разработчиков всех типов, направленных на решение проблемы поиска, и нам не терпится увидеть, что вы с его помощью создадите!