Обработка естественного языка
Question Answering
Jeopardy! 2011. Watson (IBM) играет против лучших игроков в истории - Кена Дженнингса и Брэда Раттера. IBM QA система побеждает с отрывом в 3 раза. Это был первый момент когда компьютер превзошёл людей в open-domain QA в прямом эфире. С тех пор прошло 13 лет и задача стала 'решённой' - но нюансы остаются.
- **Google Search Featured Snippets**: extractive QA поверх web pages. При поиске 'когда основана Google' - answer extraction из Wikipedia. BERT лежит в основе с 2019 года.
- **AWS Kendra**: enterprise search с QA. Корпоративные документы, политики, инструкции. Сотрудник спрашивает 'какой лимит командировочных расходов' - система находит из HR документа.
- **Perplexity Pro**: deep research mode - multi-hop QA. Задаёшь сложный вопрос - система строит цепочку запросов, находит источники, синтезирует. Это open-domain QA с reasoning.
Предварительные знания
- BERT и fine-tuning энкодера под downstream-задачу
- Токенизация и span как пара (start, end) позиций в тексте
- Идея retrieval: найти релевантные документы по запросу
SQuAD и эра reading comprehension
2016 год. Pranav Rajpurkar с соавторами из Stanford публикуют SQuAD (Stanford Question Answering Dataset) - 100 000 пар вопрос-ответ по статьям Wikipedia, где ответ всегда является непрерывным фрагментом текста. Это дало полю чёткий, воспроизводимый benchmark, и гонка за человеческим уровнем началась. Годом ранее, в 2017, Danqi Chen с коллегами представили DrQA - систему, которая соединяла поиск по всей Wikipedia с reading comprehension моделью, заложив архитектуру retriever-reader для open-domain QA. К 2018 модели на основе BERT превзошли человека на SQuAD 1.1, после чего вышла SQuAD 2.0 с unanswerable questions - чтобы проверить, умеет ли модель сказать "ответа нет" вместо уверенной выдумки.
Extractive QA: span extraction
**Extractive QA**: ответ - это фрагмент (span) из данного текста. Модель предсказывает start и end позиции ответа. SQuAD (Stanford, 2016) - классический benchmark: 100K пар вопрос-контекст-ответ из Wikipedia. BERT на SQuAD достигает 93 F1 - уровень человека.
**SQuAD 2.0**: добавил unanswerable questions - вопросы на которые нет ответа в тексте. Модель должна предсказывать 'нет ответа' вместо hallucination. BERT на SQuAD 2.0: 81 F1 (человек: 86). Навык 'не знаю' - важен для production.
В extractive QA модель предсказывает start и end токены. Что происходит если ответ не содержится в тексте?
Generative QA: свободная форма
**Generative QA** не извлекает span, а генерирует ответ в свободной форме. Может синтезировать информацию из нескольких мест текста, перефразировать, добавлять контекст. Seq2Seq архитектуры (T5, BART) и decoder-only LLM (GPT). Преимущество: ответы естественнее. Недостаток: может галлюцинировать.
**Factual consistency**: generative модели могут отвечать убедительно, но неверно. Метрики: BLEURT, BERTScore для сравнения с reference ответами. **Faithfulness**: ответ должен быть поддержан контекстом. NLI (Natural Language Inference) классификатор проверяет: 'entails context -> faithful'.
Extractive QA отвечает точно но ограничена span'ами. Generative свободна но может галлюцинировать. Для медицинского QA что предпочтительнее?
Open-Domain QA: вопросы без контекста
**Open-Domain QA**: нет заданного контекста - только вопрос. Система должна сама найти документы (retrieval) и ответить (reader). **DPR (Dense Passage Retrieval, Facebook 2020)**: bi-encoder обученный специально для QA retrieval. **RAG**: DPR + seq2seq generator. Предшественник современных RAG пайплайнов.
**LLM как closed-book QA**: GPT-4 на TriviaQA без retrieval: 85%+. Вопрос: нужен ли retrieval если LLM знает ответ? Ответ: для актуальных фактов и domain-specific знаний - да. Для общих знаний в pre-training - нет. Hybrid: сначала проверить уверенность LLM, при низкой - retrieve.
DPR обучался специально для QA retrieval, а не как общий embedding model. В чём преимущество?
Reading Comprehension: понимание текста
**Reading Comprehension** - более широкая задача чем QA: проверяет глубокое понимание текста через вопросы разных типов. QuALITY (2022): длинные документы (5000+ токенов), вопросы требующие reasoning по всему тексту, не просто span lookup. RACE: вопросы из китайских экзаменов, требуют inference.
**LSAT и Bar Exam бенчмарки**: GPT-4 сдаёт LSAT в топ 10%. Reading comprehension вопросы требуют: логического вывода, понимания implikations, detection of assumptions. Это выходит за рамки simple span extraction - нужен reasoning.
Высокий F1 на SQuAD означает что QA система хорошо понимает тексты
SQuAD тестирует span extraction из релевантного пассажа. Реальное понимание требует multi-hop reasoning, inference, coreference - QuALITY, HotpotQA, MuSiQue тестируют это лучше
BERT достиг человеческого уровня на SQuAD 1.1 (2018), но это не означало AGI. Модели научились искать lexically близкие spans. HotpotQA требует объединить информацию из двух документов - здесь разрыв с человеком больше.
ConvQA (Conversational QA) сложнее стандартного QA. Основная дополнительная сложность:
Ключевые идеи
- **Extractive QA**: предсказывает start/end span из контекста. Verifiable, no hallucination, но ограничена фрагментами текста. BERT на SQuAD: 93 F1.
- **Generative QA**: T5, GPT генерируют свободный ответ. Естественнее, синтезируют информацию, но могут галлюцинировать. Faithfulness check обязателен.
- **Open-Domain QA**: retrieval + reader. DPR для специализированного retrieval. RAG = modern open-domain QA. LLM как closed-book QA для общих знаний.
- **Reading Comprehension**: deep understanding - coreference, multi-hop, inference. HotpotQA, QuALITY более реалистичны чем SQuAD.
- **Production**: для critical domains (медицина, юридическое) - extractive + citations. Для general assistants - generative + faithfulness check.
Связанные темы
QA - применение нескольких NLP техник вместе:
- RAG: Retrieval-Augmented Generation — RAG - современная реализация open-domain QA: DPR эволюционировал в dense retrieval, reader стал LLM
- Summarization — Длинный контекст QA требует суммаризации - не всё влезает в context window читающей модели
Вопросы для размышления
- SQuAD вопросы создавались людьми глядящими на параграф. Значит ответ всегда есть. Как изменится F1 если 30% вопросов не имеют ответа в тексте?
- Extractive QA предсказывает span. Как обрабатывать вопросы требующие числовых вычислений ('сколько лет прошло между X и Y') где ответ не span?
- Multi-hop QA требует объединить информацию из двух документов. Как retriever должен работать чтобы получить оба релевантных документа?
Связанные уроки
- nlp-17 — RAG извлекает контекст для open-domain QA
- nlp-12 — Извлекающий QA использует спан-голову BERT
- nlp-19 — Оба сжимают исходный текст в сфокусированный ответ
- aie-12-rag-fundamentals — Продакшен QA строится на конвейерах RAG
- ir-04 — Open-domain QA переиспользует ранжированный поиск пассажей
- ml-01-intro