KoBERT, SBERT, FAISS, 문서 임베딩
KoBERT를 이용한 기계 독해 (MRC: Machine Reading Comprehension)
✅ 목적
- 문서(본문)와 질문을 입력으로 받아 정답이 포함된 문장 내 시작/종료 위치를 예측하는 작업
- 대표적인 자연어 이해 태스크인 질의응답 (Question Answering, QA) 문제
✅ KorQuAD 데이터셋
- 한국어 기반 QA 데이터셋 (context, question, answer 구성)
- 정답의 위치는 본문 내
answer_start, answer_end로 표시됨
✅ MRC 모델 개념
- 입력 포맷:
[CLS] context [SEP] question [SEP]
- 출력층:
- 시작 위치 예측 (512 클래스 Softmax)
- 종료 위치 예측 (512 클래스 Softmax)
- 즉, 두 개의 다중 클래스 분류 문제로 구성됨
✅ 한계점
- BERT 입력 최대 길이: 512 토큰
- 본문이 길면 정답이 포함되지 않을 수 있음 → 해당 샘플 제거 필요
SBERT를 이용한 한국어 챗봇
✅ SBERT란?
- BERT 기반 문장 임베딩 모델
- 문장을 고정된 벡터로 변환하여 문장 간 의미 유사도 계산 가능
✅ 구조적 특징
- 기존 BERT는 문장 간 비교 불편 → SBERT는 Siamese 구조로 학습
- 학습 데이터: NLI (자연어 추론), STS-B (문장 유사도)
✅ 활용: 의미 기반 챗봇
- 사용자 입력 문장을 SBERT 임베딩
- 기존 질문 데이터와의 코사인 유사도 계산
- 가장 유사한 질문의 답변을 응답으로 제공
FAISS를 이용한 임베딩 검색기 (Semantic Search)
✅ 시맨틱 검색이란?
- 단순 키워드 기반이 아닌 의미 기반의 유사도로 문서를 검색
- 쿼리와 문서를 SBERT로 임베딩 후, 벡터 공간에서 비교
✅ FAISS란?
- Facebook AI에서 개발한 고속 벡터 검색 라이브러리
- 수십만~수백만 벡터에 대해 내적(Inner Product) 또는 L2 거리 기반 검색 지원
- 대규모 검색 시에도 1초 이내로 응답 가능
문서 임베딩 모델 (BGE-M3) 파인튜닝
✅ 문서 임베딩 모델
- 문서 전체를 하나의 벡터로 변환
- 검색, 분류, 유사 문서 찾기 등에 활용
✅ BGE-M3란?
- BAAI에서 공개한 고성능 한국어 문서 임베딩 모델
- SBERT 기반 + STS/NLI 기반 파인튜닝
✅ 파인튜닝 개념
- 사용자의 검색 요구에 맞게 모델을 추가 학습
- 필요한 데이터 포맷 (jsonl):
{
"query": "검색어",
"pos": ["관련 문서"],
"neg": ["무관한 문서", "다른 문서"]
}
✅ 네거티브 샘플링
- 쿼리에 관련 없는 문서를 자동으로 샘플링
- 검색 모델의 구분 능력을 향상시킴
📝 전체 요약표
| 항목 | 개념 | 활용 목적 |
|---|
| MRC (기계독해) | 질문과 본문을 입력받아 정답 범위 예측 | 질의응답 시스템 |
| SBERT | 문장을 벡터로 표현 | 유사도 계산, 챗봇 |
| FAISS | 고속 벡터 검색 | 시맨틱 검색 |
| 문서 임베딩 파인튜닝 | 사용자 데이터 기반 임베딩 개선 | 검색 성능 향상 |