‹ Lecture 2 18 / 23

Text Embedding

문서 수가 수백만 개라면 질문 하나가 들어올 때마다 모든 문서와 질문을 함께 읽는 비용을 감당하기 어렵다. Text Embedding은 문서를 미리 fixed-size vector로 표현해 두고, 새 query vector와 가까운 후보를 찾게 한다. 먼저 빠르게 후보를 모은 뒤, 그 후보만 query와 함께 자세히 읽어 rerank하는 식으로 검색 범위와 비교의 정밀도를 나눈다.

  1. Query
  2. Bi-Encoder + ANN
  3. top-KK documents
  4. Cross-Encoder rerank
  5. Generator

Text Embedding

Text Embedding은 sentence/passage를 fixed-size vector로 만들어 dense retrieval·clustering·dedup·classification에 쓴다. 세종대왕 질문과 출생 passage처럼 단어 중복이 없어도 task가 정의한 similarity를 학습할 수 있다.

첫 retrieval에서 놓친 passage는 rerank/citation할 수 없어 recall이 전체 상한을 만든다. Long docs는 chunk 단위로 vector화한다.

Text Embedding은 sequence 단위의 표현이다. FAISS/ANN 검색에서는 chunking도 중요하다. Hybrid retrieval이 항상 성능을 높이는 법칙은 아니다.

Bi-Encoder & Cross-Encoder

Bi-Encoder는 qq와 dd를 따로 encode하고 dot/cosine으로 비교하여 document vectors를 미리 계산하고 ANN index로 검색할 수 있다. Weights는 공유 또는 분리(DPR) 가능하다.

Cross-Encoder는[qq;dd]를 joint scoring해 token-level interaction을 허용하지만 candidate pair마다 query time 계산이 필요하다. 일반 pipeline은 millions→topK≈100→rerank다.

Bi-Encoder에서 “따로 encode한다”는 것은 query time에 query와 document tokens가 서로를 보지 않는다는 뜻이다. 같은 encoder weights를 두 번 사용하는 Siamese 형태도 가능하고, DPR처럼 query와 passage encoder를 따로 학습할 수도 있다. 문서 vectors는 offline에 계산하여 FAISS 같은 ANN index에 넣고, 질문이 들어올 때는 질문만 encode해 검색할 수 있다.

반면 Cross-Encoder는 [q;d]를 하나의 입력으로 함께 처리한다. 특정 query의 표현에 따라 document token과의 interaction을 계산하므로 최종 pair score를 모든 query에 공통인 document vector로 미리 저장할 수 없다. 이 비용 때문에 millions 전체보다 먼저 추린 top-K, 예를 들어 약 100개의 pair를 rerank하는 데 적합하다. Decoder 기반 reranker도 있으므로 모든 joint scorer가 bidirectional encoder라는 뜻은 아니다.

Hybrid wins는 제시된 DPR 계열 평가의 결과다. 모든 domain에서 결합이 반드시 이기는 것은 아니므로 실험 결과와 일반화 범위를 구분한다.

What the Similarity Means

“세종대왕은 언제 태어났나요?”와 “세종은 1397년 한양에서 태어났다”는 단어별 겉모양의 일치만으로 찾으려는 쌍이 아니다. Query에 답이 되는 passage라는 관계를 positive로 학습하면, 필요한 similarity는 task가 정한다. Clustering·dedup·classification에서도 무엇을 가깝게 둘지는 목적에 따라 달라진다.

Dense retrieval에서 놓치는 단서를 sparse retrieval이 보완할 수도 있다. 그러나 두 채널을 합치기만 하면 항상 좋아지는 것은 아니다. 각 점수의 scale도 다를 수 있으므로 domain과 task에 맞게 결합하고 ranking을 평가해야 한다. 강의의 Hybrid wins는 DPR 계열의 제시된 평가 결과다.

첫 retrieval에서 정답 passage를 놓치면 reranker는 존재하지 않는 후보를 다시 올릴 수 없다. Generator도 그 passage를 인용할 수 없다. 따라서 top-K 이후의 정밀도뿐 아니라 첫 후보 집합의 recall이 전체 cascade의 상한이라는 점이 중요하다. 긴 문서에서는 어떤 chunk를 vector로 만들지부터 이 recall에 영향을 준다.

Bi-Encoder · Cross-Encoder

Offline 문서 인코딩 가능 여부가 후보 검색과 reranking의 역할을 나눈다.

AspectBi-EncoderCross-Encoder
입력qq,dd를 따로 encode[qq;dd]를 함께 encode/score
문서 사전 계산가능Query pair별 계산 필요
Interaction마지막 vector similarity에서 만남Token-level interaction 가능
주요 사용대규모 ANN 후보 검색추린 top-KK의 rerank
Weights공유 또는 분리 가능Joint scoring model

Check

Bi-Encoder가 빠른 이유와 Cross-Encoder가 주로 top-KK reranking에 쓰이는 이유는?

Answer

Bi-Encoder & Cross-Encoder

Bi-Encoder는 document vector를 offline에 미리 만들 수 있다. Cross-Encoder는 qq,dd를 함께 읽어 pair별 계산이 필요하므로 모든 문서보다 추린 후보에 쓰는 비용 구조다.

Dense+Sparse+Rerank를 결합하면 반드시 더 좋은가?

Answer

교수님은 보장하지 않는다고 했다. 서로 놓치는 신호를 task/domain에 맞게 조합하고 ranking을 잘 해야 개선될 수 있다.

많은 documents를 매번 Query와 함께 모델에 넣지 않고 검색할 수 있는 이유와 그 trade-off는?

Answer

Bi-Encoder는 documents를 미리 encode하고 ANN index에서 Query vector와 가까운 후보를 찾는다. Cross-Encoder처럼 각 pair의 token interactions를 매번 계산하는 것과 다르다. 빠른 후보 검색의 recall과 이후 joint reranking의 품질을 따로 평가한다.

Bi-Encoder · Cross-Encoder를 축별로 비교하고 그 차이가 필요한 이유를 설명하세요.

Answer

Offline 문서 인코딩 가능 여부가 후보 검색과 reranking의 역할을 나눈다.

입력: Bi-Encoder=qq,dd를 따로 encode / Cross-Encoder=[qq;dd]를 함께 encode/score

문서 사전 계산: Bi-Encoder=가능 / Cross-Encoder=Query pair별 계산 필요

Interaction: Bi-Encoder=마지막 vector similarity에서 만남 / Cross-Encoder=Token-level interaction 가능

주요 사용: Bi-Encoder=대규모 ANN 후보 검색 / Cross-Encoder=추린 top-KK의 rerank

Weights: Bi-Encoder=공유 또는 분리 가능 / Cross-Encoder=Joint scoring model

Contents