Vector Search (벡터 검색)
정의
**Vector Search (벡터 검색)**는 텍스트나 이미지 같은 데이터를 고차원 벡터로 변환한 후, 벡터 공간에서 유사도를 계산하여 관련 정보를 찾는 검색 방식.
임베딩 모델로 텍스트를 벡터로 변환 → 벡터 간 거리 계산 → 가장 가까운 벡터 찾기
핵심 개념
텍스트 → Embedding → 벡터 → Similarity 계산 → 가장 유사한 벡터 찾기
"대통령" → [0.2, -0.1, 0.8, ...] → 거리 계산 → "국가 원수" 찾음
벡터화 (Vectorization)
작동 원리
1단계: 텍스트 입력
"인공지능은 미래의 기술이다"
2단계: Embedding Model 적용
(BERT, GPT, Sentence-Transformers 등)
3단계: 고차원 벡터로 변환
[0.234, -0.156, 0.821, 0.045, ..., 0.673]
(보통 300~1536차원)
4단계: Vector Database에 저장
ID: "doc_001"
Vector: [0.234, -0.156, 0.821, ...]
Text: "인공지능은 미래의 기술이다"
임베딩의 특성
같은 의미 → 비슷한 벡터
"인공지능은 미래의 기술"
"AI는 미래 기술"
"Machine Learning은 기술의 미래"
→ 벡터 좌표가 가깝게 분포 (클러스터 형성)
다른 의미 → 먼 벡터
"커피는 맛있다"
→ 벡터가 멀리 떨어짐
유사도 계산 (Similarity)
Cosine Similarity (코사인 유사도)
가장 일반적인 유사도 계산 방식
벡터 A: [0.2, 0.5, 0.8]
벡터 B: [0.21, 0.48, 0.79]
벡터 C: [0.9, 0.1, 0.2]
cos(A, B) = 0.999 (매우 유사)
cos(A, C) = 0.421 (별로 유사하지 않음)
→ 유사도: 0 (완전 다름) ~ 1 (완전히 같음)
다른 거리 측정법
| 방식 | 설명 | 사용처 |
|---|---|---|
| Cosine Similarity | 각도 기반 | 가장 일반적 |
| Euclidean Distance | 직선거리 | 거리 기반 검색 |
| Manhattan Distance | 맨해튼 거리 | 계산 효율 중시 |
| Dot Product | 내적 | 성능 최적화 |
Vector Search의 단계별 작동
1단계: 초기화
데이터베이스 준비:
100만 개의 문서 각각을 벡터로 변환
(Sentence-Transformers: 768차원 벡터)
Vector DB에 저장:
["지식그래프란...", [0.23, -0.15, 0.81, ...]],
["온톨로지의 정의", [0.24, -0.14, 0.80, ...]],
["RAG 기술", [0.12, 0.34, 0.56, ...]],
...
2단계: 쿼리 벡터화
사용자 질문: "지식그래프가 뭐예요?"
질문을 같은 Embedding Model로 벡터화:
쿼리 벡터: [0.231, -0.149, 0.809, ...]
3단계: 유사도 계산
쿼리 벡터와 DB의 모든 벡터 비교:
"지식그래프란..." 유사도: 0.998 ✅ 가장 높음
"온톨로지의 정의" 유사도: 0.987 ✅ 두 번째
"RAG 기술" 유사도: 0.756
"커피 추천" 유사도: 0.234
"스포츠 뉴스" 유사도: 0.108
4단계: 결과 반환
Top-K 검색 (상위 K개 반환):
1. "지식그래프란..." (유사도 0.998)
2. "온톨로지의 정의" (유사도 0.987)
3. "의미론적 표현" (유사도 0.923)
Vector Search vs 키워드 검색
| 항목 | 키워드 | 벡터 검색 |
|---|---|---|
| 원리 | 단어 일치 | 의미 유사도 |
| 속도 | 매우 빠름 | 느림 |
| 정확도 | 낮음 | 높음 |
| 동의어 | ❌ 자동 처리 불가 | ✅ 자동 처리 |
| 문맥 | ❌ 무시 | ✅ 고려 |
| 저장 공간 | 적음 | 많음 |
Vector Database
필요성
100만 개 벡터를 모두 비교하면?
계산량: 100만 × 768 = 7억 6천만 연산
소요 시간: 수십 초
→ 매번 이렇게 하면 사용자 대기 너무 길어짐
→ Vector DB의 인덱싱 기술로 속도 개선
Vector DB 예시
| DB | 특징 |
|---|---|
| Pinecone | 완전 관리형, 가장 인기 |
| Weaviate | 오픈소스, GraphQL |
| Qdrant | 고성능, 오픈소스 |
| Milvus | 오픈소스, 확장성 |
| pgvector | PostgreSQL 확장 |
| FAISS | Facebook의 라이브러리 |
Vector DB의 인덱싱
모든 벡터를 선형 검색 (Linear Search):
O(n) = 100만 개 모두 비교 = 느림
Vector DB의 인덱싱 (예: HNSW):
O(log n) = 특정 부분만 비교 = 빠름
→ 100배 이상 성능 향상
Vector Search의 실무 응용
1. 의미 기반 검색
사용자 질문: "AI가 인간을 대체할까?"
키워드 검색: "AI" 단어 포함 문서만
벡터 검색: 의미가 유사한 모든 문서
- "기술이 일자리를 빼앗을까"
- "자동화의 미래"
- "인간-AI 협업"
→ 더 정확하고 완전한 정보 검색
2. RAG의 Retriever
RAG = Retriever + Generator
Retriever: Vector Search로 관련 문서 찾기
Generator: LLM으로 답변 생성
Vector Search가 잘못되면 → LLM이 좋은 답변 생성 불가능
→ Vector Search가 RAG의 성패를 좌우
3. 추천 시스템
사용자: "로맨틱한 영화 추천해줘"
→ 영화 임베딩과 사용자 쿼리 임베딩 비교
→ 가장 유사한 영화들 추천
4. 중복 감지 (Duplicate Detection)
문서 A, B, C가 의미상 중복인지 확인
→ 각각 벡터화 후 유사도 계산
→ 임계값 이상이면 중복으로 판정
Vector Search의 한계
❌ 계산 비용
장점: 의미 검색 가능
단점: 엄청난 계산량
100만 문서 × 768차원 벡터 = 기가바이트 규모 메모리
❌ 모델 의존성
사용하는 Embedding 모델에 따라 결과 크게 달라짐
- 나쁜 모델: 의미를 제대로 못 잡음
- 좋은 모델: 비쌈, 느림
❌ 의미적 한계
"은행"의 임베딩:
- 금융기관의 "은행"
- 강가의 "은행"
→ 같은 단어지만 다른 의미
현재 기술로 완벽한 의미 분리 어려움
Vector Search의 미래
하이브리드 검색
키워드 검색 + 벡터 검색 결합
- 정확도 향상
- 성능 최적화
- 다양한 쿼리 타입 대응
멀티모달 검색
텍스트만 아니라 이미지, 음성도 벡터화
→ 통합 검색 가능
실시간 업데이트
현재: 배치 처리 (주기적 벡터화)
미래: 스트리밍 방식 (실시간 벡터화)
→ 항상 최신 정보 검색 가능
관련 개념
- Semantic Search — 벡터 검색으로 구현되는 의미 검색
- Embedding — 텍스트를 벡터로 변환
- RAG — 벡터 검색을 활용하는 기술
- — 벡터 저장 및 검색 최적화
- Similarity Measurement — 유사도 계산
- — Facebook의 벡터 검색 라이브러리
출처: AI인터시스브랜드 - Retrieval Augmented Generation of Ontologies from Relational Data (2025-12-16)
관련 영상: rag-ontologies-relational