Twowinn
[AI Research] 03 - Dense Passage Retrieval for Open-Domain Question Answering 본문
[AI Research] 03 - Dense Passage Retrieval for Open-Domain Question Answering
내일모레는 코딩왕 2026. 3. 19. 13:44작성 목적
알파 프로젝트에서 국민대학교 소프트웨어융합대학 신입생을 위한 RAG 기반 챗봇을 개발하며, 생성형 AI의 답변 품질을 결정짓는 가장 큰 변수가 바로 '정확한 문서를 찾아오는 검색(Retrieval) 능력'임을 체감했다. 딥러닝 기초 수업에서 배운 Transformer와 Attention Mechanism이 실제 검색 엔진에서 어떻게 dense representation으로 구현되는지 파헤쳐 보고, 기존 BM25의 한계를 극복한 DPR의 핵심 아키텍처와 In-batch Negatives 전략을 우리 프로젝트의 검색 모듈에 녹여내기 위해 이 논문을 정리해 보았다.
Abstract
원문 핵심 문장
“ In this work, we show that retrieval can be practically implemented using dense representations alone, where embeddings are learned from a small number of questions and passages by a simple dual-encoder framework. ”
1. Introduction
[키워드 매칭의 한계 : '의미'를 잃어버린 검색의 늪]
Open-Domain QA(질문 답변) 시스템은 방대한 문서 집합 속에서 정답을 포함한 구절을 찾아내는 '검색(Retrieval)' 단계가 전체 성능을 좌우하는 핵심 관문이다. 하지만 오랫동안 이 분야의 표준으로 자리 잡았던 TF-IDF나 BM25 같은 Sparse Vector(희소 벡터) 모델들은 치명적인 태생적 한계를 지니고 있다.
문제가 무엇인가? : Vocabulary Mismatch
BM25와 같은 방식은 질문과 문서에 등장하는 '단어의 빈도'와 '중복'에만 집착한다. 이는 질문자가 정답 구절에 있는 단어를 정확히 알고 질문했을 때는 강력하지만, 현실은 그렇지 않다.
- 동의어의 함정: 질문에 "bad guy"라는 표현이 있어도, 문서에 "villain"이라고 적혀 있다면 BM25는 이를 매칭하지 못하고 지나친다.
- 의미의 상실: 키워드 매칭은 문맥의 흐름이나 단어 간의 semantic한 관계를 전혀 이해하지 못한 채, 오직 형태적인 일치 여부만 따지는 '키워드 추적기'에 불과하다.
DPR의 해법 : 실전적인 Dense Representation의 구현
이 논문은 복잡한 사전 학습(Pre-training) 없이도 **Dense Representation(밀집 표현)**만으로 기존 시스템을 압도할 수 있음을 증명했다.
- 유연한 매칭: 단어의 철자가 달라도 벡터 공간상에서 의미가 가까우면 정답 후보로 선택할 수 있는 '유연함'을 확보했다.
- 학습 가능한 구조: 고정된 수식에 의존하는 BM25와 달리, 임베딩 함수 자체를 학습시켜 특정 도메인(예: 우리 소융대 신입생의 질문 패턴)에 최적화된 표현력을 가질 수 있다.
결과적으로 DPR은 Top-20 검색 정확도에서 BM25를 9~19% 절대 수치로 크게 앞지르며, 검색 기반 QA의 새로운 패러다임을 제시했다.
2. Background
[QA의 전장 : 위키피디아 2,100만 구절의 바다]
DPR이 활약하는 무대는 단순히 텍스트 몇 줄이 아니다. 시스템이 상대해야 할 데이터의 규모와 설정은 매우 가혹하다.
환경 설정 (Extractive QA)
본 논문은 정답이 말뭉치 속 특정 구간(Span)으로 존재하는 추출형 QA 설정을 따른다.
- 구절 분할: 전체 위키피디아 덤프를 100단어 단위의 중복 없는 텍스트 블록으로 쪼갰다.
- 데이터 규모: 이렇게 생성된 기본 검색 단위(Passage)만 무려 21,015,324개에 달한다. 이 거대한 바다에서 질문 하나에 대한 정답 후보 Top-k(보통 20~100개)를 실시간으로 건져 올려야 한다.
평가 지표 : Top-k Retrieval Accuracy
검색기의 성능은 단순하다. "추출한 Top-k 구절 안에 정답이 포함되어 있는가?"를 따지는 Top-k Retrieval Accuracy로 평가한다.
검색기가 정답을 하나라도 놓치면, 뒤에 오는 Reader 모델이 아무리 똑똑해도 소용없기 때문에 이 단계의 정확도는 생명과도 같다.
3. Dense Passage Retriever
[듀얼 인코더의 대칭미 : 내적(Dot Product)의 마법]
DPR 아키텍처는 놀라울 정도로 단순하면서도 강력한 Dual-Encoder 구조를 택했다.
구조의 핵심: 독립된 두 개의 인코더
- 질문 인코더 (E_Q): 질문을 768차원의 밀집 벡터로 압축한다.
- 문서 인코더 (E_P): 2,100만 개의 각 구절을 동일한 차원의 벡터로 인코딩한다.
- 두 모델은 모두 BERT-base를 기반으로 하며, 문장의 핵심 의미를 담고 있는 [CLS] 토큰의 벡터값을 최종 임베딩으로 사용한다.
연산의 효율성: 오직 내적(Dot Product)
복잡한 Attention 연산 대신, 질문과 문서 벡터 간의 내적만으로 유사도를 측정한다.

이는 계산 속도를 극적으로 높여준다. 문서들의 벡터는 미리 계산해서 FAISS 같은 라이브러리에 인덱싱해둘 수 있고, 사용자의 질문이 들어오면 순식간에 수천만 개의 문서와 유사도를 비교해 Top-k를 뽑아낼 수 있는 것이다.
4. Training Strategy
[In-batch Negatives: 효율의 극치, 메모리의 혁신]
밀집 벡터 모델의 최대 난제는 "성능을 내기 위해 압도적인 양의 데이터가 필요하다"는 통념이었다.
하지만 DPR은 이를 'In-batch Negatives'라는 기막힌 전략으로 정면 돌파한다.
어떻게 가능한가? : 연산의 재활용
일반적으로 모델을 학습시키려면 질문 하나당 정답 문서(Positive)와 여러 개의 오답 문서(Negative)를 일일이 매칭해줘야 한다. 하지만 이는 메모리 낭비가 심하다. DPR은 이를 배치(Batch) 단위의 트릭으로 해결한다.
- 배치의 재구성: 배치 크기가 $B$일 때, 각 질문은 배치 안에 있는 자신의 정답 문서 1개와 연결된다.
- 공짜 오답(Free Negatives): 이때 배치 내의 '다른 질문들의 정답 문서'들은 현재 질문에게는 아주 훌륭한 오답 샘플이 된다.
- B^2의 마법: 이 방식을 통해 단 한 번의 행렬 곱셈(QP^T)만으로 배치 내 B^2개의 질문/문서 쌍을 동시에 계산하며 학습 효율을 극대화한다.
Hard Negatives : '어려운' 오답의 필요성
단순히 랜덤한 오답만으로는 모델이 정교해지기 어렵다. DPR은 BM25 점수는 높지만 정답은 포함하지 않는 구절을 'Hard Negative'로 추가했을 때 성능이 비약적으로 상승함을 확인했다. 이는 모델이 단순한 단어 겹침을 넘어 진짜 '의미'를 구분하게 만드는 훈련 과정이다.
5. Experimental Results
[벤치마크의 학살 : BM25를 넘어선 압도적 성능]
DPR은 5개의 주요 QA 데이터셋에서 기존의 강자였던 BM25와 ORQA를 문자 그대로 '압살'했다.
압도적인 수치 (Top-20 Accuracy)
가장 대표적인 Natural Questions(NQ) 데이터셋의 결과를 보자.
- BM25 (전통의 강자): 59.1%
- DPR (신흥 강자): 78.4%
- 약 19%p라는 경이로운 격차를 벌리며, 밀집 벡터 검색이 키워드 매칭보다 우월함을 입증했다.
샘플 효율성 : 적은 데이터로도 충분하다
놀라운 점은 DPR이 단 1,000개의 질문-문서 쌍만으로도 이미 BM25의 성능을 추월하기 시작했다는 것이다. 이는 우리가 소융대 챗봇 프로젝트를 진행하며 데이터가 부족한 상황에서도 충분히 고성능 검색기를 만들 수 있다는 희망적인 근거가 된다.
6. The SQuAD Anomaly
[데이터의 편향 : BM25가 이례적으로 승리한 이유]
흥미로운 점은 유독 SQuAD 데이터셋에서만 DPR이 BM25에 밀리는 모습을 보였다는 것이다. 논문은 그 원인을 매우 날카롭게 분석한다.
- 질문 생성의 한계: SQuAD는 어노테이터들이 지문을 먼저 읽고 질문을 작성했다.
- 단어의 중복(Lexical Overlap): 이 과정에서 질문과 지문 사이에 단어가 겹칠 확률이 비정상적으로 높아졌고, 이는 키워드 매칭 방식인 BM25에 압도적으로 유리한 환경을 조성했다.
- 결론: 이는 모델의 결함이 아니라 데이터셋 자체가 가진 편향성(Bias) 때문이며, 실제 사용자가 던지는 자연스러운 질문(NQ 등)에서는 DPR이 훨씬 강력하다는 점을 시사한다.
7. Qualitative Analysis: [검색의 결이 다르다 : '의미'를 읽는 검색]
DPR과 BM25가 찾아오는 결과는 질적으로 완전히 다르다.
- BM25의 맹점: 질문에 "England", "Ireland"가 많이 나온다고 해서 영국 사이클링 팀에 대한 엉뚱한 구절을 가져온다.
- DPR의 통찰: 질문에 "body of water"가 있다면, 단어가 직접 겹치지 않더라도 "Irish Sea", "channel" 같은 의미적 이웃(Semantic Neighbors)을 정확히 찾아낸다.
결론: [알파 프로젝트로의 연결 : 우리는 어떤 검색기를 만들 것인가?]
DPR 논문은 우리에게 명확한 방향성을 제시한다. 우리가 만들 국민대 소융대 챗봇은 단순히 "장학금"이라는 단어를 찾는 수준을 넘어, "돈 없는데 학교에서 지원해 주는 거 있어?"라는 질문 속에 담긴 학생의 의도를 읽어내야 한다.
- Dual-Encoder의 적용: 질문과 문서의 의미를 벡터로 압축하여 유연한 검색을 구현하자.
- In-batch Negatives의 활용: 효율적인 학습 전략을 통해 제한된 자원으로도 SOTA급 검색 성능을 끌어내자.
- Hybrid의 가능성: DPR의 의미 검색과 BM25의 정확한 키워드 매칭을 결합한다면, 더욱 빈틈없는 신입생 도우미가 될 수 있을 것이다.