- Turing Post Korea
- Posts
- Topic #41: BERT를 해부하다: 혁신의 원류에서 차세대 AI 백본의 길로 (ft. ConstBERT)
Topic #41: BERT를 해부하다: 혁신의 원류에서 차세대 AI 백본의 길로 (ft. ConstBERT)
문맥을 깊게 이해하게 해 준 BERT, 그리고 그 위에 구축된 최신의 멀티벡터 검색 모델 ConstBERT를 살펴봅니다.

글을 시작하며
AI의 오랜 역사 속에서, 머신러닝이라는 기술의 ‘판도’를 바꾼, 진정한 의미의 ‘파운데이션 모델’을 다시금 살펴보는 일은 언제나 흥미진진합니다. 어떤 기술이 언제 왜 등장했고, 그게 오늘날의 AI에 어떤 영향을 미쳤는지 추적해 볼 수 있으니까요.
그 중 하나가, 바로 오늘 이야기해 볼 BERT입니다.
BERT는 2018년 구글의 AI 연구진이 개발한 Bidirectional Encoder Representations from Transformers의 약자로, 2019년에는 구글 검색에도 적용된 기술이었습니다.
이 신경망 아키텍처는 NLP(자연어처리) 분야에 획기적인 전환점을 가져왔는데요. BERT는 딥 트랜스포머 모델을 진짜 양방향 방식으로 사전 학습(Pre-training)한 최초의 모델이었습니다. 핵심만 짚어보자면, BERT는 ‘좌우의 문맥’을 동시에 고려하면서 모든 층에서 텍스트에 대한 깊은 표현 (Deep Representation)을 학습하는 사전학습된 언어 모델 (Language Model)입니다. 그래요, 양방향(bidirectional)이라는 뜻이죠. 이런 학습 방식 덕분에, 이전에 있던 단방향 언어 모델들로는 불가능했던 수준의 풍부한 단어 의미라든가 문맥의 이해를 할 수 있게 됐습니다.
또, BERT는 ‘사전학습 후에 미세조정(Pre-train then Fine-tune)’이라는 방식을 트랜스포머에 처음으로, 그리고 대규모로 도입한 모델이기도 합니다. 개념만 참신했던 게 아니라, BERT는 실제 성능 면에서도 NLP 분야의 새로운 기준을 확립했습니다.
그렇지만, 2020년 경부터 학계와 업계의 눈은 거대한 자기회귀(Autoregressive) 모델로 옮겨가기 시작했습니다. GPT-3, PaLM, Llama, Gemini 같은 모델들은 단순히 텍스트를 분류하는 것을 넘어서 직접 생성할 수 있었고, 이런 모델에 대한 엄청난 관심이 집중되었죠. 뉴스 헤드라인과 컨퍼런스에서는 이제 BERT가 구식처럼 보였죠 — 그 와중에도 RoBERTa, DeBERTa 등 수많은 파생 모델들이 여전히 분류, 랭킹, 검색 등의 작업에서 묵묵히 핵심적인 역할을 하고 있었지만 말이예요.
하지만! 최근에 BERT는 ‘실용성’이라는 키워드와 함께 조용히 부활하고 있습니다.
2024~2025년의 연구들 (ModernBERT, NeoBERT 등을 들어보셨을지도 모르겠네요)은 BERT가 진짜로 빛을 발하는 영역을 다시금 조명하고 있는데요 - 저렴하고, 빠르고, ‘충분히 괜찮은’ 모델이 필요한 상황에서 말이죠. 항상 꼭 700억 개 파라미터 짜리 모델이 필요한 건 아니잖아요?
BERT가 보여준 능력(Capability)은, ‘문맥에 대한 이해’를 더 깊게 탐구하고 다루는 새로운 모델들의 탄생을 촉진해 왔습니다. 혹시 최근에 BERT 이야기를 들어보셨다면, 아니 그렇지 않더라도, 지금쯤 한 번 새롭게 지식을 업데이트할 겸, BERT가 왜 특별한지, 어떤 능력을 가지고 있는지를 짚어볼 만한 때가 되었다고 생각합니다.
이번 에피소드에서는, BERT의 개념을 바탕으로 만들어진 다양한 모델들과 함께, 최신의 오픈소스 릴리즈 중 하나인 Pinecone의 ConstBERT를 예시로 해서 BERT가 검색(Retrieval) 작업에 어떻게 구현되는지도 살펴보겠습니다 - ConstBERT를 개발한 연구자 중 한 명에게도 직접 몇 가지 질문을 던져봤으니 관심을 가지고 봐 주시구요.
그럼 한 번 같이 들어가 보죠.
오늘 에피소드에서는 아래와 같은 내용을 다룹니다:
BERT가 담고 있는 핵심 아이디어: GPT의 한계를 돌파한다
우선, 기본적인 개념부터 짚어보죠.
다들 잘 아시겠습니다만, GPT(Generative Pre-trained Transformer)는 트랜스포머 아키텍처를 기반으로 한 언어 모델로, 데이터의 연속된 시퀀스를 처리하는 데 특히 강점을 갖고 있습니다. 이 모델의 주요 목적은 ‘텍스트 생성’이죠. 예를 들어서, 에세이 작성, 요약 및 분류, 코드 생성, 대화 이어쓰기 등의 다양한 작업을 수행할 수 있습니다. GPT는 이전의 단어들을 기반으로 해서 다음 단어를 예측하는 방식으로 작동합니다.
이 말은, 곧 GPT 모델이 텍스트를 한 방향으로만 처리한다는 것을 의미해요 — 일반적으로 왼쪽에서 오른쪽 방향으로요 (혹은 모델에 따라 반대 방향일 수도 있습니다만). 이 방식은 생성 작업에서는 아주 효과적이지만, 단어의 전체 문맥을 이해하는 데에는 한계가 있습니다. 왜냐하면 과거의 단어만 고려하고, 미래의 단어는 고려하지 않기 때문입니다. 때로는 문장의 앞뒤를 모두 살펴봐야 할 필요도 있지 않을까요?
예를 들어서, ‘Q&A’ 같은 작업은 단어와 문장 사이의 더 깊은 관계를 이해해야 잘 수행할 수 있어요. 그래서, 2018년 (고작 7년 전인데, 한 100년 전쯤인 것 같네요 ^.^;) 구글 AI의 Language 팀이 양방향 모델을 개발했습니다. 그게 바로 BERT(Bidirectional Encoder Representations from Transformers)예요.
이 모델은 단어의 왼쪽과 오른쪽 문맥을 동시에 고려하면서 입력을 처리하고, 그래서 문장의 의미를 훨씬 더 깊이 있게 이해할 수 있게 됩니다. 또 하나 주목할 점은, BERT는 레이블링된 데이터가 없이 대규모의 텍스트로 사전 학습을 하기 때문에 아주 유연하다는 것이고요. 그리고 마지막으로 중요한 특징은, BERT의 사전 학습된 언어 표현을 다양한 NLP 과제에 쉽게 적용할 수 있다는 겁니다. 즉, 문맥 정보를 학습한 백본은 그대로 두고, 작업별로 출력층(Output Head)을 파인튜닝하는 것만으로 다양한 작업에 맞게 활용할 수 있습니다.

Image Credit: BERT 오리지널 논문
Q&A나 문장 분류 같은 각각의 작업(task)은 해당 작업에 맞게 파인튜닝한 자체 버전을 가지고 있지만, 모든 버전은 동일한 사전 학습(Pre-trained) 모델로부터 파라미터를 가져와서 시작한다는 공통점이 있습니다.
그럼, 이제 이런 아이디어가 기술적으로 어떻게 구현되는지, 그리고 BERT가 SOTA 성능을 달성하게끔 해 주는 요인이 무엇인지 한 번 알아보죠.
BERT의 작동 방식
BERT의 가장 핵심적인 특징은, 모든 작업에 대해서 통일된 아키텍처를 사용한다는 점입니다. 사전학습(Pre-training) 단계든, 파인튜닝 단계든 구조는 거의 동일하게 유지됩니다. 다시 말해서, BERT는 일반적인 언어 과제에 대해서 ‘딥 트랜스포머 네트워크’를 사전학습하고, 이후에 다양한 NLP 작업에 맞게 출력층만 추가해서 미세조정하는 방식을 개념적으로 도입한 모델이예요.
먼저 사전학습 단계를 살펴보죠.
앞서 말씀드렸다시피, BERT는 사전학습을 할 때 레이블링된 데이터가 필요없습니다. 대신에, 두 가지 비지도 학습 과제(Unsupervised Tasks)를 통해서 학습이 이루어집니다:
🔹 Masked Language Model (MLM)
BERT는 입력 문장에서 무작위로 전체 단어의 15%를 마스킹(Masking)한 다음에, 주변의 문맥을 기반으로 가려진 단어들을 예측하도록 학습합니다. 단순히 ‘빈칸 채우기’처럼 특정 단어를 맞히는 것은 아니고, 전체 어휘 목록 중에서 올바른 단어를 고르는 방식입니다.
흥미로운 건, BERT가 항상 마스킹된 단어를 [MASK]
토큰으로 바꾸지는 않는다는 거예요. 왜냐하면 파인튜닝 단계 - 그러니까 실제 작업을 상정한 단계 - 에서는 [MASK]
토큰이 등장하지 않으니까요. 그래서:
80%의 경우에는 해당 단어를
[MASK]
로 바꾸고,10%의 경우에는 다른 무작위 단어로 바꾸고,
나머지 10%는 그대로 유지합니다.
이 과정을 통해서 BERT는 단어가 꼭 특별한 토큰으로 가려지지 않아도 문맥 속에서 의미를 추론하는 능력을 학습하게 되는 거죠.
🔹 Next Sentence Prediction (NSP)
이 과제는, 두 문장 사이의 관계를 이해하도록 도와주는 역할을 합니다. BERT에게 두 개의 문장을 주었을 때, 절반의 경우에는 두 번째 문장 (Sentence B)이 실제로 첫 번째 문장 (Sentence A)의 다음 문장이지만, 나머지 절반의 경우에는 텍스트 전체에서 무작위로 고른 문장을 두 번째 문장으로 줘요.
이렇게 BERT는 문장 간의 논리적 연결 관계를 학습하게 되고, 결과적으로 Q&A, 자연어 추론(NLI) 등의 작업에서 중요한 역할을 합니다.

Image Credit: BERT 오리지널 논문
자, 그럼 다음 단계는 파인튜닝이겠죠? 이 단계에서는 BERT가 사전학습을 통해서 획득한 지식을 실제 작업에 맞게 적용할 수 있게끔 합니다.
여러분, BERT의 트랜스포머 아키텍처의 중심에는 셀프 어텐션 (Self-Attention) 메커니즘이 있다는 것, 다들 아시죠? 바로 이 메커니즘 덕분에 BERT가 양방향 처리를 할 수 있고, 텍스트 안의 토큰들을 양쪽 방향에서 동시에 고려할 수 있습니다. BERT는 두 개의 문장을 따로 처리한 뒤 비교하지 않고, 한 번에 함께 넣어서 각 단어들이 서로를 참조할 수 있도록 만듭니다. 그리고 셀프 어텐션을 통해서 두 문장의 단어들이 서로 영향을 주고 받으면서 문맥을 이해할 수 있게 설계된 것이죠. 따로 인코딩하고 비교하는 다른 모델들과는 달리, BERT는 이 모든 과정을 한 번에 처리합니다.
예를 들어서, “The cat sat on the mat”라는 문장에서, BERT는 “sat”라는 단어가 “cat”이나 “mat”과 어떤 관련이 있는지, 즉 앞뒤 문맥 모두를 고려합니다. 셀프 어텐션 덕분에 BERT는 토큰을 하나씩 순차적으로 처리하는 게 아니라 전체 토큰을 동시에 처리할 수 있고, 그래서 문장 내 단어들 간의 관계를 전체적으로 이해할 수 있게 됩니다.
이 셀프 어텐션은 문장 수준의 이해에도 효과적입니다. 문장들의 쌍을 다루는 작업에서, BERT는 두 문장을 동시에 처리하면서 이들 사이의 관계를 파악할 수 있습니다. 이러한 ‘문장 쌍 기반의 작업(Sentence-pair Tasks)’에는 아래와 같은 것들이 포함되구요:
의역(Paraphrasing): 두 문장이 같은 의미인지 판단하기
질문 응답(Question Answering): 질문과 본문이 주어졌을 때, 본문에서 정답 찾기
자연어 추론(Natural Language Inference, NLI): 한 문장이 다른 문장을 ‘함의(Entail)’하는지, ‘모순(Contradict)’되는지, 또는 ‘중립(Neutral)’인지 판단하기
예를 들어볼께요: BERT가 문장의 쌍을 하나의 입력 시퀀스로 연결해 처리한다고 했죠? 다음은 질문과 답변 쌍을 어떻게 입력으로 구성하는지를 보여주는 예시입니다:
문장 A: "What is the capital of France?"
문장 B: "The capital of France is Paris."
BERT는 단어 임베딩 외에도, 각 문장의 시작과 구분을 명확히 하기 위해 ‘특수 토큰(Special Tokens)’을 사용합니다.
입력의 첫 번째 토큰은 항상
[CLS]
로, 분류 작업에서 활용됩니다.그리고 각 문장은
[SEP]
토큰으로 구분됩니다.
그래서 BERT는 질문과 본문을 다음과 같이 하나의 입력으로 받아들입니다:
Input = [CLS] What is the capital of France? [SEP] The capital of France is Paris. [SEP]
이런 구조를 활용해서, BERT가 문장 간의 의미 관계를 효과적으로 모델링할 수 있어서, 다양한 문장 기반 과제에 강력한 성능을 발휘합니다.

BERT의 입력값 표현 (Input Representation). Image Credit: BERT 오리지널 논문
전반적으로, 파인튜닝은 사전학습된 BERT의 파라미터를 특정한 작업 - 다운스트림(Downstream) 작업 - 에 맞게 조정하는 과정으로 해석하면 됩니다. 이 과정에서 셀프 어텐션 레이어를 포함한 모든 계층이 업데이트되면서, 주어진 다운스트림 작업에서 최적의 성능을 내게끔 조정되는 겁니다.
BERT가 큰 주목을 받았던 또 다른 이유는 바로 그 획기적인 성능 때문이었어요. 2018년에 BERT가 공개되었을 때, NLP 분야의 최고 성능 기록표를 완전히 다시 써야 할 정도였거든요:
GLUE 벤치마크: BERT‑Large가 80.5점을 기록하면서, 기존 최고 성능 대비 +7점, GPT와 비교해서는 +7.7점 향상
SQuAD v1.1: +1.5 F1 향상
SQuAD v2.0: +5.1 F1 향상
SWAG: 기존 ESIM+ELMo 대비 +27점, GPT와 비교해서는 +8.3점 상승
이렇게 해서, 1억 1천만~3억 4천만 개의 파라미터를 가진 ‘인코더 모델’ - BERT와 그 파생 모델들은 NLP 모델의 기본 백본(Backbone)으로 자리 잡았고, 지금 이 순간에도 확장되고 있는 “~BERT” 패밀리를 탄생시키게 되었습니다. 이 모델군은 분류(Classification), 랭킹(Ranking), 검색(Retrieval) 파이프라인의 핵심 엔진 역할을 계속해 오고 있습니다.
BERT에 기반한 멋진 모델들
자, 그럼 이제 BERT의 대표적인 파생 모델들 몇 가지를 소개해 보겠습니다 (참고로, 모델들에 대한 자세한 정보를 담은 링크를 글 하단의 ‘보너스: 참고자료’ 섹션에 정리해 놓았습니다):
🔹 RoBERTa (Robustly Optimized BERT Pretraining Approach)
메타 AI (구 페이스북 AI)에서 개발한 BERT의 최적화 버전입니다. RoBERTa는 사전학습 방식을 재구성해서 성능을 높였는데요:
Next Sentence Prediction(NSP) 목표를 제거하고,
고정된 마스킹(Static Masking) 대신 다이나믹 마스킹(Dynamic Masking)을 사용하고,
더 긴 학습 시간, 더 큰 배치 크기, 더 긴 시퀀스, 더 큰 데이터셋을 활용합니다.
토크나이저로는 byte-level BPE(Byte Pair Encoding)를 사용합니다.
🔹 ALBERT (A Lite BERT)
구글 리서치에서 제안한 Parameter-efficient BERT로, 확장성, 그리고 메모리 사용량 최적화를 목표로 합니다:
임베딩 파라미터 분해 (Factorized Embedding Parameterization), 그리고
레이어 간 파라미터 공유 (Cross-Layer Parameter Sharing)라는 두 가지의 중요한 구조적인 혁신적 기법을 적용했습니다.
또, BERT의 NSP를 제거하고, Sentence Order Prediction (SOP)이라는 새로운 자기지도 손실(Self-Supervised Loss)을 도입했습니다.
🔹 DistilBERT (by Hugging Face)
사전학습 과정에서 지식 증류(KD; Knowledge Distillation)기법을 적용하고, 작지만 우수한 성능을 유지하는 모델을 만든 버전입니다:
모델 크기가 작아졌고, 비용은 낮아졌고, 속도는 71% 더 빨라졌습니다.
엣지 디바이스에서도 사용할 수 있도록 모델 용량은 207MB로 줄였습니다.
그럼에도 불구하고, BERT-Base 성능의 97%를 유지합니다.
🔹 TinyBERT
BERT보다 7.5배 작고, 9.4배 빠른 경량화 모델로, 마찬가지로 지식 증류를 통해서 만들어졌습니다:
GLUE 벤치마크 기준으로 BERT-Base 성능의 약 96.8%를 달성합니다.
일반(General) + 과제 특화(Task-specific) 증류라는 2단계의 학습 프레임웍을 도입했고,
트랜스포머 구조에 맞춘 계층별 내부 증류(Layer-wise Internal Distillation) 기법을 결합했습니다.
🔹 SpanBERT
BERT의 구간 단위(Span-Level) 예측 작업 - 즉, 연속된 단어 묶음을 대상으로 하는 예측 작업 - 성능을 향상시키기 위해 개발된 모델입니다. 핵심 아이디어는 세 가지입니다:
토큰 마스킹 대신 구간(Span) 마스킹 적용
Span Boundary Objective (SBO)라는 훈련 목적을 추가
NSP 제거 후 단일 세그먼트 사전학습(Single-segment Pretraining) 수행
위에 열거한 파생모델들과 기법들 외에도 다양하게 제안된 접근 방식들이 있습니다:
ELECTRA, DeBERTa, MiniLM 등 성능과 효율을 모두 고려한 변형 모델들도 있고,
SciBERT, BioBERT, ClinicalBERT, BlueBERT, LegalBERT, FinBERT, PubMedBERT 등 도메인 특화 모델들도 많이 있습니다.
또 다국어 및 멀티모달 확장 모델로는 mBERT, XLM-RoBERTa, CamemBERT 등이 있습니다.
이제, BERT는 단일 모델이 아닌 하나의 생태계(Ecosystem)라고 해도 과언이 아닙니다. 각각의 BERT 파생 모델이 특정한 목적, 도메인, 환경에 맞춰서 최적화되어 있고, 다양한 실제 NLP 애플리케이션들에서 활발하게 사용되고 있습니다.
최근에 등장한, 가장 발전된 BERT 계열 모델들을 살펴보자면 아래와 같습니다:
🔹 ModernBERT (2024)
ModernBERT는 최신의 트렌드를 반영한 트랜스포머 아키텍처를 채택한 모델입니다.
긴 문맥을 처리하기 위해서 RoPE(Rotary Positional Embeddings)를, 기존의 GeLU 대신 GeGLU 활성화 함수, GeGLU 기반 MLP 블록을 사용하고,
임베딩 이후 레이어 정규화(Layer Norm)를 추가했습니다.
총 2조 개의 토큰으로 학습했고,
MLM 사전학습에서는 마스킹 비율을 30%로 늘리고, NSP는 사용하지 않습니다.
ModernBERT는 몇 가지 기술적으로 특수한 혁신 기법도 함께 도입했습니다:
하이브리드 어텐션(Hybrid Attention) 구조로, 3개 층마다 글로벌 어텐션을 사용하고,
그 사이에는 슬라이딩 윈도우 기반 로컬 어텐션(128 토큰 단위)을 적용합니다.
연산의 낭비를 줄이기 위해서 패딩 토큰은 계산 전에 제거하고,
탐욕적(Greedy) 알고리즘으로 시퀀스를 묶어서 입력 길이를 최대한 활용합니다.
일반적인 GPU에서도 효율적으로 동작하며, DeBERTaV3보다 2~4배 빠르고,
최대 8192 토큰 길이의 문맥도 처리할 수 있습니다.
🔹 NeoBERT (2025)
NeoBERT는 BERT를 재해석한 최신 모델이예요. 학습의 규모, 그리고 구조적인 설계 모두의 관점에서 한 걸음 더 나아간 접근 방식을 채택하고 있습니다.
2.1조 토큰으로 학습했고,
MLM 마스킹 비율은 20%, NSP는 역시 사용하지 않습니다.
ModernBERT와 마찬가지로 RoPE를 사용하지만,
활성화 함수로는 GeGLU 대신 SwiGLU,
정규화 방식은 RMSNorm을 사용해서 긴 시퀀스를 더 안정적으로 학습하고 표현할 수 있게 했습니다.
또 FlashAttention을 활용해서 긴 시퀀스에서의 고속 추론(Inference)을 구현합니다.
NeoBERT4096 모델은 4096 토큰의 시퀀스를 초당 17,200 토큰 처리하며,
ModernBERTbase보다 약 47% 더 높은 처리량(Throughput)을 보여주고,
긴 입력에 대해서는 RoBERTalarge보다 2배 빠릅니다.
이렇게, ModernBERT와 NeoBERT는 기존 BERT의 구조적 한계를 극복하면서, 장문의 이해 능력, 빠른 연산 능력, 효율적인 자원 활용 능력을 모두 강화한 차세대 BERT 계열 모델입니다. 특히 일반적인 하드웨어(GPU)에서도 상당히 쓸만한 효율성과 성능을 보여주고 있어서, 실제 NLP 파이프라인에서의 적용 가능성이 높아지고 있습니다.

Image Credit: NeoBERT 오리지널 논문
그런데 혹시 눈치채셨나요?
아주 많은 최신의 BERT 계열 모델들이 NSP(Next Sentence Prediction) 사전학습을 생략하고 있다는 점 말이예요. 이건 바로 NSP가 훈련을 불필요하게 느리게 만들고, 추가적인 분류 헤드(Classification Head)를 필요로 하고, 복잡도만 높이는 경향이 있기 때문이라고 합니다.
사실 MLM(Masked Language Modeling) 사전학습만으로도 문맥 학습에는 충분하다고 해요:
문장의 경계를 인식하고,
문맥의 흐름(Context Flow)과 문장 간 일관성(Coherence)을 파악하는 데에도 MLM만으로도 BERT가 효과적으로 학습할 수 있습니다.
이런 이유로, RoBERTa가 등장한 이후부터는 대부분의 BERT 변형 모델에서 NSP가 제거되고 있는 거라고 합니다.
또 하나 흥미로운 점은, BERT가 사용되는 아주 중요한 적용 분야 중 하나가 ‘검색(Retrieval)’이라는 건데요.
바로 지난 5월 말, 벡터DB 스타트업인 Pinecone에서 오픈소스로 발표한 ConstBERT가 그런 사례 중의 하나입니다. 이 모델은 멀티 벡터 기반 검색 (Multi-vector Retrieval) 방식을 활용해서, 검색의 정확도와 효율성 모두를 극대화하는 방식으로 주목받고 있습니다.
이렇게, 단순한 언어 모델을 넘어서, 정보 검색, 문서 랭킹, 컨텍스트 유지 같은 고차원적인 응용에서 BERT가 계속 진화하고 있음을 확인할 수 있습니다. ConstBERT에 대한 조금 더 자세한 검토는 아래에 이어집니다.
BERT와 검색: ConstBERT
ConstBERT에 대해서 좀 알아보려고, ConstBERT의 연구진 중 하나인 Antonio Mallia에게 직접 물어봤습니다.
Q. 왜 BERT를 검색을 위한 모델의 기반으로 선택했나요? 검색이라는 작업에서 BERT가 특히 효과적이라거나 가치가 있는 이유가 뭔가요?
BERT를 선택한 중요한 이유는, 이번 ConstBERT 프로젝트가 ‘학술적인 탐구 작업’의 성격을 가지고 있기 때문이예요. BERT는 여전히 ‘문맥 기반의 언어 모델링 (Contextualized Language Modeling)’에서 연구 커뮤니티의 중요한 벤치마크가 되는 모델입니다. 잘 알려져 있고, 널리 채택된 아키텍처라서, 재현 가능성 (Reproducibility)과 결과를 비교하는데 있어서의 용이성을 보장할 수 있어요.
그리고, 우리의 베이스라인 모델인 ColBERT가 BERT 위에 구축돼 있으니까, 공정하게, 통제된 상태에서 비교를 한다는 관점에서도 자연스러운 선택이었다고 생각합니다.
물론, 더 최신의 파운데이션 모델을 사용한다면, 산업적인 수준에서 성능 개선은 할 수 있겠지만, 이번 연구에서 핵심적으로 확인해 보고 싶었던 것이 아무래도 ‘모델의 구조 자체, 특히 토큰 수준의 Representation을 어떻게 더 잘 처리할 거냐’였거든요. 어떤 백본을 사용하는지는 사실 우리가 제안한 구조적인 혁신과는 독립적인 부분이고, 다른 인코더로 전환하는 건 충분히 간단하게 할 수 있습니다.
이 인터뷰를 통해서, BERT 기반의 검색 모델이 왜 여전히 연구의 표준 플랫폼으로 선택되는지 이해할 수 있었어요. 그리고 ConstBERT는 그저 또 하나의 파생 모델이 아니라, 검색의 구조 자체에 대한 근본적인 접근 방식을 진화시키려는 시도라는 점에서 주목할 만합니다.
ConstBERT의 베이스라인 모델인 ColBERT에 대해서도 간단히 한 번 짚어보죠.
ColBERT는 2020년 스탠포드 연구진이 제안한 모델인데, BERT를 기반으로 한 문맥 임베딩의 표현력과 대규모 검색 시스템에서 요구되는 속도와 효율성을 결합한 랭킹 모델입니다.
기존의 BERT 리랭커처럼 쿼리-문서 쌍을 함께 처리하지 않고, 아래와 같은 방식으로 동작하는 것이 특징입니다:
ColBERT는 쿼리와 문서를 각각 따로 인코딩해서, 문맥화된 토큰 수준 임베딩(Contextualized Token-level Embeddings)을 생성합니다.
그 후에 MaxSim이라고 부르는 지연 상호작용(Late Interaction) 메커니즘 - 쿼리와 문서가 서로 ‘상호작용’하는 계산을, 문서 임베딩을 미리 만들어두고, 쿼리가 들어왔을 때 나중에 계산하는 방식 - 을 사용해서, 각각의 쿼리 토큰과 가장 잘 매칭되는 문서 토큰 간의 최대 유사도(Maximum Similarity)를 계산합니다.
이 구조 덕분에 문서는 오프라인에서 미리 인코딩해 둘 수 있고, 고속의 정밀 벡터 유사도 검색이 가능해집니다.
ColBERT는멀티 벡터 방식(multi-vector method)을 채택하고 있는데요, 다시 말해서, 문서를 여러 개의 작은 벡터 - 대부분의 경우에는 토큰 또는 문구 단위 - 로 분할해서, 쿼리의 구성 요소들과 문서의 부분들을 세밀하게 비교할 수 있게끔 한 겁니다.
물론, 이 방식에도 단점이 있어요 - 모든 쿼리 벡터를 전체 문서의 벡터 풀과 비교해야 해서, 연산 비용이 아주 크고 처리 시간이 오래 걸릴 수 있습니다.
이 문제를 해결하려고, Pinecone이 글래스고 대학교와 피사 대학교 연구진과 함께 새로운 ‘비가변 멀티 벡터 (Ungraded Multi-vector)’ 접근 방식인 ConstBERT를 제안한 거라고 볼 수 있겠습니다. ConstBERT는 문서의 길이에 상관없이 문서 당 벡터 수를 일정하게 유지한다는 특징이 있습니다.
이렇게 벡터 수를 고정하면 저장 공간과 검색 패턴이 예측 가능하고 안정적이라는 중요한 장점이 생긴다고 해요. 결국, ConstBERT는 ColBERT의 정밀한 표현 능력은 유지하면서도, 현실적인 스케일에서의 효율성과 확장성을 고려한 진화형 구조라고 할 수 있습니다. 검색 시스템의 핵심인 속도, 정확성, 자원 효율성을 동시에 달성하려는 시도인 거죠.

ColBERT vs. ConstBERT
그렇다면, ConstBERT는 어떻게 벡터 숫자는 고정시켜 놓은 상태로, 어떤 토큰 수준 정보를 유지할지 ‘결정’하는 걸까요?
ConstBERT는 가변 길이의 토큰 시퀀스를 고정된 수의 문서 수준 벡터로 압축하기 위해서, 학습 기반 풀링 메커니즘 (Learned Pooling Mechanism)을 한다고 합니다. 토큰마다 임베딩을 유지하는 대신, 모델이 학습 중에 여러 개의 풀링 연산자(Pooling Operators)를 스스로 학습해서, 토큰 임베딩들을 선택적으로 집계(Aggregate)한 뒤에, 소수의 고정된 출력 벡터 세트로 압축하는 구조입니다.
각각의 풀링된 벡터는 문서의 서로 다른 의미적 측면을 포착하는 거니까, 풍부하면서도 컴팩트한 표현이 가능해집니다. 이런 구조로 설계를 해서, 검색의 효율성과 표현력 사이의 균형을 맞추면서, 공격적으로 차원을 축소하더라도 핵심이 되는 문맥 정보를 보존할 수 있도록 해줍니다.
ConstBERT의 전체 워크플로우를 좀 더 쉽게 설명하면 아래와 같습니다:
먼저, 입력으로 들어온 M개의 토큰 임베딩은 단순한 선형 계층(Linear Layer) 하나를 더 거칩니다.
이 계층의 출력은 문서 길이와 무관하게 고정된 수(C)의 벡터입니다. 즉, C는 항상 일정하고, M보다 작습니다.
다음 단계에서는 이 선형 계층도 전체 모델과 함께 학습되어서, 어떤 토큰 조합이 각 요약 벡터(Summary Vector)를 가장 잘 대표하는지 스스로 학습하게 됩니다.
이후에 쿼리가 입력되면, 시스템이 각각의 쿼리 단어와 문서의 C개 요약 벡터들 간의 유사도를 비교합니다.
이 방식은 기존의 방법인 ‘토큰-수준에서의 다대다 비교’를 하지 않으면서도, 의미적인 정밀도와 계산 효율성을 동시에 확보한 것이 핵심입니다. ConstBERT는 "덜어내면서도 잃지 않는" 검색 구조의 진화된 형태라고 할 수 있죠.
이런 기능 덕분에, ConstBERT는 Pinecone이 제안한 ‘3단계 검색 파이프라인’의 ‘중간 단계’에 완벽하게 적합합니다. 즉, ‘빠르지만 거친 방식’과 ‘느리지만 완벽한 방식’ 사이에 멀티 벡터 검색을 배치하는 구조입니다. 구성은 다음과 같습니다:

검색 파이프라인의 예시. 1단계에서는 밀집(Dense) 모델과 희소(Sparse) 모델을 함께 사용해서 후보를 뽑고,
2단계에서 멀티 벡터 모델이 이를 정제한 뒤, 3단계에서 교차 인코더가 최종 랭킹을 수행.
Image Credit: Pinecone 블로그
✅ 1단계: 빠른 초기 검색 (First-pass Retrieval)
저비용의 단일 벡터 밀집 검색기(Dense Retriever) 또는 희소 모델(Sparse Model)을 활용해서, 예를 들어서 ‘상위 1,000개 후보 문서’를 빠르게 추출합니다.
✅ 2단계: 멀티 벡터 기반으로 정밀하게 재정렬 (Multi-vector Refinement)
1단계에서 추출한 1,000개 후보 문서를 멀티 벡터 모델로 다시 임베딩해서 재평가(Rescore)하고, 상위 100개 문서로 좁혀갑니다.
연구진은 이 과정에서 ConstBERT의 고정 벡터를 각 문서의 메타데이터로 부착해서, 빠르게 지연 상호작용(Late Interaction)을 수행하는 방식을 제안합니다.
✅ 3단계: 교차 인코더 기반 리랭킹 (Cross-encoder Reranking)
최고 정밀도(Rrecision)가 필요한 경우에, 상위 100개 문서에만 Cross-encoder를 적용해서 최종적인 랭킹을 수행합니다.
여기서 중요한 점은, ColBERT나 ConstBERT 같은 멀티 벡터 모델은 처음부터 ‘전부 다 긁어오는’ 용도가 아니라, 이런 단계적 처리(Cascade)에서 ‘중간 정제 역할’을 할 때 가장 효율적이라는 것입니다.
ConstBERT는 기본 성능은 ColBERT보다 약간 낮을 수 있지만, 리랭커(reranker)로 사용하면 정확도에서 ColBERT에 필적하거나 능가하는 모습을 보여주면서도, 저장 공간과 연산 비용은 훨씬 적게 소모합니다.
이런 사례는 BERT가 단순히 문맥 기반 질문에 답변하는 모델을 넘어서, 복합적인 검색 시스템의 핵심 구성 요소로도 활용될 수 있다는 점을 잘 보여줍니다.
지금까지 다양한 BERT 변형 모델들을 살펴보고, 그 성능 향상 요소들도 확인해 봤는데요. 물론 BERT가 NLP에 혁신을 가져온 것은 분명하지만, 여전히 극복해야 할 몇 가지 한계점들도 있습니다.
한계점
🔹 높은 연산 비용
특히 BERT의 대형 모델은 학습과 파인튜닝에 막대한 연산 자원과 고성능 하드웨어(TPU, GPU 등), 그리고 많은 시간이 필요합니다. 그래서, 많은 연구자들이 BERT를 축소(Distillation)해서 경량화 모델을 사용하는 방식을 선택하고 있습니다.
🔹 대규모의 학습 데이터가 필요
BERT는 비지도 사전학습(Unsupervised Pre-training)을 위해서 거대한 텍스트 데이터셋에 아주 크게 의존합니다. 때문에, 학습에 사용된 데이터의 범위와 품질에 따라 성능이 제한될 수 있습니다.
🔹 파인튜닝 데이터에 대한 의존성
작업(Task)에 특화된 파인튜닝 단계에서 데이터가 부족하거나 품질이 낮은 경우, BERT는 사전학습을 아무리 잘 했더라도 기대만큼의 성능을 내지 못할 수 있습니다.
🔹 장기 기억이 없음 (No Long-term Memory)
BERT는 입력 세션이 끝나면 이전 입력을 ‘기억’하지 않습니다. 따라서 여러 차례의 대화처럼 긴 시퀀스를 필요로 하는 추론 작업이나, 장기적인 의존성을 요구하는 텍스트 처리에는 적합하지 않을 수 있습니다.
🔹 고정 입력 길이의 한계
기본적으로 BERT는 최대 입력 길이 제한이 있고, 그 수치는 일반적으로 512 토큰입니다. 따라서, 긴 문서를 처리해야 하는 작업에서는 제약이 발생할 수 있습니다. 물론 이러한 제한은 ModernBERT, NeoBERT 등 고급 BERT 변형 모델들에서는 점차 극복되고 있는 중입니다.
BERT는 여전히 강력한 언어 모델입니다. 하지만, 이러한 한계점들을 잘 알고, 실제 응용을 할 때 모델의 선택이나 아키텍처 설계에 적절히 고려를 해야 되겠죠. 거꾸로, 그 때문에 최신의 BERT 계열 모델들이 속도, 메모리, 확장성의 균형을 맞추기 위한 다양한 개선을 거듭하고 있는 것이기도 할 겁니다.
맺으며
새로운 모델 아키텍처에 대한 고민과 실험, 바로 ‘혁신’을 이끌어내기 위한 핵심적인 작업이라고 생각합니다. 이런 시도가 있어야만, 이후에 새롭게 등장할 AI 모델들의 토대가 만들어지겠죠.
오늘 말씀드린 BERT의 이야기가 바로 그 하나의 예라고 생각합니다.
한 번 등장한 이후, BERT는 더 깊은 문맥을 이해하겠다는 목표로 설계된 수많은 후속 모델들의 출발점이 되었고, 초기 BERT 버전을 기반으로 한 연쇄적인 진화가 이어졌습니다.
그 중에서도 BERT와 검색(Retrieval)의 결합은 특히 영감을 주는 사례입니다. 이 조합은 BERT가 더 복잡한 시스템의 백본으로 사용될 수 있다는 가능성을 보여줍니다.
어쩌면 다음 단계는 BERT를 더 고도화된 모듈형 워크플로우의 일부로 활용하는 것일지도 모릅니다. 보다 더 스마트한 AI의 미래를 위해 필요한 것은, 단순히 알고리즘을 따라 답변만 생성하는 모델이 아니라,
과제, 문맥, 문제 그 자체를 더 깊이 있게 들여다볼 수 있는 모델, 바로 BERT 같은 존재일 테니까요.
BERT는 하나의 모델이라기보다는, AI 모델을 설계하는 사고방식의 패러다임 전환을 이끈 플랫폼으로 볼 수 있습니다. 그리고 그 여정은 지금도 계속되고 있습니다.
보너스: 참고자료
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
Open Sourcing BERT: State-of-the-Art Pre-training for Natural Language Processing
ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT
Cascading retrieval with multi-vector representations: balancing efficiency and effectiveness
ALBERT: A Lite BERT for Self-supervised Learning of Language Representations
DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter
TinyBERT: Distilling BERT for Natural Language Understanding
SpanBERT: Improving Pre-training by Representing and Predicting Spans
읽어주셔서 감사합니다. 친구와 동료 분들에게도 뉴스레터 추천해 주세요!
Reply