Попробуйте Table QA, а также нашу улучшенную оценку и отладку уже сегодня!

Мы вложили свое время и усилия в создание Стога сена, потому что верим в будущее, в котором современный поиск легко реализовать в любом программном обеспечении. Технологии поиска незаметно развивались в академическом пространстве, и модели Transformer открыли смену парадигмы. Ранее желательные задачи, такие как ответы на вопросы, семантический поиск документов и обобщение, теперь твердо относятся к сфере как возможных, так и практических.

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

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

Демонстрационный сайт

Самый быстрый способ взаимодействия с работающей системой Haystack — через наш новый демонстрационный веб-сайт! Хотя путешествовать по миру в наши дни сложно, мы вас прикроем. Исследуйте факты о городах и странах с помощью клавиатуры и ваших любимых моделей НЛП. Мы проиндексировали часть статей Википедии о странах и столицах, и в конце есть хранилище документов, поддерживаемое Elasticsearch, Dense Passage Retriever и модель Reader на основе RoBERTa.

Улучшенная оценка

Функции оценки Haystack помогут вам узнать, насколько хорошо ваша система работает с вашими данными. Он обеспечивает оценку на уровне конвейера, чтобы убедиться, что вывод системы действительно соответствует вашим потребностям, а также оценку на уровне узла, чтобы вы могли выяснить, является ли ваш Reader или Retriever сдерживает производительность.

В этом выпуске оценка намного проще и понятнее. Вся функциональность теперь встроена в класс Pipeline, и вы можете запустить процесс, предоставив объекты Label или MultiLabel в Pipeline. .eval() метод.

eval_result = pipeline.eval(
  labels = labels,
  params = { "Retriever":
    {"top_k": 5} },
)

Результатом является объект EvaluationResult, в котором хранится прогноз каждого узла для каждой выборки в DataFrame Pandas. Существует метод EvaluationResult.calculate_metrics(), который возвращает соответствующие метрики для вашей оценки.

metrics = eval_result.calculate_metrics()

Если вы хотите начать оценивать свои собственные системы на своих собственных данных, ознакомьтесь с нашим Учебником по оценке!

Таблица контроля качества

В таблицах хранится много ценной информации — мы снова и снова слышали об этом от нашего сообщества. Хотя они представляют собой эффективный формат структурированных данных, поиск содержимого таблицы с использованием традиционных методов НЛП невозможен. Но теперь, с новыми TableTextRetriever и TableReader, у наших пользователей есть все инструменты, необходимые им для запроса соответствующих таблиц и выполнения вопросов-ответов.

TableTextRetriever — это результат исследования нашей командой методов поиска в таблицах, о котором вы можете прочитать в этой статье, представленной на EMNLP 2021. За кулисами он использует три кодировщика на основе преобразователя — один для текстовые отрывки, один для таблиц и один для запроса. Однако в Haystack вы можете заменить его на любую другую модель плотного поиска и начать работать с таблицами. TableReader построен на модели TAPAS, и при передаче таблицы, содержащей документы, он может вернуть одну ячейку в качестве ответа или выполнить операцию агрегирования набора ячеек для формирования окончательного ответа.

retriever = TableTextRetriever(
  document_store = document_store,
  query_embedding_model = "deepset/bert-small-mm_retrieval-question_encoder",
  passage_embedding_model = "deepset/bert-small-mm_retrieval-passage_encoder",
  table_embedding_model = "deepset/bert-small-mm_retrieval-table_encoder",
  embed_meta_fields = [ "title", "section_title" ] 
)
reader = TableReader(
  model_name_or_path = "google/tapas-base-finetuned-wtq",
  max_seq_len = 512
)

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

Улучшенная отладка

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

result = pipeline.run(
  query = "Who is the father of Arya Stark?",
  params = {
    "debug": True 
  } 
)
# Result
{ 'ESRetriever': {
  'input': { 'debug': True,
    'query': 'Who is the father of Arya Stark?',
    'root_node': 'Query',
    'top_k': 1 },
  'output': {
    'documents': [ <Document: {'content': "\n===In the Riverlands===\nThe Stark army reaches the Twins, a bridge strong", ...}> ] 
    ...}

Миграция кода FARM

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

Haystack всегда полагался на FARM для обработки гораздо более низкого уровня. Например, фактическая обработка моделей трансформаторов выполняется в FARM. Он также имеет дело с текстом на токенизированном уровне, разбивая текст, чтобы он соответствовал максимальной длине последовательности модели, и выбирая действительный и оптимальный диапазон ответов QA среди нескольких фрагментированных отрывков.

Хотя зависимость Haystack от FARM работала, она значительно усложняла обслуживание, поскольку некоторые функции требовали изменения как репозиториев, так и обновления зависимости от версии. Чтобы уменьшить эти накладные расходы, мы перенесли части FARM, которые используются в Haystack, и поместили их в папку haystack/modeling. Мы также обнаружили, что это упрощает отладку на более низком уровне, поскольку весь код теперь находится в одном репозитории!

Чего же ты ждешь?

Haystack v1.0 уже вышел, так что начните использовать его сегодня! См. наш репозиторий GitHub, если вы хотите установить из исходного кода, или посетите нашу страницу Начало работы, чтобы узнать о других наших методах установки.