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오픈소스, 확장성
pgvectorPostgreSQL 확장
FAISSFacebook의 라이브러리

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