Transformer는 2017년 구글 논문 "Attention Is All You Need"에서 제안된 **자연어 처리 모델의 구조(architecture)**입니다.
입력 문장 → Token Embedding → Positional Encoding →
[Multi-Head Self-Attention → FeedForward → LayerNorm] × N → 출력
**BERT (Bidirectional Encoder Representations from Transformers)**는 Transformer의 Encoder 부분만 사용한 사전학습(pretrained) 언어 모델입니다.
구글이 2018년에 발표했고, 자연어 이해(NLU) 작업에 큰 성능 향상을 가져왔습니다.
문장을 왼쪽→오른쪽 또는 오른쪽→왼쪽 단방향으로만 보던 기존 방식과 달리, **양방향(Bidirectional)**으로 문맥을 이해
두 가지 pre-training task로 사전학습:
[MASK]
처리하고 맞추도록 학습Transformer Encoder × 12층 (base)
or 24층 (large)
[CLS] 문장1 [SEP] 문장2 [SEP]
항목 | Transformer | BERT |
---|---|---|
역할 | 모델 아키텍처 (구조) | Transformer 기반의 구체적 모델 |
발표 시점 | 2017년 | 2018년 |
구조 | Encoder + Decoder | Encoder만 사용 |
방향성 | 선택 가능 (unidirectional, bidirectional) | Bidirectional |
학습 방식 | 목적에 따라 설계 | Masked LM + NSP |
활용 분야 | 번역, 생성 등 광범위 | 자연어 이해 (분류, QA, 추출 등) |
Input: "나는 밥을 먹었다."
→ 번역 결과: "I ate rice."
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로 활용 가능 |
Numpy
배열처럼 벡터를 넣고, 유사한 벡터를 빠르게 찾을 수 있음예: "10만 개 문서의 임베딩을 메모리에 올리고, 유사 문서 5개를 찾는다"
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전문가양성 #개발자교육 #개발자취업