RAG - 3. 임베딩

문건희·2025년 2월 25일

RAG

목록 보기
2/12

3. 임베딩(Embedding)에서 추가로 고려해야 할 요인들

임베딩(Embedding)은 RAG 시스템에서 검색 및 정보 검색 성능에 큰 영향을 미치는 요소입니다.
임베딩의 품질이 낮으면 검색 결과가 부정확해지고, 반대로 최적화된 임베딩을 사용하면 검색 정확도와 효율성이 크게 향상됩니다.


✅ 추가 요인 및 설명

1) 임베딩 모델 선택 (Embedding Model Selection)

설명:

  • 어떤 임베딩 모델을 선택하느냐에 따라 검색 성능이 달라짐.
  • 도메인에 맞는 모델을 선택하면 더 나은 성능을 얻을 수 있음.
  • 기본적으로 Sentence Transformers, BGE, OpenAI, Cohere, Hugging Face 모델 등이 존재함.

예시:

  • 일반 문서 검색: all-MiniLM-L6-v2 (빠르고 가볍지만 정확도는 중간)
  • 기술 문서 검색: nomic-ai/nomic-embed-text-v1 (높은 정확도)
  • 법률/의료 분야: LegalBERT, BioBERT 같은 특화된 모델 사용

2) 차원 수 (Dimensionality)

설명:

  • 벡터 차원이 너무 낮으면 정보 손실이 발생할 수 있음.
  • 차원이 너무 높으면 검색 속도가 느려지고 벡터 DB의 메모리 사용량 증가.

예시:

  • 고성능 검색: 768 ~ 1024 차원
  • 속도 최적화: 384 ~ 512 차원
  • 경량 모델: 256 차원 이하 (모바일 최적화)

3) 정규화 (Normalization)

설명:

  • 벡터를 L2 정규화하면 검색 정확도가 향상될 수 있음.
  • 벡터의 크기를 일정하게 유지하여 거리 비교를 더 정확하게 수행할 수 있음.

예시:

import numpy as np

def normalize_vector(vec):
    return vec / np.linalg.norm(vec)

original_vector = np.array([3, 4])
normalized_vector = normalize_vector(original_vector)

print(normalized_vector)  # [0.6, 0.8]

4) Tokenization 방식 (토크나이제이션)

설명:

  • 텍스트를 벡터로 변환하기 전에 어떤 방식으로 토큰을 분할하느냐에 따라 성능 차이가 발생.

예시:

  • WordPiece (BERT 기반 모델)
"AI is transforming the world"
→ ['AI', 'is', 'transform', '##ing', 'the', 'world']
  • Byte-Pair Encoding (BPE)
"AI is transforming the world"
→ ['AI', 'is', 'trans', 'form', 'ing', 'the', 'world']

5) 문장 간 유사도 학습 (Contrastive Learning)

설명:

  • 의미가 유사한 문장을 학습하면 검색 성능이 개선됨.

예시:

  • "임베딩이란 무엇인가?"
  • "벡터 표현을 생성하는 방법은?"

위 두 문장은 의미가 유사하므로, 학습을 통해 유사도를 높이면 검색 성능이 개선됨.


6) Context Window (맥락 길이)

설명:

  • 임베딩 모델이 한 번에 처리할 수 있는 최대 토큰 수가 존재함.
  • 이를 넘으면 중요한 정보가 손실될 수 있음.

예시:

  • OpenAI text-embedding-ada-002 → 최대 8,192 토큰
  • all-MiniLM-L6-v2 → 256 토큰

7) Multi-Vector Representation (다중 벡터 표현)

설명:

  • 문서의 한 부분을 단일 벡터로 표현하는 것이 아니라, 여러 벡터로 나누어 표현하면 검색 정확도 증가

예시:

  • 단일 벡터:
"이 문서 전체를 하나의 벡터로 변환"
  • 다중 벡터:
"이 문서의 1번 섹션 → 벡터1"
"이 문서의 2번 섹션 → 벡터2"

설명:

  • 키워드 기반 검색(BM25)과 벡터 검색을 혼합하면 검색 성능이 더 높아짐.

예시:
1. "임베딩 모델 추천"이라는 검색어 입력
2. BM25 → "임베딩 모델 성능 비교"라는 문서 추천
3. 벡터 검색 → "최고의 문서 임베딩 모델" 문서 추천
4. 두 결과를 결합하여 더 정확한 결과 제공


📌 정리

추가 요인설명예시
임베딩 모델 선택도메인에 맞는 모델 선택all-MiniLM-L6-v2, BioBERT
차원 수차원이 높으면 정확도 증가, 낮으면 속도 증가512 ~ 1024 차원
정규화 (Normalization)L2 정규화 적용하여 유사도 계산 최적화np.linalg.norm() 사용
토크나이제이션모델마다 다르게 적용됨WordPiece vs BPE
Contrastive Learning의미가 유사한 문장을 학습하여 검색 성능 향상"벡터 표현" ↔ "임베딩"
Context Window모델이 처리할 수 있는 최대 문맥 크기256 ~ 8192 토큰
Multi-Vector 방식단일 벡터보다 문서의 일부를 나눠 저장문서 섹션별 임베딩 생성
Hybrid Search키워드 검색 + 벡터 검색 혼합BM25 + Vector Search

이러한 요소들을 최적화하면 RAG 시스템의 검색 정확도를 극대화할 수 있습니다! 🚀

0개의 댓글