0441f6e2a2
- Formalized automatic record migration protocol in System Manual. - Integrated high-density knowledge for RAG, AI, Business Strategy, and Leadership. - Enhanced graph connectivity across core strategic hubs. - Archived raw data and updated timeline records.
4.0 KiB
4.0 KiB
id: P-Reinforce-AUTO-VSR-001 category: AI_and_ML confidence_score: 1.00 tags: [auto-reinforced, vector-search, ann, semantic-similarity, information-retrieval] last_reinforced: 2026-05-04
Vector Search
📌 한 줄 통찰 (The Karpathy Summary)
"키워드 매칭에서 의미 매칭으로: 단순한 단어의 일치 여부를 넘어, 고차원 벡터 공간에서의 거리를 계산함으로써 사용자의 '의도'와 가장 유사한 맥락의 정보를 찾아내는 수학적 검색 기법."
📖 구조화된 지식 (Synthesized Content)
벡터 검색(Vector Search)은 데이터를 다차원 공간의 벡터로 표현하고, 질의 벡터와의 거리(Similarity)를 계산하여 가장 관련성 높은 항목을 반환하는 기술입니다.
-
전통적 검색 vs 벡터 검색:
- 전통적 검색 (Keyword Search): 단어의 존재 유무(TF-IDF, BM25)에 의존합니다. '사과'를 검색하면 'Apple'이 포함된 문서를 놓칠 수 있습니다.
- 벡터 검색 (Semantic Search): 의미적 유사성을 파악합니다. '아이폰 제조사'를 검색해도 'Apple' 관련 문서를 정확히 찾아낼 수 있습니다.
-
핵심 알고리즘: ANN (Approximate Nearest Neighbor): 대규모 데이터셋에서 모든 벡터를 전수 조사(Brute-force)하는 것은 불가능하므로, 근사치를 빠르게 찾는 알고리즘을 사용합니다.
- HNSW: 노드 간의 근접 그래프를 계층적으로 구성하여 고속 탐색을 지원합니다.
- Product Quantization (PQ): 벡터를 압축하여 메모리 효율성을 극대화합니다.
- IVF: 공간을 클러스터로 분할하여 검색 범위를 국소화합니다.
-
유사도 측정 지표 (Distance Metrics):
- Cosine Similarity: 두 벡터 사이의 각도를 측정 (가장 널리 사용).
- Euclidean Distance (L2): 두 점 사이의 직선 거리를 측정.
- Dot Product: 벡터의 크기와 방향을 모두 고려.
⚖️ Trade-offs & Caveats
- 정확도와 속도의 균형: ANN 알고리즘을 사용하면 검색 속도는 비약적으로 빨라지지만, 100% 완벽한 최적해를 보장하지 못하는 트레이드오프가 발생합니다.
- 컴퓨팅 오버헤드: 벡터 변환(Embedding) 및 고차원 연산 과정에서 기존 검색 대비 훨씬 많은 리소스를 소모합니다.
- 단순 쿼리의 비효율성: 모델명이나 특정 ID 검색과 같은 Exact Match 작업에서는 오히려 전통적인 BM25보다 느리거나 부정확할 수 있습니다. (이 때문에 최근에는 두 방식을 결합한 Hybrid Search가 권장됩니다.)
💻 실전 구현 코드 (Boilerplate)
scikit-learn을 사용하여 두 벡터 간의 유사도를 측정하는 핵심 로직 예시입니다.
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
# 1. 예시 벡터 (임베딩 모델에서 출력된 값이라고 가정)
query_vector = np.array([[0.1, 0.2, 0.8]]) # "인공지능 지식"
doc_vector_1 = np.array([[0.12, 0.18, 0.75]]) # "AI 지식 강화"
doc_vector_2 = np.array([[0.9, 0.1, 0.05]]) # "오늘의 날씨"
# 2. 유사도 계산
sim_1 = cosine_similarity(query_vector, doc_vector_1)
sim_2 = cosine_similarity(query_vector, doc_vector_2)
print(f"Similarity with Doc 1 (Related): {sim_1[0][0]:.4f}")
print(f"Similarity with Doc 2 (Unrelated): {sim_2[0][0]:.4f}")
# 3. 결과 해석
if sim_1 > 0.85:
print("문맥적으로 매우 유사한 문서입니다.")
🔗 지식 연결 (Graph)
- 기반 기술: Vector Embedding, Vector Database
- 활용 분야: Retrieval-Augmented Generation (RAG), Semantic Search, Hybrid Search
- 고도화 알고리즘: ANN, HNSW, Product Quantization
Last updated: 2026-05-04