milvus-logo
LFAI
홈페이지
  • 개념

유사성 메트릭

Milvus에서 유사성 메트릭은 벡터 간의 유사성을 측정하는 데 사용됩니다. 좋은 거리 메트릭을 선택하면 분류 및 클러스터링 성능을 크게 향상시키는 데 도움이 됩니다.

다음 표는 널리 사용되는 유사도 메트릭이 다양한 입력 데이터 양식과 Milvus 인덱스에 어떻게 적용되는지 보여줍니다. 현재 Milvus는 부동 소수점 임베딩(부동 소수점 벡터 또는 고밀도 벡터라고도 함), 이진 임베딩(이진 벡터라고도 함), 스파스 임베딩(스파스 벡터라고도 함)을 포함한 다양한 유형의 데이터를 지원합니다.

메트릭 유형 인덱스 유형
  • 유클리드 거리(L2)
  • 내적 곱(IP)
  • 코사인 유사도(COSINE)
  • FLAT
  • IVF_FLAT
  • IVF_SQ8
  • IVF_PQ
  • GPU_IVF_FLAT
  • GPU_IVF_PQ
  • HNSW
  • DISKANN
메트릭 유형 인덱스 유형
  • Jaccard
  • Hamming
  • BIN_FLAT
  • BIN_IVF_FLAT
메트릭 유형 인덱스 유형
IP
  • SPARSE_INVERTED_INDEX
  • SPARSE_WAND

유클리드 거리(L2)

기본적으로 유클리드 거리는 두 점을 연결하는 세그먼트의 길이를 측정합니다.

유클리드 거리의 공식은 다음과 같습니다:

euclidean 유클리드

여기서 a = (a0, a1,...,an-1)과 b = (b0, b0,..., bn-1)은 n차원 유클리드 공간에서 두 점입니다.

가장 일반적으로 사용되는 거리 측정법으로 데이터가 연속적인 경우 매우 유용합니다.

밀버스는 유클리드 거리를 거리 측정값으로 선택한 경우 제곱근을 적용하기 전의 값만 계산합니다.

내부 곱(IP)

두 벡터 임베딩 사이의 IP 거리는 다음과 같이 정의됩니다:

ip IP

IP는 정규화되지 않은 데이터를 비교해야 하거나 크기와 각도를 고려해야 할 때 더 유용합니다.

정규화된 임베딩에 IP 거리 메트릭을 적용하면 결과는 임베딩 간의 코사인 유사성을 계산하는 것과 동일합니다.

X'가 임베딩 X에서 정규화되었다고 가정해 보겠습니다:

normalize normalize

두 임베딩 간의 상관관계는 다음과 같습니다:

normalization 정규화

코사인 유사도

코사인 유사도는 두 벡터 세트 사이의 각도의 코사인을 사용하여 얼마나 유사한지 측정합니다. 두 벡터 세트는 같은 원점([0,0,...])에서 시작하지만 서로 다른 방향을 가리키는 두 개의 선분으로 생각할 수 있습니다.

두 벡터 집합 A = (a0, a1,...,an-1)B = (b0, b1,..., bn-1) 사이의 코사인 유사도를 계산하려면 다음 공식을 사용합니다:

cosine_similarity 코사인_유사도

코사인 유사도는 항상 [-1, 1] 간격에 있습니다. 예를 들어 두 개의 비례 벡터의 코사인 유사도는 1, 두 개의 직교 벡터의 유사도는 0, 두 개의 반대 벡터의 유사도는 -1입니다. 코사인이 클수록 두 벡터 사이의 각도가 작아져 이 두 벡터가 서로 더 유사하다는 것을 나타냅니다.

코사인 유사도를 1에서 빼면 두 벡터 사이의 코사인 거리를 구할 수 있습니다.

자카드 거리

자카드 유사도 계수는 두 샘플 세트 간의 유사도를 측정하며, 정의된 세트의 교집합의 카디널리티를 두 세트의 합집합의 카디널리티로 나눈 값으로 정의됩니다. 유한한 샘플 세트에만 적용할 수 있습니다.

Jaccard similarity coefficient Jaccard 유사도 계수

Jaccard 거리는 데이터 세트 간의 유사성을 측정하며 1에서 Jaccard 유사성 계수를 빼면 구할 수 있습니다. 이진 변수의 경우 Jaccard 거리는 타니모토 계수와 동일합니다.

Jaccard distance 자카드 거리

해밍 거리

해밍 거리는 이진 데이터 문자열을 측정합니다. 길이가 같은 두 문자열 사이의 거리는 비트가 서로 다른 비트 위치의 수입니다.

예를 들어 1101 1001과 1001 1101이라는 두 문자열이 있다고 가정해 보겠습니다.

11011001 ⊕ 10011101 = 01000100. 여기에는 두 개의 1이 포함되어 있으므로 해밍 거리는 d(11011001, 10011101) = 2입니다.

구조적 유사성

어떤 화학 구조가 더 큰 화학 구조의 일부로 존재하는 경우 전자를 하부 구조라고 하고 후자를 상부 구조라고 합니다. 예를 들어 에탄올은 아세트산의 하부 구조이고 아세트산은 에탄올의 상부 구조입니다.

구조 유사성은 두 화학식이 서로 유사한지 여부를 판단하는 데 사용되며, 한 화학식이 다른 화학식의 상부 구조인지 하부 구조인지 판단하는 데 사용됩니다.

A가 B의 상부 구조인지 확인하려면 다음 공식을 사용하세요:

superstructure 상부 구조

여기서

  • A는 검색하려는 화학식의 이진 표현입니다.
  • B는 데이터베이스에 있는 화학식의 이진 표현입니다.

0 이 반환되면 A는 B의 상부 구조가 아닙니다. 그렇지 않으면 결과는 그 반대입니다.

A가 B의 하부 구조인지 확인하려면 다음 공식을 사용합니다:

substructure 하부 구조

여기서:

  • A는 검색하려는 화학식의 이진 표현입니다.
  • B는 데이터베이스에 있는 화학식의 이진 표현입니다.

0 이 반환되면 A는 B의 하위 구조가 아닙니다. 그렇지 않으면 결과는 그 반대입니다.

FAQ

메트릭 유형이 내적 곱인 경우 벡터 검색의 상위 1순위 결과가 검색 벡터 자체가 아닌 이유는 무엇인가요?거리 메트릭으로 내적 곱을 사용할 때 벡터를 정규화하지 않은 경우 이런 문제가 발생합니다.
정규화란 무엇인가요? 정규화가 필요한 이유는 무엇인가요?

정규화란 임베딩(벡터)을 변환하는 과정을 통해 해당 벡터의 규범이 1이 되도록 변환하는 것을 말합니다. 내적 곱을 사용하여 임베딩 유사성을 계산하는 경우, 임베딩을 정규화해야 합니다. 정규화 후 내적 곱은 코사인 유사도와 같습니다.

자세한 내용은 위키백과를 참조하세요.

거리 측정값으로 유클리드 거리(L2)와 내적 곱(IP)을 사용하면 왜 다른 결과가 나오나요?벡터가 정규화되어 있는지 확인하세요. 그렇지 않은 경우 먼저 벡터를 정규화해야 합니다. 이론적으로 벡터가 정규화되지 않은 경우 L2로 계산된 유사도는 IP로 계산된 유사도와 다릅니다.

다음 단계

번역DeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
피드백

이 페이지가 도움이 되었나요?