본문 바로가기
NLP/논문리뷰

[논문 Review] 16. Dense Passage Retrieval for Open-domain Question Answering

by ㅣlㅣl 2024. 6. 13.
논문의 핵심 내용 한줄 요약
Dense passage를 통해 ODQA에서의 성능을 향상시키자!

정말귀여워요




 

Abstract

Open-domain question answering (ODQA) 태스크는 candidate context 선택을 위해 passage retrieval에 의존하고, 이전에는 retrieval 작업 수행을 위해 TF-IDF나 BM25와 같은 sparse vector space model이 주로 사용되었다.

DPR에서는 이중 Encoder 프레임워크를 통해 적은 양의 question, passages에서도 효과적인 dense representation을 도출해낼 수 있음을 보였다.

해당 방법론은 BM25를 크게 능가했고, 여러 ODQA 벤치마크에서 좋은 성능을 보였다.

 

간략한 배경 지식

  • ODQA : 엄청나게 많은 정보들을 포함하고 있는 대량의 문서(예: 위키피디아)들로부터 자연어 질의에 대한 답변을 찾아오는 태스크. 주어진 질문이 어떤 도메인에 해당되는 질문인지, 어떤 키워드인지에 대한 힌트는 전혀 주어지지 않는다.

The retriever-reader QA framework combines information retrieval with machine reading comprehension.

 

TF-IDF (Term Frequency-Inverse Document Frequency) [각주:1]

더보기

단어의 빈도와 역 문서 빈도를 사용하여 Document-Term Matrix 내의 각 단어들마다 중요한 정도를 가중치로 주는 방법이다.

  • TF(d, t) : 특정 문서 d에서 단어 t의 등장 횟수
    = (특정 단어 t의 문서 내 등장 횟수) / (해당 문서 내 총 단어 수)
  • DF : 특정 단어 t가 등장한 문서의 갯수
  • IDF(t, D) : DF의 역수에 로그를 취한 값 = log (D / (DF(t) + 1))
    = log(총 문서 수 / (특정 단어 t를 포함한 문서 수) + 1)
    • log를 씌우지 않으면 D가 커질 경우 값이 기하급수적으로 커질 수 있음
    • 분모에 1을 더하지 않으면 0이 될 수도 있음
  • TF-IDF (d, t) = TF(d,t) * IDF(t,D) = TF(d,t) * log (D / (DF(t) + 1))
  • 특정 문서 내에서 단어 빈도가 높을 수록, 그리고 전체 문서들 중 그 단어를 포함한 문서가 적을 수록 TF-IDF값이 높아진다. 따라서 이 값을 이용하면 모든 문서에 흔하게 나타나는 단어 (=불용어) 를 걸러내는 효과를 얻을 수 있다.
  • TF-IDF는 모든 문서에서 자주 등장하는 단어 중요도가 낮다고 판단하며, 특정 문서에서만 자주 등장하는 단어 중요도가 높다고 판단한다. TF-IDF 값이 낮으면 중요도가 낮은 것이며, TF-IDF 값이 크면 중요도가 큰 것이다. 즉, the나 a와 같이 불용어의 경우에는 모든 문서에 자주 등장하기 마련이기 때문에 자연스럽게 불용어의 TF-IDF의 값은 다른 단어의 TF-IDF에 비해서 낮아지게 된다.

 

 

BM25 [각주:2]

더보기
  • 주어진 쿼리에 대해 문서와의 연관성을 평가하는 랭킹 함수로 사용되는 알고리즘으로, TF-IDF 계열의 retrieve 알고리즘 중  SOTA 인 것
  • 기본적으로  TF와 IDF를 곱해준다는 시스템은 같지만 보정 파라미터들을 조금 추가해서 성능을 개선한 알고리즘이다.
  • 키워드 q1,..., q_n을 포함하는 쿼리 Q가 주어질 때 문서 D에 대한 BM25 점수는 다음과 같이 구한다.
  • |D| / avgdl : 해당 문서가 평균적인 문서 길이에 비해 얼마나 긴지를 고려 -> 평균 대비 길이가 긴 문서는 penalize 
    즉, 열 페이지가 넘는 문서에서 어떤 단어가 한 번 언급되는 것과, 트위터같은 짧은 문장에서 단어가 한 번 언급되는 것 중에서는 두 번째 경우가 더 의미 있다고 보는 것.
  • k1, b : 파라미터
    • b : 평균 대비 문서 길이 항에 대한 중요도
      • b가 커지면 중요도가 커지고, 0에 가까워지면 문서 길이에 대한 부분은 거의 무시됨
    • k1 : TF의 saturation을 결정. 하나의 쿼리 토큰이 문서 점수에 줄 수 있는 영향을 제한함
      -> 직관적으로 어떤 토큰이 한 번 더 등장했을 때, 이전까지에 비해 점수를 얼마나 더 높여야 하는가를 결정
      • 어떤 토큰의 TF가 k1보다 작거나 같으면 TF가 점수에 주는 영향이 빠르게 증가
      • 어떤 토큰의 TF가 k1보다 크면 TF가 점수에 주는 영향이 천천히 증가
      • k1의 존재로 인해 BM25에서는 TF가 어느 정도 이상부터 점수에 주는 영향이 거의 증가하지 않음
TF-IDF / BM25 score 비교

 

 

 

1. Introduction

일반적으로 ODQA 시스템은 다음 과정과 같이 이뤄진다.[각주:3]

출처 : Reading Wikipedia to Answer Open-Domain Questions

 

1. context retriever가 먼저 질문에 대한 답변이 존재하는 passage의 small subset을 선택한다

Document Retriever는 Wikipedia 에서 문서 검색해서 범위를 좁히고 가능성 있는 기사에 집중한다.

1. 역 인덱스를 조회후 vector model scoring 한다.
2. 기사와 질문은 TF-IDF 가증치 back-of-word vector로 비교 된다.
3. n-gram으로 어순 고려해 개선했고. bigram을 murmur3 hash mapping해 bigram count를 사용한다.

출처 : https://wikidocs.net/188250

 

2. machine reader가 retrieved된 context를 검사하고, 정답을 식별한다.

Document Reader는 신경망 모델의 영향을 받아 AttentiveReader 와 유사하게 이해한다.Paragraph encoding, Question encoding, Prediction 으로 진행한다.

1. Paragraph encoding을 위해 각 단락에 RNN 모델 개발후 예측 답변을 집계한다.
2. 단락P의 모두를 Feature vector sequence 로 표현하고 RNN 에 input해서 Pi를 얻어낸다.
3. 다층 양방향 LSTM 을 사용해서 Pi를 각 계층 단위의 연결로 사용한다.
4. Question encoding Qi 는 word embedding에 RNN을 적용해 단어 중요성을 encoding 계산한다.
5. Prediction은 정답 가능성이 높은 token 을 예측하기 위해 paragraph vector(p) 와 question vector(q) 를 입력하여 각각 훈련한다.
6. Pi와 Q의 유사성을 찾고 token 의 시작/끝 확률을 계산한다.
7.토큰의 최적 범위를 선택하고 단락 전체에 비정규화 지수와 argmax 를 사용해서 최종예측한다.


출처 : https://wikidocs.net/188250

 

이러한 방식은 매우 합리적으로 보이지만, 실사용했을 때는 성능 저하가 보이는 경우가 있기 때문에 retriever의 검색 성능을 높이는 것이 중요하다.

앞에서 설명했듯 그전의 retriever는 주로 TF-IDF나 BM25 방식으로 구현되었는데, 이러한 sparse vector 방식 대신 dense vector를 이용하면, 좀 더 조밀하게 잠재적인 의미를 표현할 수 있다.

 

예를 들어, 완전히 다른 토큰으로 구성된 동음이의어나 의역어를 가까운 벡터에 매핑할 수 있다.

Question : “Who is the bad guy in lord of the rings?”
Answer : “Sala Baker is best known for portraying the villain Sauron in the Lord of the Rings trilogy”

위 예제에서, “악역”의 의미로 question에는 “bad guy”가 쓰였지만 answer에서는 “villain”이 사용되었다.

  • TF-IDF, BM25와 같은 term-based system의 경우에는 단어가 달라졌기 때문에 해당 answer가 포함된 passage를 잘 retrieve 하지 못할 수 있다.
  • dense retriever의 경우, 지칭하는 단어가 달라졌더라도 “bad guy”에 대한 representation과 “villain”에 대한 representation이 embedding space에서 가까운 위치에 있기 때문에 이를 잘 retrieve 할 수 있다.

 

또한 학습 가능한 임베딩 함수를 fine tuning해서 개별 태스크에 맞는 dense encoding을 만들어낼 수 있으므로, task-specific representation에 대해서도 유연하게 대처 가능하다.

 

 

그러나 일반적으로 좋은 품질의 dense vector representation을 학습하려면 많은 양의 labeled QA pair가 필요하다고 여겨진다. 이를 극복하기 위해 ORQA 논문에서는 Dense retrieval method에 ICT objective를 사용했다.

ICT objective는 추가 사전 학습을 위해 masked sentence를 포함하는 블록을 prediction하는 방식이다. 이후 question encoder & reader model은 QA 쌍을 이용해 파인튜닝된다.

 

ICT?

더보기

 

기본적인 Cloze task는 context에서 masking된 단어를 예측하는 데에 그 목적이 있다. ICT는 그 반대이다. (context를 주고 sentence를 예측하는 것이 아니라) sentence를 주고 context를 예측한다.  [각주:4]

 

ICT 예시

retrieval 사전학습에 이용되는 ICT의 예시이다. 무작위 문장(질문인척 하는)과 문장의 context(관련이 있는 context인 척 하는)가 text snippet(=단편, 한편의 글)으로 부터 주어진다.

"얼룩말은 4개의 이동 패턴을 보인다 : 걷다가, 총총 걷다가, 구보 하듯이 걷다가 전속력으로 질주한다. 얼룩말은 일반적으로 말보다 느린 대신 매우 좋은 지구력이 있어서 포식자로부터 도망갈 수 있도록 한다. 쫓기게 되는 상황에서 얼룩말은 측면으로 지그재그로 움직인다..." 한 배치 내에 있는 후보 지문들 중에서 관련이 있는 지문을 고르는 것이 목적이다.

 

 

ORQA에서는 dense retrieval이 BM25의 성능을 능가할 수 있다는 것을 보였으나, 몇 가지 약점 또한 존재한다.

  • ICT pretraining은 계산 집약적이다
  • QA 데이터셋에서 Question역할로 사용된, 문서 내에서 추출된 일반 문장이 Question의 역할을 제대로 하는지가 명확하지 않다
  • context encoder가 QA쌍을 사용하여 fine-tune 된 것이 아니기에, 해당 encoder를 이용하여 산출되는 representation은 최적이 아닐 수 있다

 

따라서 본 논문에서는 추가 사전학습 (ICT) 없이도 dense embedding model을 성공적으로 학습할 수 있을지에 초점을 맞춰 연구를 진행했으며, BERT dual-encoder (question / passage encoder) 아키텍처를 활용해 상대적으로 적은 수의 QA 쌍을 활용해 개발할 수 있도록 했다.

 

이를 통해 BM25, ORQA 성능을 크게 능가할 수 있었고, 아래와 같은 점을 증명했다.

  • 추가적인 사전학습 없이, question/passage encoder를 finetuning 하는 것만으로도 BM25의 성능을 크게 능가할 수 있음을 입증
  • 검색 정밀도가 높아질수록 (=retriever의 성능이 좋아질수록) 실제로 QA 정확도가 높아진다는 사실을 확인

 

 

 

3. Dense Passage Retriever (DPR)

DPR 구조

DPR의 목표는 M개로 구성된 text passage 집합이 주어졌을 때, 저차원의 연속 공간에서 모든 passage를 indexing하여 query와 관련된 상위 k개의 passage를 효율적으로 검색해 반환할 수 있도록 하는 것이다.

(이 때 M은 2,100만개 이상으로 매우 크고, k는 20-100과 같이 상대적으로 매우 작다)

출처 : https://gbdai.tistory.com/72

  • dense encoder \(E_p(\dot)\) 를 사용해 모든 text passage를 d차원 실수 벡터에 매핑하고, 검색에 사용할 모든 M개의 passage에 대한 index를 구축한다.
  • 사용자의 query 입력이 들어오면, query를 D차원에 매핑해주는 또 다른 dense encoder \(E_q(\dot)\) 를 사용하고, 그 중 query vector에 가장 가까운 k개의 passage를 검색한다.
  • 두 encoder  \(E_p(\dot)\), \(E_q(\dot)\) 를 통해 만들어진 passage, query vector 사이의 유사도를 계산해 top-k passage를 선정하게 되며 계산식은 아래와 같다.

Similarity by dot product (question - passage)

  • Encoder로는 BERT-uncased를 사용했고, d=768로 설정
  • inference를 진행하는 동안 모든 passage에 passage encoder \(E_p\)를 적용하고, FAISS 알고리즘을 적용하여 이를 indexing한다.
    • FAISS : dense vector의 유사도 검색과 클러스터링을 위한 매우 효율적인 오픈 소스 라이브러리로 수십 억개의 벡터에도 손쉽게 적용 가능

 

 

DPR 학습 과정

관련성이 높은 질문과 답의 쌍이 더 작은 거리 (= 더 높은 유사도) 를 가지고, 관련이 없는 질문은 더 먼 거리를 가지도록 벡터 공간을 생성해야 한다.

데이터셋 구성 방식

  • D : m개의 instance를 가진 학습 데이터셋
  • \(q_i\) : 질문
  • \(p_i^+\) : 질문 \(q_i\)에 대한 1개의 positive passage
  • \(p_i^-\) : 질문 \(q_i\)에 대한 n개의 negative passage

 

각 instance는 1개의 \(q_i\) 와 1개의 \(p_i^+\), n개의 \(p_i^-\) 가 한 쌍으로 구성된다.

loss function (negative log likelihood)

 

 

 

Retrieval에서 passage를 검색할 때, positive example은 명시적으로 제공되는 반면 negative example은 매우 방대한 pool에서 선택되는 경우가 많다. QA 데이터셋만 해도, Question에 대한 Answer (=positive example) 가 명시되어 있지만 negative example은 보통 없지 않은가?

 

따라서 아래와 같은 3개의 negative example 상정 방식을 고려해 실험을 진행했다.

  • Random : random passage in corpus
  • BM25 : answer를 포함하지 않지만, question의 대부분 토큰과 일치한다고 BM25가 반환한 passage
  • Gold : train data에서 나타나는 다른 question과 짝을 이루는 positive example

 

 

In-batch negative

mini-batch 내에 B개의 question이 있고, 각 question이 passage와 연계되어 있다고 가정하자.

Q와 P를 각각 question, passage의 B*d 차원 임베딩 행렬이라고 한다.

\(S = QP^T)\)는 유사도 점수의 B*B 행렬이고, 각 행이 B개의 passage와 짝을 이루는 문제에 해당한다.

모든 (\(q_i, p_j\)) 쌍은 i = j일 때 양수 값을 가지는 positive passage이고, i != j 음수 값을 가지는 negative passage이다.

출처 : https://gbdai.tistory.com/72

이렇게 하면 각 배치에 question, positive insance, B-1개의 negative instance가 생성되고, 구해진 similarity matrix를 재사용해서 효율적인 학습이 가능하게 했다.

 

 

 

4. Experimental Setup

4.1 Wikipedia data pre-processing

  1. 선행 연구에 따라 영문 wikipedia를 소스 문서로 사용했다.
  2. DrQA에서 공개된 전처리 코드를 사용해 wikipedia 문서에서 문서의 정제된 부분만 추출한다.
    -> 표, info-box 등을 삭제
  3. 문서를 100개 단어로 이뤄진 block으로 나누고, 이를 passage라 한다
  4. 각 passage는 title + [SEP] + passage 형태로 구성되어 있다

 

4.2 Question Answering Datasets

  • Natural Questions (NQ)
  • TriviaQA
  • WebQuestions (WQ)
  • CuratedTREC (TREC)
  • SQuAD

위 데이터셋에서 TREC, WQ, TriviaQA에서는 question-answer pair만 제공되기 때문에 BM25에서 가장 높은 순위의 passage를 answer passage로 간주하고 사용한다.

이 때 top-100 retrireved passage에 모두 answer가 나오지 않는 경우 해당 question은 삭제하였다.

SQuAD와 NQ의 경우 passage 처리 과정이 본 연구에서 상정한 과정과 달랐기 때문에 gold passage를 candidate pool과 corresponding 시켜주는 match & replace 과정을 진행했다. 이 때 matching이 이뤄지지 않으면 해당 question은 폐기한다.

 

 

 

5. Experiments: Passage Retrieval

DPR의 retrieve 성능을 평가해보자!

  • batch size = 128
  • in-batch negative 사용 + question 하나당 추가적인 BM25 negative (=hard negative) 추가
  • question & passage encoder 훈련
    • 대규모 데이터셋 (NQ, TriviaQA, SQuAD)  40 epochs
    • 소규모 데이터셋 (TREC, WQ) 100 epochs
  • learning_rate = \(10^{-5}\)
  • optimizer = Adam
  • warmup, dropout_rate = 0.1
  • linear scheduling

 

각 데이터셋에 맞게 specific한 조정을 하는 flexibility를 얻는 것도 좋지만, 전반적인 태스크에서 잘 작동하는 단일 retriever를 얻기 위해 아래와 같은 태스크를 진행했다.

  • single : data-specific하게 훈련 진행
  • multi : SQuAD를 제외한 모든 데이터셋의 훈련 데이터를 결합해 encoder를 훈련하는 실험도 진행했다.
    (SQuAD는 소수의 위키백과 문서로 제한되어 있으므로 bias를 유발할 수 있기 때문에 제한다)

 

 

또한 각 실험 설정에 대해 DPR을 단독으로 사용했을 때, BM25 + DPR 사용했을 때의 성능 측정도 비교를 해봤다.

  • BM25 + DPR 사용 시에는 DPR, BM25에서 각각 top-2000 passage를 retrieve 한 다음 아래 수식을 이용해서 reranking을 진행해서 최종적으로 retrieve 될 passage를 산출

ranking function (lambda = 1.1)

 

 

5.1 Main results

아래는 각각의 QA 데이터셋에서 passage retrieval의 top-k accuracy (\(k \in {20, 100}\)) 를 비교한 표이다.

  • SQuAD를 제외한 모든 데이터셋에서 DPR이 BM25보다 일관되게 더 나은 성능을 보임
    • annotator들이 passage를 본 후에 question을 작성했기 때문에, passage - question 사이 어휘 중복이 많아서 BM25에 분명한 이점이 있음
    • 데이터가 소수의 wikipedia 문서로만 구성되어 있기 때문에 train instances의 분포가 편향되어 있다
  • k가 작을 때 특히 성능 격차가 커짐 (ex. NQ에서 top-20 accuracy의 경우 : 78.4% - 59.1%)
  • 또한 몇 개의 데이터셋 (TREC, SQuAD) 의 경우에는 BM25를 결합하는 것이 성능 향상에 도움이 되었음

 

 

5.2 Ablation Study

다양한 모델 훈련 방식이 결과에 미치는 영향을 이해하고자 ablation study를 진행했다.

Sample efficiency

좋은 passage retrieval 성능을 위해서는 얼마나 많은 training example이 필요한지 확인한다.

[그림 1] NQ top-k accuracy

 

그림 1은 NQ 데이터셋에서 다양한 training example 수에 따른 상위 k개의 retrieval accuracy를 나타낸다.

1K개의 예제만을 사용해 훈련된 dense passage retriever도 이미 BM25보다 성능이 뛰어나고, 데이터를 더 추가하면 retrieval accuracy가 지속적으로 향상된다.

 

 

In-batch negative training

NQ 데이터셋에 대해 다양한 훈련 방식을 테스트해보았다.

  • 상단 블록 : standard 1-of-N training setting (random / bm25 / gold)
    (1개의 question, 1개의 positive passage, N개의 negative passage) 로 이뤄진 세팅
    • k >= 20인 경우 random, BM25, gold 중 어떤 걸 선택하더라도 top k accuracy에 큰 영향을 미치지 않음
  • 중간 블록 : gold + in-batch negative setting
    • 비슷한 구성 (type:gold, N=7) 에서 in-batch negative일 때 성능이 더욱 올라갔다
    • gold, in-batch gold의 주된 차이는 negative passage가 같은 batch에서 오는지, 전체 훈련 데이터셋에서 오느냐의 차이이다
    • negative example을 새로 만들기보다는 기존에 이미 존재하는 배치를 negative example로 재사용함으로써, 메모리 절약적이 되고 학습 샘플을 늘릴 수 있게 되어 좋은 성능을 보이게 된다
    • batch size가 커질수록 accuracy는 지속적으로 증가
  • 하단 블록 : gold + in-batch negative setting + 1~2 BM25 passage
    question마다 1~2개의 BM25 negative passage (hard negative passage) 를 추가해줌
    • hard negative를 1개 추가하는 것은 성능 향상에 도움을 줌
    • 2개를 추가하면 오히려 1개 추가 시보다 성능 하락이 있음

 

 

Similarity and loss

dot product 이외에도 cosine, L2 norm도 decompose가 가능한 similarity function으로 사용된다.

  • 비교를 진행한 결과 L2 norm이 dot product에 비해 성능이 우수
  • L2 norm, dot product가 cosine에 비해 성능이 우수
  • negative log likelihood 이외에도 question에 대해 positive passage / negative passage를 직접 비교하는 triplet loss도 확인해보았으나 성능에 별다른 영향을 미치지 않음

 

 

Cross-dataset generalization

DPR이 추가적인 사전학습 없이 다른 데이터셋에 적용되더라도 여전히 잘 일반화될 수 있을까?

데이터셋에서의 일반 성능을 체크하기 위해 NQ 데이터셋에서만 학습을 진행하고, NQ보다 작은 규모인 WQ, TREC 데이터셋에서 성능을 테스트해봤다.

  • Webquestion : SOTA (75.0) vs DPR (69.9) vs BM25 (55.0)
  • TREC : SOTA (89.1) vs DPR (86.3)  vs BM25 (70.9)

결과적으로 DPR은 top-20 retrieval accuracy에서 SOTA모델과 3~5점 정도의 차이 밖에 안나고, BM25 baseline보다 뛰어난 성능을 보이는 것으로 좋은 일반화 성능을 입증했다. 

 

5.3 Qualitative Analysis

DPR이 BM25보다 전반적으로 더 나은 성능을 보이긴 하지만, 각각의 방식으로 retrieved passage는 질적으로 차이가 있다.

  • BM25와 같은 term-based 방식은 선택적인 키워드, 구문에 민감
  • DPR : 어휘의 변형이나 의미 관계를 더 잘 포착함

  • 첫 번째 예시 ("What is the body of water between England and Ireland?")
    • BM25 : "England", "Ireland"와 같은 키워드가 여러 번 등장하지만 retrieved 된 passage가 실제 답변과는 별로 관련이 없음
    • DPR : 어휘가 겹치지 않음에도 불구하고 "body of water" 과 같은 의미적 유사 어휘와 일치시켜 정답을 맞춤
  • 두 번째 예시 ("Who plays Thoros of Myr in Game of Thrones?")
    • BM25 : " Thoros of Myr" 라는 주요 키워드를 포착
    • DPR : 이를 포착하지 못함

 

 

5.4 Run-time Efficiency

open-domain QA에서 retriever가 필요한 이유는 reader module이 고려해야 하는 candidate passage의 수를 줄이기 위해서이며, 이는 사용자의 query에 실시간으로 답변하는 데 매우 중요하다.

  • DPR : 995.0 questions / second
  • BM25 : 23.7 questions / second

그러나 FAISS index 구축에는 훨씬 오랜 시간이 걸리는 데, 2100만개의 vector를 기준으로 DPR은 8.5 시간이 걸리는 반면 BM25에서는 30분밖에 걸리지 않는다!

 

 

 

6. Experiments: Question Answering

서로 다른 passage retriever가 최종 QA accuracy에 어떤 영향을 미치는지 확인하는 섹션이다.

 

6.1 End-to-end QA System

다양한 retriever를 직접 연결할 수 있고, question에 대한 output을 출력하는 neural reader가 포함된 end-to-end QA system을 구현했다.

top-k retrieved passages에 대해, reader는 각 passage마다 passage selection score를 할당하고, passage 내에서 span을 추출해 span score 역시 할당한다.

최종적으로 가장 높은 passage selection score에서 가장 높은 span score를 가진 span이 answer로 출력된다.

 

 

6.2 Results

위의 표는 약간의 정규화를 거친 후 기준 답변과 완벽히 일치하는지 측정한 최종 end-to-end QA 결과이다.

  • retrieve 성능이 좋았던 DPR 모델이 BM25에 비해 최종 QA 결과 역시 좋았다는 것을 볼 수 있다
  • NQ, TriviaQA 와 같은 대규모 데이터셋의 경우 Multi, Single 세팅이 비슷한 성능을 보임
  • WQ, TREC과 같은 소규모 데이터셋의 경우 Multi 에서 분명한 이점을 얻음

 


참고 문헌

https://gbdai.tistory.com/72

https://lilianweng.github.io/posts/2020-10-29-odqa/

https://velog.io/@tri2601/DPR