AI/LLM

문장 사이 관계를 계산하는 방법 Bi-Encoder vs Cross-Encoder

CommitGuy 2025. 2. 8. 00:12

문장 Embedding을 활용하면 문장과 문장 사이의 유사도 혹은 관련성을 벡터 연산을 통해 쉽게 계산할수 있습니다.

 

Transformer Encoder 구조를 활용한 BERT 모델은 입력 문장을 문장 Embedding으로 변환 시킬수 있습니다.

 

이 BERT 모델을 사용해 문장과 문장 사이의 관계를 계산할수 있는데 이 때 2가지 방법이 있는데 첫번째 바이인코더(Bi-Encoder) 두번째로는 교차인코더(Cross-Encoder) 가 있습니다

 

Bi-Encoder

 바이 인코더 방식은 각각의 문장을 독립적으로 BERT 모델에 입력으로 넣고 출력결과인 문장 임베딩 벡터로 벡터 사이 코사인 유사도를 통해 문장 관계를 계산하는 방식입니다.

바이 인코더 간략 구조

 

BERT 다음 Pooling Layer를 넣는 이유는 문장 임베딩 벡터의 차원을 맞춰주기 위함입니다.

 

Cross-Encoder

 교차인코더 방식은 두 문장을 함께 BERT에 넣고 BERT가 직접 문장 사이의 관계를 계산하는 방식입니다.(결과는 보통 0 ~ 1 사이 값으로 출력)

Cross Encoder 간략 구조

교차 인코더 방식이 바이인코더 방식에 비해 계산량이 많지만 문장 사이 관계 예측이 더 정확하다는 장점이 있습니다.

 

Bi-Encoder vs Cross-Encoder

 교차 인코더의 경우 두 텍스트 사이의 관계를 모두 계산하기 때문에 두 텍스트의 유사도를 정확히 계산할수 있다는 장점이 있습니다. 하지만 단점으로는 다른 문장과의 유사도 계산을 하려면 또 BERT 연산을 시켜야 하기 때문에 매번 다른 문장과의 유사도 계산을 할때마다 BERT 연산을 시켜야 해서 시간이 오래 걸린다는 단점이 존재합니다

반면 바이 인코더의 경우 각 문장의 독립적인 임베딩을 결과로 반환하기 때문에 임베딩 벡터들을 저장해 두었다가 관계 계산을 해야하는 경우 저장된 임베딩 벡터를 가져와 코사인 유사도 계산만 하기 때문에 추가적인 BERT 연산이 필요하지 않습니다.

(코사인 유사도 계산이 BERT 연산보다 훨씬 더 빠릅니다.)

하지만 바이 인코더 방식은 교차 인코더 방식보다 계산 정확도가 높지 않다는 단점이 존재합니다.

'AI > LLM' 카테고리의 다른 글

[Prompt] 역할 지정 Prompt 작성방법  (10) 2025.01.02
Attention  (2) 2024.12.01
RAG Pipeline과 LlamaIndex, LangChain 간략소개  (2) 2024.11.25