Создайте полнофункциональный конвейер, используя новейшие функции Haystack v0.8.0

Те из вас, кто следит за нашим репозиторием GitHub, знают, что в последнее время на Haystack было много активности! Мы не только усердно работали над набором новых функций, но и получили много отличных кодов и провели много интересных и продуктивных бесед с нашим сообществом. Сумма всего этого взаимодействия - наша последняя версия v0.8.0, в которой больше изменений, чем мы могли бы здесь перечислить. Тем не менее, мы хотели познакомить вас с наиболее интересными новыми функциями, которые помогут вам создать собственный конвейер семантического поиска.

Милвус

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

С этим видением возникает потребность в векторно-оптимизированных базах данных, которые могут быстро выполнять индексацию и вычисления подобия, и поэтому мы очень рады представить MilvusDocumentStore в Haystack. Milvus инкапсулирует несколько библиотек приблизительного ближайшего соседства (ANN), таких как FAISS и ANNOY, но также обладает надежностью и надежностью, необходимой для производственных систем. Он позволяет динамически управлять данными, а также может работать как отдельная служба через Docker, и мы обнаружили, что с их библиотекой очень легко работать. И, конечно же, они с открытым исходным кодом!

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

Спасибо нашему участнику Github lalitpagaria, который был движущей силой этой новой функции!

Сеть знаний QA

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

В последней версии вы увидите первые небольшие шаги, которые мы сделали в этом направлении. В Haystack теперь есть класс GraphDBKnowledgeGraph, который хранит ваши тройки и выполняет запросы SPARQL. Также существует класс Text2SparqlRetriever, который подключается к GraphDBKnowledgeGraph и функционирует как семантический синтаксический анализатор. Он превращает вопросы на естественном языке в запросы SPARQL с использованием модели BART от последовательности к последовательности. Выражаем благодарность библиотеке Трансформеры, поддерживаемой Huggingface, которая позволила невероятно легко интегрировать новые модели трансформеров в Haystack!

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

Если вы хотите узнать, как работать с графами знаний в Haystack, ознакомьтесь с нашим сквозным руководством! Это даст вам представление о первых небольших успехах, которых мы достигли с этой техникой, и мы будем рады услышать от вас, если вы хотите продвигать с нами контроль качества Knowledge Graph!

Конфигурации конвейера

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

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

Это пример того, как может выглядеть конфигурация YAML.

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

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

Показатели уверенности

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

Последняя версия делает нам шаг в правильном направлении, поскольку каждый прогноз теперь сопровождается оценкой вероятности в диапазоне от 0 до 1, где значения около 0 означают очень низкую достоверность прогноза, а значения около 1 означают очень высокую достоверность. . Используя нашу структуру трансферного обучения FARM, вы можете пойти еще дальше и настроить этот показатель вероятности в соответствии с вашими метриками, чтобы вы могли принять уверенность = 0,9, что означает, что модель будет правильной в 90% случаев. Если это то, что вас интересует, загляните в это руководство.

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

Веб-сканер

Наконец, центральным элементом дизайна Haystack является то, что он легко подключается к другим компонентам и источникам данных. По этой причине мы хотим выделить очень хороший вклад сообщества от DIVYA-19, который добавил веб-краулер в Haystack! Просто укажите URL-адреса страниц, по которым вы хотите выполнить поиск, и пусть сканер конвертирует их в документы Haystack.

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

Заключение

В этом последнем выпуске столько новых функций и улучшений, что мы даже не нашли в этом блоге места, чтобы поговорить об узлах оценки или сценариях данных SQuAD to DPR. Haystack v0.8.0 уже доступен, и вы можете увидеть полный список изменений в наших примечаниях к выпуску.