VectorDB란? Transformer란?

nara_lee·2025년 6월 17일
1
post-thumbnail

1. Transformer란? (프레임워크)

정의:

Transformer는 2017년 구글 논문 "Attention Is All You Need"에서 제안된 **자연어 처리 모델의 구조(architecture)**입니다.

주요 특징:

  • Self-Attention 메커니즘을 기반으로 입력 시퀀스 전체를 동시에 처리
  • RNN처럼 순차적으로 처리하지 않아도 됨 → 병렬 처리에 유리
  • 입력 문장의 각 단어가 다른 모든 단어와 관계를 스스로 학습

기본 구조:

입력 문장 → Token Embedding → Positional Encoding →
[Multi-Head Self-Attention → FeedForward → LayerNorm] × N → 출력
  • Encoder와 Decoder 두 부분으로 구성되어 있음 (BERT는 이 중 Encoder만 사용)

2. BERT란? (Transformer 기반 사전학습 모델)

정의:

**BERT (Bidirectional Encoder Representations from Transformers)**는 Transformer의 Encoder 부분만 사용한 사전학습(pretrained) 언어 모델입니다.
구글이 2018년에 발표했고, 자연어 이해(NLU) 작업에 큰 성능 향상을 가져왔습니다.

핵심 아이디어:

  • 문장을 왼쪽→오른쪽 또는 오른쪽→왼쪽 단방향으로만 보던 기존 방식과 달리, **양방향(Bidirectional)**으로 문맥을 이해

  • 두 가지 pre-training task로 사전학습:

    1. Masked Language Model (MLM): 문장 중 일부 단어를 [MASK] 처리하고 맞추도록 학습
    2. Next Sentence Prediction (NSP): 두 문장이 이어지는 문장인지 예측

구조:

  • Transformer Encoder × 12층 (base) or 24층 (large)
  • 입력 형식: [CLS] 문장1 [SEP] 문장2 [SEP]

관계 요약

항목TransformerBERT
역할모델 아키텍처 (구조)Transformer 기반의 구체적 모델
발표 시점2017년2018년
구조Encoder + DecoderEncoder만 사용
방향성선택 가능 (unidirectional, bidirectional)Bidirectional
학습 방식목적에 따라 설계Masked LM + NSP
활용 분야번역, 생성 등 광범위자연어 이해 (분류, QA, 추출 등)

예: 둘의 차이 간단 예시

Transformer 사용 예 (기계 번역):

Input: "나는 밥을 먹었다."
→ 번역 결과: "I ate rice."

BERT 사용 예 (문장 분류):

Input: "이 영화 정말 재미있다."
→ 출력: 감성 분석 결과: "긍정"

좋은 질문이에요. Faiss와 벡터 DB(Vector Database)는 둘 다 벡터 검색(예: 유사한 문서, 이미지, 텍스트 찾기)을 위한 도구이지만, 쓰임새와 기능 면에서 차이가 큽니다. 아래에서 비교 중심으로 설명드릴게요.


🔍 핵심 차이 요약

항목Faiss (독립형 인덱스 라이브러리)벡터 DB (예: Milvus, Weaviate, Qdrant 등)
설치 형태라이브러리 (Python/C++ 내장)독립 실행형 서버 (DB처럼 작동)
저장 기능인메모리 or 로컬 파일 저장지속적인 저장 + 복제, 클러스터링 가능
CRUD 지원제한적 (add/remove만 있음)Full CRUD (메타데이터까지 지원)
쿼리 기능벡터 유사도 기반 검색벡터 + 메타데이터 기반 복합 검색
확장성단일 머신 중심분산 처리, 샤딩, 스케일 아웃 가능
메타데이터없음 또는 수동 관리기본 지원 (filter, 조건 검색 가능)
REST API없음대부분 REST/GraphQL/gRPC 지원
활용 예모델 임베딩 후 빠른 검색실제 서비스 백엔드 DB로 활용 가능

1. Faiss란?

  • Facebook에서 만든 고속 벡터 유사도 검색 라이브러리
  • Numpy 배열처럼 벡터를 넣고, 유사한 벡터를 빠르게 찾을 수 있음
  • 다양한 인덱스 알고리즘 제공 (Flat, IVF, PQ 등)
  • 단일 머신 메모리 기반이며, GPU 가속 가능

예: "10만 개 문서의 임베딩을 메모리에 올리고, 유사 문서 5개를 찾는다"


2. 벡터 DB란?

  • Faiss 같은 인덱싱 엔진을 내장하고, 데이터베이스 기능을 확장한 형태
  • 벡터 + 메타데이터 + 필터링 + 스케일링까지 지원
  • 일반적으로 REST API, SQL-like query 등을 제공
  • 예시: Weaviate, Pinecone, Qdrant, Milvus, Vespa

예: "특정 카테고리의 뉴스 중, 이 문장과 유사한 기사를 찾는다" 같은 복합 조건 검색 가능


예제 비교

# Faiss 예제
import faiss
index = faiss.IndexFlatL2(512)
index.add(embeddings)  # shape: (N, 512)
D, I = index.search(query_vector, k=5)
# Qdrant 예제 (Python SDK)
client.upload_collection(vectors=embeddings, metadata=tags)
results = client.search(
    query_vector, 
    filter={"category": "news"},
    top_k=5
)

어떤 걸 써야 할까?

상황추천 도구
소규모 데이터, 실험, 논문 재현✅ Faiss
서비스화, 복합 검색, 확장성 필요✅ 벡터 DB (Qdrant 등)
GPU 인덱싱만 필요✅ Faiss (GPU 지원)
유사 문서 + 메타데이터 필터 검색✅ 벡터 DB

같이 쓰는 경우도 많음

벡터 DB들도 내부적으로 Faiss를 엔진으로 사용하기도 합니다. 예를 들어 Milvus는 Faiss, HNSW 등을 선택적으로 사용합니다. 따라서, Faiss는 인덱싱 엔진, 벡터 DB는 전체 시스템으로 보면 됩니다.


본 후기는 [한글과컴퓨터x한국생산성본부x스나이퍼팩토리] 한컴 AI 아카데미 (B-log) 리뷰로 작성 되었습니다.

#한컴AI아카데미 #AI개발자 #AI개발자교육 #한글과컴퓨터 #한국생산성본부 #스나이퍼팩토리 #부트캠프 #AI전문가양성 #개발자교육 #개발자취업

0개의 댓글