Encoder
Encoder는 어떤 정보를 압축 하거나, 변형하여 특정 형태로 만들어 내는 것을 말함
ML에서는 다양한 Encoder가 있고, Bi-Encoder와 Cross-Encoder 가 있음
Bi-encoder
1단계:
- 질문과 문서를 각각 따로 인코딩
질문 → [0.2, 0.8, 0.1, ...] 벡터1
문서A → [0.3, 0.7, 0.2, ...] 벡터2
문서B → [0.9, 0.1, 0.5, ...] 벡터3
문서C → [0.25, 0.75, 0.15, ...] 벡터4
2단계:
- 인코딩(임베딩)한 내용을 기반으로 코사인 유사도 계산
질문 vs A = 0.85
질문 vs B = 0.32
질문 vs C = 0.78
결과
- A > C > B 순위
- 문서 A, B, C의 벡터를 미리 만들어 두고 새로운 질문만 인코딩 하여 비교 가능
Cross-encoder
1단계
- 질문과 답을 쌍(pair)으로 함께 입력
입력1: [CLS] 질문 A [SEP] 답변 A → 0.92점
입력2: [CLS] 질문 A [SEP] 답변 B → 0.05점
입력3: [CLS] 질문 A [SEP] 답변 C → 0.81점
결과
- A > C > B 순위
장점: "파이썬"과 "Python", "파일 읽기"와 "open() 함수" 등의 단어의 관계를 직접 비교하며 판단해서 더 정확함
단점: 매번 3번 인코딩해야 함. 문서가 100만개면 100만번 새로 인코딩하여 연산