거리 측정 기준 선택(코사인, L2, 내적)
코사인, L2(유클리드), 내적 거리를 언제 선택할지, 그리고 대부분의 임베딩 모델이 코사인을 선호하는 이유를 알아보세요.
거리 측정 기준 선택(코사인, L2, 내적)은(는) CoddyKit의 무료 AI Agents 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Agents 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
세 가지 일반적인 척도
벡터 데이터베이스에서는 거리 척도를 선택할 수 있습니다. 가장 자주 보게 될 세 가지는 다음과 같습니다:
- 코사인 유사도 — 벡터 사이의 각도
- 내적 — 한 벡터를 다른 벡터에 투영한 값
- 유클리드 거리(L2) — 직선거리
코사인
범위: -1부터 1까지. 높을수록 더 유사합니다.
import numpy as np
def cosine(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))내적
범위: -무한대부터 +무한대까지. 높을수록 더 유사합니다.
def dot(a, b):
return np.dot(a, b)
# Equivalent to cosine when both vectors are unit-normalized.유클리드 거리(L2)
범위: 0부터 +무한대까지. 낮을수록 더 유사합니다.
def l2(a, b):
return np.linalg.norm(np.array(a) - np.array(b))어떤 것을 사용해야 합니까?
텍스트 임베딩의 경우 일반적으로 다음과 같이 사용합니다:
- OpenAI text-embedding-3 — 코사인(벡터가 미리 정규화되어 있음)
- 코히어 — 코사인
- Sentence Transformers / BGE — 일반적으로 코사인, 모델 카드를 확인하십시오
확실하지 않다면 코사인을 사용하십시오.
정규화하면 내적은 코사인과 같습니다
|a| = |b| = 1이면 cos(a,b) = a . b입니다. 내적은 나눗셈이 필요 없어 더 빠르므로, 운영 환경의 시스템에서는 미리 정규화한 벡터에 dot을 사용하는 경우가 많습니다.
L2를 사용하는 경우
일부 연구 모델(구형 Sentence-BERT 변형, 이미지 임베딩)은 L2 거리로 학습되며 이를 사용할 때 더 나은 성능을 냅니다. 항상 모델 카드를 확인하십시오.
색인에 중요한 이유
색인 구조(HNSW, IVF, FAISS)는 SPECIFIC 척도에 맞게 구축됩니다. 색인을 만든 뒤 척도를 변경하면 일반적으로 처음부터 색인을 다시 구축해야 합니다.
Setting Metric in Pinecone
from pinecone import ServerlessSpec
pc.create_index(
name='docs',
dimension=1536,
metric='cosine', # or 'dotproduct' or 'euclidean'
spec=ServerlessSpec(cloud='aws', region='us-east-1')
)Setting Metric in Qdrant
from qdrant_client.models import VectorParams, Distance
client.create_collection(
collection_name='docs',
vectors_config=VectorParams(size=1536, distance=Distance.COSINE)
)시스템 간 척도 불일치
나중에 교차 인코더로 순위를 다시 매기면 자체적인 점수 척도를 사용합니다. 먼저 정규화하지 않은 상태에서 여러 척도를 하나의 종합 점수에 섞지 마십시오.
차이 시각화
두 단위 벡터의 경우:
- cos = 1, L2 = 0 -> 동일
- cos = 0.5, L2 ~ 1 -> 관련 있음
- cos = 0, L2 ~ sqrt(2) -> 직교
- cos = -1, L2 = 2 -> 반대
한 번 미리 정규화하기
데이터를 수집할 때 정규화하는 것은 비용이 적습니다(나눗셈 한 번). 이렇게 하면 cosine / dot과의 호환성이 확보되고, 이후 쿼리마다 정규화할 필요가 없습니다.
vec = vec / np.linalg.norm(vec)기본 척도
OpenAI 텍스트 임베딩의 기본 거리 척도는 무엇입니까?
복습
텍스트에는 코사인을 사용하십시오. 한 번 미리 정규화하고, 속도를 위해 내적을 사용하십시오. 색인을 만들 때 척도를 설정해야 하며, 나중에 변경하면 다시 구축해야 합니다.
자주 묻는 질문
“거리 측정 기준 선택(코사인, L2, 내적)” 강의는 무료인가요?
네 — “거리 측정 기준 선택(코사인, L2, 내적)” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Agents 강의 전체를 잠금 해제할 수 있습니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.
“거리 측정 기준 선택(코사인, L2, 내적)”에서 뭘 배우나요?
코사인, L2(유클리드), 내적 거리를 언제 선택할지, 그리고 대부분의 임베딩 모델이 코사인을 선호하는 이유를 알아보세요. 브라우저에서 직접 실행하는 실습 코드로 AI Agents을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
AI Agents을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 AI Agents은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“거리 측정 기준 선택(코사인, L2, 내적)” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 AI Agents 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 AI Agents 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Pinecone, Weaviate, Qdrant 비교
- 하이브리드 검색을 위한 메타데이터 필터링
- 벡터 업데이트 및 삭제
- 거리 측정 기준 선택(코사인, L2, 내적)