가까움을 재는 세 가지 방법
텍스트가 벡터가 되면 "얼마나 비슷해?" 는 "거리를 어떻게 재?" 로 바뀌어. 프로덕션에서 보는 답은 셋, 잘못 고르면 retrieval 품질이 조용히 떨어져.
Cosine similarity (텍스트 기본값)
두 벡터의 각도를 잼. 같은 방향 = 1, 반대 = -1, 직각 = 0. magnitude 무시해 — 문서 길이가 유사도에 bias 안 주게 하고 싶을 때 정확히 이게 필요해.
Euclidean distance (L2)
고차원 공간의 직선 거리. 작을수록 가까움. magnitude 가 의미를 가질 때 (frequency-weighted vector, normalize 안 한 이미지 임베딩) 유용.
Dot product (내적)
각도와 magnitude 한 숫자에 합쳐서. 단위 벡터에서는 cosine 과 같지만 normalize 가 없어서 GPU 에서 더 빨라. 추천 시스템에서 magnitude 로 인기도/중요도를 인코딩하려고 일부러 dot product 쓰기도 해.
요즘 텍스트 임베딩 모델은 거의 다 단위 벡터 출력
OpenAI, Voyage, Cohere, BGE, 대부분의 sentence-transformers 모델은 이미 L2 정규화된 벡터를 내. cosine, dot product, Euclidean 거리의 monotonic 함수가 다 같은 ranking 을 줘 — 본인 vector store 가 가장 효율적으로 지원하는 거 골라. 가정하기 전에 모델 카드 한 번 읽어.