# 코사인 유사도 ## 수식 $ \text{Retrieval}(q) = \text{argsort}_{\text{desc}} \left( \text{sim}(q, d_i) \right) [1:K] $ ## 표기법 | 기호 | 의미 | |------|------| | $q$ | 질의 벡터 | | $d$ | 문서 벡터 | | $q \cdot d$ | 두 벡터의 내적 | | $\|q\|$ | 질의 벡터의 크기 | | $\|d\|$ | 문서 벡터의 크기 | | $\cos(q,d)$ | 코사인 유사도 점수 | | $E(q)$ | 쿼리의 임베딩 표현 | | $E(d)$ | 문서의 임베딩 표현 | ## 직관적 설명 검색 방식 및 평가 지표 Vector-based Retrieval (가장 일반적) 텍스트를 고차원 벡터로 임베딩한 뒤 쿼리와의 코사인 유사도로 관련도 측정: $f(q_i, d)$: 쿼리 항 $q_i$가 문서 $d$에서 출현 빈도 전통적 정보 검색 (BM25 등): Keyword-based Retrieval ## 구체적 예시 $q=(1,2)$, $d=(2,4)$라면 두 벡터 방향이 같으므로 코사인 유사도는 1에 가깝다. 반면 $d'=(2,-4)$라면 방향이 다르므로 유사도는 낮거나 음수가 된다. RAG에서는 query와 chunk 임베딩의 코사인 유사도를 계산해 상위 K개 문서를 고른다. 벡터 크기보다 방향 유사성에 집중하는 점이 핵심이다. ## 응용 & 실제 구현 벡터 DB 검색, semantic search, 문서 추천에서 가장 널리 쓰인다. 실무에서는 임베딩을 미리 정규화한 뒤 dot product만으로 계산 비용을 줄이기도 한다. FAISS, Pinecone, Weaviate 같은 저장소가 기본 지원한다. 문서 chunking 전략과 임베딩 모델 선택이 유사도 품질에 직접 영향을 준다. ## 관련 개념 - [[ai/llm/concepts/rag/retrieval]] ## 참고 자료 정보검색 및 임베딩 기반 검색의 기본 거리 척도. [[ai/llm/concepts/rag/retrieval]]