Question Answering
Системы ответов на вопросы (QA) дают прямой ответ на вопрос, сформулированный на естественном языке. Рассматриваются извлекающие, открытые, генеративные и визуальные системы QA.
Ответы на вопросы (QA) — это задача обработки естественного языка (NLP), в которой на вопрос, заданный на естественном языке, дают непосредственный ответ, например «Канберра» на вопрос «Какова столица Австралии?», а не список веб-страниц. Система QA интерпретирует вопрос, находит ответ в отрывке, коллекции документов, базе данных или собственных параметрах и возвращает либо формулирует его. Поля ответов в поисковых системах, виртуальные помощники, чат-боты поддержки и помощники на основе больших языковых моделей (LLM), отвечающие на вопросы о документах компании, — всё это системы QA.
Ранние системы отвечали на вопросы по узкоспециализированным базам данных: BASEBALL (1961) обрабатывала вопросы об одном сезоне игр Американской лиги, а LUNAR (1971) отвечала на вопросы геологов об образцах лунного грунта, доставленных экспедицией Apollo. В 1999 году в рамках TREC начали оценивать системы QA для открытого домена, а в феврале 2011 года IBM Watson победила чемпионов Jeopardy! Ken Jennings и Brad Rutter, сгенерировав множество возможных ответов на каждую подсказку и оценив подтверждающие их свидетельства с помощью сотен алгоритмов.
Типы систем QA#
- Извлекающие QA-системы: Выбирают в заданном отрывке фрагмент, отвечающий на вопрос.
- QA открытого домена: Перед тем как ответить, ищут релевантные фрагменты в большой коллекции, например во всей Википедии.
- Генерация с дополнением извлечёнными данными (RAG): Формирует ответ с помощью LLM, опираясь на найденные фрагменты, поэтому можно объединять факты из нескольких источников и указывать ссылки на них.
- QA без внешних источников: Даёт ответы на основе знаний, хранящихся в весах модели, без документов, из-за чего выдуманные ответы сложнее обнаружить.
- QA на основе графа знаний: Преобразует вопрос в структурированный запрос к графу сущностей и связей или к базе данных.
- Визуальные ответы на вопросы (VQA): Отвечают на вопросы об изображении или видео.
Извлекающие QA-системы и SQuAD#
Набор данных Stanford для ответов на вопросы (SQuAD), опубликованный в 2016 году Пранавом Раджпуркаром и его коллегами, сделал извлечение ответов на вопросы стандартным бенчмарком: краудсорсинговые участники составили более 100 000 вопросов по статьям Википедии, и каждый ответ представлял собой фрагмент статьи. Базовая модель логистической регрессии достигла F1 51,0%, тогда как у людей этот показатель составил 86,8%. Для оценки используют точное совпадение и токенный показатель F1 между предсказанным и эталонным ответами, а в 2018 году BERT достиг тестового F1 93,2. Экстрактивная модель оценивает каждый токен фрагмента как возможное начало и конец ответа:
import torch
from transformers import AutoModelForQuestionAnswering, AutoTokenizer
# DistilBERT fine-tuned on SQuAD v1.1 for extractive question answering
model_id = "distilbert/distilbert-base-cased-distilled-squad"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForQuestionAnswering.from_pretrained(model_id)
context = (
"SQuAD was released in 2016 by Pranav Rajpurkar and colleagues at Stanford University. "
"Crowdworkers wrote more than 100,000 questions about Wikipedia articles, and every answer is a span of the article."
)
for question in ["Who released SQuAD?", "Where do the answers come from?", "How many languages does SQuAD cover?"]:
inputs = tokenizer(question, context, return_tensors="pt", return_offsets_mapping=True)
offsets = inputs.pop("offset_mapping")[0]
with torch.no_grad():
outputs = model(**inputs)
# The answer is the context span between the highest-scoring start and end tokens
start, end = outputs.start_logits.argmax(), outputs.end_logits.argmax()
print(f"{question} -> {context[offsets[start][0] : offsets[end][1]]}")Модель отвечает «Пранав Раджпуркар» и «фрагмент статьи». В отрывке ничего не говорится о языках, однако на третий вопрос модель отвечает «100 000», потому что модель, обученная на SQuAD 1.1, всегда возвращает какой-нибудь фрагмент. В SQuAD 2.0 (2018) добавили более 50 000 вопросов без ответа, сформулированных так, будто на них можно ответить, и система, получившая F1 86% на SQuAD 1.1, снизила результат до 66% на новой версии: теперь моделям нужно было решать, когда воздержаться от ответа.
Открытые системы ответов на вопросы и RAG#
В системах открытого домена работа разделена между поисковым модулем, который находит несколько релевантных фрагментов среди миллионов, и модулем чтения, который отвечает на основе найденного. DrQA (2017) находила статьи Википедии с помощью TF-IDF и читала их с помощью рекуррентной нейронной сети; Dense Passage Retrieval (2020) заменила TF-IDF на эмбеддинги BERT и векторный поиск, а RAG (2020) передавала найденные фрагменты генератору, который формулировал ответ. Переранжировщик часто меняет порядок найденных фрагментов до того, как их увидит модуль чтения. Авторы RAG выяснили, что обусловливание сгенерированного текста найденными фрагментами делает его конкретнее, разнообразнее и фактически точнее, чем у сопоставимой модели без поиска, а цитируемые фрагменты позволяют читателям проверять ответы на наличие галлюцинаций.
Визуальные ответы на вопросы#
VQA получает изображение и вопрос, например «Сколько людей ждут на остановке?», и требует мультимодального ИИ, объединяющего компьютерное зрение с пониманием языка, обычно в виде модели «зрение — язык» (VLM). В агентах Ultralytics Platform блок LLM отправляет изображение и контекст предыдущих этапов, например результаты детекции YOLO26, в модель «зрение — язык» вместе с запросом, чтобы модель ответила на вопрос о сцене, используя результаты детектора как контекст.
QA и связанные термины#
- Семантический поиск: возвращает документы или фрагменты, наиболее релевантные запросу, — входные данные, которые система ответов на вопросы использует для подготовки ответа.
- Чат-боты: разговорные интерфейсы, поддерживающие многошаговый диалог и использующие QA для ответа на содержащиеся в нём фактические вопросы.
- Генерация текста: создаёт произвольный текст по запросу. Генеративная система ответов на вопросы — это генерация текста, ограниченная задачей ответа на вопрос, часто с опорой на цитируемые источники.










