Question Answering
Soru yanıtlama (QA) sistemleri, doğal dilde sorulan sorulara doğrudan yanıt verir. Çıkarımsal, açık alanlı, üretken ve görsel QA.
Soru yanıtlama (QA), "Avustralya'nın başkenti neresidir?" sorusuna web sayfaları listesi yerine "Canberra" gibi doğrudan yanıt verme görevini üstlenen doğal dil işlemenin (NLP) bir alanıdır. Bir QA sistemi soruyu yorumlar, yanıtı bir bölümde, belge koleksiyonunda, veritabanında veya kendi parametrelerinde bulur ve yanıtı döndürür ya da yazar. Arama motorlarının yanıt kutuları, sanal asistanlar, müşteri destek botları ve şirket belgeleri hakkındaki soruları yanıtlayan büyük dil modeli (LLM) asistanlarının tümü QA sistemidir.
İlk sistemler dar kapsamlı veritabanlarıyla ilgili soruları yanıtlardı: BASEBALL (1961), Amerikan Ligi maçlarının tek bir sezonuna ilişkin soruları yanıtlayabiliyordu; LUNAR (1971) ise jeologların Apollo ay kayaç örnekleriyle ilgili sorularını yanıtlıyordu. TREC soru yanıtlama değerlendirme hattı, açık alan QA ölçütlerini 1999'da belirlemeye başladı. Şubat 2011'de IBM Watson, her ipucu için çok sayıda olası yanıt üreterek ve her birinin kanıtlarını yüzlerce algoritmayla puanlayarak Jeopardy! şampiyonları Ken Jennings ve Brad Rutter'ı yendi.
QA Sistemlerinin Türleri#
- Çıkarımsal QA: Soruyu yanıtlayan bölümün, verilen bir metin içinden seçilmesini sağlar.
- Açık alan QA: Yanıt vermeden önce ilgili bölümleri bulmak için tüm Wikipedia gibi geniş bir koleksiyonda arama yapar.
- Getirim destekli üretim (RAG): Getirilen bölümlere koşullandırılmış bir LLM ile yanıt yazar; böylece yanıt çeşitli kaynaklardaki bilgileri birleştirebilir ve bu kaynakları belirtebilir.
- Kapalı kitap QA: Belgeler olmadan, modelin ağırlıklarında saklanan bilgilerle yanıt verir; bu da uydurma yanıtların tespit edilmesini zorlaştırır.
- Bilgi grafiği QA: Soruyu, varlıklar ve ilişkilerden oluşan bir grafik veya veritabanı üzerinde yapılandırılmış bir sorguya dönüştürür.
- Görsel soru yanıtlama (VQA): Bir görüntü veya videoyla ilgili soruları yanıtlar.
Çıkarımsal QA ve SQuAD#
Pranav Rajpurkar ve çalışma arkadaşları tarafından 2016'da yayımlanan Stanford Soru Yanıtlama Veri Kümesi (SQuAD), çıkarımsal soru yanıtlamayı standart bir kıyaslama ölçütü hâline getirdi: kitle kaynaklı çalışanlar Wikipedia makaleleri hakkında 100.000'den fazla soru yazdı ve her yanıt makalenin bir bölümünden oluşuyordu. Lojistik regresyon temel modeli %51,0 F1'e ulaşırken insanlar %86,8'e ulaştı. Puanlar, tahmin edilen ve referans yanıtlar arasındaki tam eşleşme ve belirteç düzeyindeki F1 puanını kullanır; BERT ise 2018'de test F1 puanı olarak 93,2'ye ulaştı. Çıkarımsal bir model, her metin belirtecini yanıtın olası başlangıç ve bitiş noktası olarak puanlar:
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]]}")Model, "Pranav Rajpurkar" ve "makalenin bir bölümü" yanıtlarını veriyor. Metinde diller hakkında hiçbir şey söylenmiyor, ancak SQuAD 1.1 üzerinde eğitilmiş bir model her zaman bir bölüm döndürdüğü için üçüncü soruya "100.000" yanıtını veriyor. SQuAD 2.0 (2018), yanıtlanabilir gibi görünen 50.000'den fazla yanıtsız soru ekledi. SQuAD 1.1'de %86 F1 puanı alan bir sistemin puanı, modeller artık ne zaman yanıt vermekten kaçınacaklarına karar vermek zorunda olduğundan bu veri kümesinde %66'ya düştü.
Açık Alanlı Soru Yanıtlama ve RAG#
Açık alanlı sistemler işi, milyonlarca metin arasından birkaç ilgili metni bulan bir getiriciyle bu metinlerden yanıt veren bir okuyucu arasında paylaştırır. DrQA (2017), Wikipedia makalelerini TF-IDF ile getirip tekrarlayan sinir ağı ile okudu. Dense Passage Retrieval (2020), TF-IDF'nin yerini BERT gömme vektörleri ve vektör aramasıyla değiştirdi. RAG (2020) ise getirilen metinleri yanıtı yazan bir üreticiye aktardı. Okuyucu görmeden önce getirilen metinleri yeniden sıralamak için sıklıkla bir yeniden sıralayıcı kullanılır. RAG yazarları, getirilen metne koşullandırmanın üretilen dili erişim kullanmayan benzer bir modele kıyasla daha özgül, çeşitli ve olgusal kıldığını buldu; alıntılanan metinler de okurların yanıttaki halüsinasyonları denetlemesini sağladı.
Görsel Soru Yanıtlama#
VQA, "Durakta kaç kişi bekliyor?" gibi bir soruyla birlikte bir görüntü alır ve genellikle bir görsel-dil modeli (VLM) olan, bilgisayarlı görü ile dil anlayışını birleştiren çok modlu yapay zekâ gerektirir. Ultralytics Platform Agents içinde bir LLM bloğu, görüntüyü ve YOLO26 tespitleri gibi önceki adımlardan gelen bağlamı istemle birlikte bir görsel-dil modeline gönderir. Böylece sahneyle ilgili bir soru, bağlam olarak dedektörün sonuçları kullanılarak yanıtlanır.
Soru Yanıtlama ve İlgili Terimler#
- Anlamsal arama: Soru yanıtlama sisteminin yanıt üretmek için okuduğu girdiye, yani sorguyla en alakalı belge veya metin parçalarına ulaşır.
- Sohbet botları: Çok turlu diyaloğu yöneten konuşma arayüzleridir ve bu diyalog içindeki olgusal soruları yanıtlamak için soru yanıtlamayı kullanırlar.
- Metin üretimi: Bir istemden herhangi bir metin üretir. Üretken soru yanıtlama, genellikle alıntılanan kaynakları kullanarak bir soruyu yanıtlamakla sınırlandırılmış metin üretimidir.










