Question Answering
I sistemi di risposta alle domande (QA) forniscono una risposta diretta a una domanda in linguaggio naturale. Include QA estrattivo, open-domain, generativo e visivo.
La risposta alle domande (QA) è l'attività di elaborazione del linguaggio naturale (NLP) che consiste nel rispondere a una domanda formulata in linguaggio naturale con la risposta stessa, ad esempio "Canberra" alla domanda "Qual è la capitale dell'Australia?", anziché con un elenco di pagine web. Un sistema QA interpreta la domanda, trova le informazioni pertinenti in un passaggio, una raccolta di documenti, un database o i propri parametri e restituisce o formula la risposta. I riquadri con le risposte dei motori di ricerca, gli assistenti virtuali, i bot di assistenza clienti e gli assistenti basati su modelli linguistici di grandi dimensioni (LLM) che rispondono a domande sui documenti aziendali sono tutti sistemi QA.
I primi sistemi rispondevano a domande su database circoscritti: BASEBALL (1961) gestiva domande su una stagione di partite dell'American League e LUNAR (1971) rispondeva alle domande dei geologi sui campioni di roccia lunare di Apollo. La competizione TREC question answering iniziò a valutare il QA open-domain nel 1999 e, nel febbraio 2011, IBM Watson sconfisse i campioni di Jeopardy! Ken Jennings e Brad Rutter generando molte risposte candidate per ogni indizio e valutando le prove a sostegno di ciascuna con centinaia di algoritmi.
Tipi di sistemi QA#
- QA estrattivo: Seleziona nel passaggio fornito la porzione che risponde alla domanda.
- QA open-domain: Cerca in una vasta raccolta, come l'intera Wikipedia, passaggi pertinenti prima di rispondere.
- Generazione aumentata dal recupero (RAG): Formula la risposta con un LLM condizionato dai passaggi recuperati, così può combinare fatti provenienti da più fonti e citarle.
- QA a libro chiuso: Risponde basandosi sulle conoscenze memorizzate nei pesi del modello, senza documenti, rendendo più difficile individuare le risposte inventate.
- QA con grafo della conoscenza: Traduce la domanda in una query strutturata su un grafo di entità e relazioni oppure su un database.
- Risposta a domande visive (VQA): Risponde a domande su un'immagine o un video.
QA estrattivo e SQuAD#
Lo Stanford Question Answering Dataset (SQuAD), pubblicato nel 2016 da Pranav Rajpurkar e colleghi, ha reso la QA estrattiva un benchmark standard: i collaboratori hanno scritto oltre 100.000 domande sugli articoli di Wikipedia e ogni risposta è una porzione dell'articolo. Una baseline di regressione logistica ha raggiunto un F1 del 51,0%, contro l'86,8% degli esseri umani. I punteggi usano l'exact match e un punteggio F1 a livello di token tra le risposte previste e quelle di riferimento; nel 2018 BERT ha raggiunto un F1 di test pari a 93,2. Un modello estrattivo assegna un punteggio a ogni token del brano come possibile inizio e fine della risposta:
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]]}")Il modello risponde «Pranav Rajpurkar» e «una porzione dell'articolo». Il brano non dice nulla sulle lingue, eppure il modello risponde «100.000» alla terza domanda, perché un modello addestrato su SQuAD 1.1 restituisce sempre una porzione di testo. SQuAD 2.0 (2018) ha aggiunto oltre 50.000 domande senza risposta formulate in modo da sembrare rispondibili; un sistema che aveva ottenuto un F1 dell'86% su SQuAD 1.1 è sceso al 66% su SQuAD 2.0, perché i modelli dovevano ora decidere quando astenersi.
QA open-domain e RAG#
I sistemi open-domain suddividono il lavoro tra un retriever, che individua alcuni brani pertinenti tra milioni, e un reader, che risponde basandosi su quei brani. DrQA (2017) recuperava articoli di Wikipedia con TF-IDF e li leggeva usando una rete neurale ricorrente; Dense Passage Retrieval (2020) ha sostituito TF-IDF con gli embedding BERT e la ricerca vettoriale, mentre RAG (2020) ha passato i brani recuperati a un generatore che scrive la risposta. Un reranker spesso riordina i brani recuperati prima che il reader li veda. Gli autori di RAG hanno rilevato che condizionare il modello sul testo recuperato rendeva il linguaggio generato più specifico, vario e fattuale rispetto a un modello comparabile senza retrieval; inoltre, i brani citati permettevano ai lettori di verificare eventuali allucinazioni nella risposta.
Visual Question Answering#
La VQA riceve un'immagine e una domanda, come «Quante persone aspettano alla fermata?», e richiede una IA multimodale che combini la visione artificiale con la comprensione del linguaggio, di solito un modello visione-linguaggio (VLM). In Ultralytics Platform Agents, un blocco LLM invia un'immagine e il contesto a monte, ad esempio le rilevazioni di YOLO26, a un modello visione-linguaggio insieme al prompt, così una domanda sulla scena riceve una risposta che usa come contesto i risultati del rilevatore.
QA e termini correlati#
- Ricerca semantica: restituisce i documenti o i brani più pertinenti per una query, ovvero l'input che un sistema QA legge per produrre la risposta.
- Chatbot: interfacce conversazionali che gestiscono dialoghi su più turni e usano la QA per rispondere alle domande fattuali nel corso della conversazione.
- Generazione di testo: produce qualsiasi testo a partire da un prompt. La QA generativa è una generazione di testo vincolata a rispondere a una domanda, spesso basandosi su fonti citate.










