AI VIDEO BRIEFING
임베딩 모델과 하이브리드 검색 정리 — TF-IDF·BERT·BM25·상호 순위 조합
한국어 스터디 발표를 정리했다. 넘버링과 원-핫에서 TF-IDF, Word2Vec, BERT 문장 임베딩까지의 흐름과 바이·교차 인코더의 차이, BM25와 상호 순위 조합으로 검색 품질을 끌어올리는 방법을 다룬다.

핵심 메시지
쉽게 이해하기
발표는 '컴퓨터가 우리가 입력하는 자연어를 인지하려면 결국 전부 수치로 변환해야 한다'는 문제 설정에서 출발한다. 그래서 임베딩의 역사는 곧 '어떻게 하면 의미를 잘 담은 숫자를 만들까'의 역사다. 통계 기반 기법에서 신경망으로, 다시 어텐션과 트랜스포머로, 그리고 임베딩 전용 모델로 이어지는 흐름이 먼저 정리된다.
가장 단순한 방식인 넘버링은 학교를 1, 공부를 2로 두는 식인데, 모델이 '공부는 학교의 두 배인가' 같은 잘못된 관계를 학습할 위험이 있다. 원-핫 인코딩은 각 단어를 독립된 축에 두어 그 문제를 피하지만, 모든 단어가 서로 직교하는 탓에 코사인 유사도가 전부 0이 되어 유사성을 표현할 수 없다. 표기가 조금만 달라져도 같은 뜻임을 잡지 못한다는 한계도 있다.
빈도 기반 기법인 Bag of Words는 어떤 단어가 몇 번 나왔는지로 문서를 구분한다. 경제 기사와 IT 기사를 단어 빈도로 가르는 식인데, 요즘처럼 'AI'가 경제·IT·사회 어디에나 등장하면 변별력이 떨어진다. TF-IDF는 여기에 희소성을 더해, 모든 문서에 나오는 조사 같은 단어는 점수를 0에 가깝게 만들고 특정 문서에만 몰려 나오는 단어에 높은 점수를 준다. 그래도 단어의 의미 자체를 담지는 못한다.
Word2Vec부터는 함께 등장하는 빈도를 학습해 단어를 벡터 공간에 배치한다. 주변 단어로 가운데 단어를 맞히거나 그 반대로 학습하는 두 방식이 있고, 그 결과 남자와 여자 사이의 거리만큼 왕과 여왕이 떨어져 있는 식으로 의미 관계가 거리로 드러난다. 앞뒤 문맥을 동시에 보는 BERT가 나오면서 문장 단위 임베딩의 품질이 다시 한 단계 올라갔다.
문장끼리 비교하는 구조에는 두 갈래가 있다. 교차 인코더는 질문과 문서를 함께 넣어 계산하므로 정확하지만, 질문이 바뀔 때마다 보유한 모든 문서를 다시 계산해야 해 문서가 많아지면 사실상 불가능하다. 바이 인코더는 문서 임베딩을 미리 저장해 두고 질문만 임베딩해 비교하므로 대규모 검색에 쓸 수 있다. 실무에서는 바이 인코더로 후보를 추리고 필요하면 교차 인코더로 정밀하게 재정렬하는 하이브리드도 쓴다. 길이가 제각각인 문장을 고정 크기 벡터로 만들기 위해 풀링이 필요한데, 이미지에서 주로 쓰는 최대 풀링과 달리 언어 모델에서는 평균 풀링이 더 많이 쓰인다는 점도 짚는다.
실습에서 한국어 Q&A 데이터 1,000건을 임베딩해 의미 검색을 돌리자 1순위는 그럴듯했지만 2·3순위는 눈으로 봐도 동떨어진 문장이 올라왔고, 특정 인물을 묻는 고유명사 질문에서는 아예 엉뚱한 답이 1위로 나왔다. 반대로 단어 빈도 기반인 BM25는 그 고유명사 질문을 곧바로 맞혔다. BM25는 TF-IDF에 문장 길이 정규화를 더한 기법으로, 문장이 길면 특정 단어가 나올 확률이 높아지는 편향을 보정하고 지나치게 자주 등장하는 단어의 기울기를 눌러 준다.
그래서 마지막 결론은 둘을 합치는 것이다. 두 모델은 점수 분포가 서로 달라 점수를 그대로 더할 수 없으므로, 각 방식의 순위만 가져와 상수 k(예시에서는 60)를 더한 순위의 역수를 합산하는 상호 순위 조합을 쓴다. 한쪽에서만 1등이고 다른 쪽에서는 순위권 밖인 문서는 최종 점수가 낮아지고, 양쪽에서 고르게 상위인 문서가 올라온다. 이 방식으로 앞서 실패했던 두 질문 모두 정답을 뽑아냈다.
주요 인사이트
- 임베딩 차원 수를 '표현할 수 있는 항목의 개수'로 오해하기 쉽지만, 발표에서는 자릿수 비유로 정리한다. 768은 768가지를 담는다는 뜻이 아니라 그만큼의 축이 조합해 만드는 공간의 크기이고, 다루려는 어휘를 담기에 충분한가가 기준이다.
- 의미 검색과 키워드 검색은 서로의 약점을 정확히 보완한다. 임베딩은 표현이 달라도 뜻이 통하면 잡아내지만 고유명사에 약하고, BM25는 의미를 모르지만 고유명사는 정확히 잡는다.
- RAG의 응답 품질은 리트리버 성능에 크게 좌우된다. 검색 결과가 나쁘면 LLM에게 질문을 다시 쓰게 하는 루프를 붙일 수 있지만, 토큰과 지연이 늘 뿐 임시 방편이라는 지적이 나온다.
- 같은 문장을 그대로 복사해 질문했는데도 벡터 데이터베이스가 그 문서를 못 찾는 일이 실무에서 벌어진다. 검색기가 제대로 된 응답을 주는지 별도로 평가해야 한다는 경험담이다.
- 이미지와 텍스트를 같은 공간에 두고 유사도를 재는 모델은 조건부 이미지 생성으로 이어진다. 텍스트를 벡터로 만들어 조건으로 넣고 디코더에서 이미지를 만드는 구조가 확산 모델 계열의 텍스트-이미지 생성이다.
자주 묻는 질문
교차 인코더와 바이 인코더는 언제 각각 쓰나?
교차 인코더는 질문과 문서를 함께 계산해 정확도가 높아 정밀한 검색에 쓰고, 바이 인코더는 문서 벡터를 미리 저장해 두므로 대규모 검색과 문장 분류에 쓴다. 바이 인코더로 후보를 추린 뒤 교차 인코더로 재정렬하는 조합도 가능하다.
BM25는 TF-IDF와 무엇이 다른가?
TF-IDF가 단어 빈도와 희소성만 보는 데 비해 BM25는 문장 길이까지 고려한다. 문장이 길수록 특정 단어가 나올 확률이 높아지는 편향을 정규화하고, 같은 단어가 지나치게 많이 나올 때 점수가 선형으로 커지지 않도록 눌러 준다.
상호 순위 조합은 어떻게 계산하나?
각 검색 방식에서 문서의 순위를 구한 뒤, 상수 k에 순위를 더한 값의 역수를 모두 합산해 최종 점수를 낸다. 발표 예시에서는 k를 60으로 두었고, 순위권 밖인 방식은 그 항을 0으로 처리한다.
검색 결과가 나쁠 때 개선 방향은?
발표는 문서 단위를 더 잘게 나누고 레이블을 세분화하는 것, 코사인 외의 유사도 방식을 시도하는 것, 순위 재계산 단계를 두는 것, 인덱스 구조를 손보는 것을 꼽는다. 여러 검색 방식을 결합하는 하이브리드도 그중 하나다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗