0Pricing
AI Agents · 강의

거리 측정 기준 선택(코사인, 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Pinecone, Weaviate, Qdrant 비교
  2. 하이브리드 검색을 위한 메타데이터 필터링
  3. 벡터 업데이트 및 삭제
  4. 거리 측정 기준 선택(코사인, L2, 내적)
← AI Agents(으)로 돌아가기