메트릭 유형

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

현재 Milvus는 다음과 같은 유형의 유사도 메트릭을 지원합니다: 유클리드 거리 (L2), 내부 곱 (IP), 코사인 유사도 (COSINE), JACCARD, HAMMING, BM25 (특히 희소 벡터의 전체 텍스트 검색을 위해 설계됨).

아래 표에는 다양한 필드 유형과 해당 메트릭 유형 간의 매핑이 요약되어 있습니다.

필드 유형

차원 범위

지원되는 메트릭 유형

기본 메트릭 유형

FLOAT_VECTOR

2-32,768

COSINE, L2, IP

COSINE

FLOAT16_VECTOR

2-32,768

COSINE, L2, IP

COSINE

BFLOAT16_VECTOR

2-32,768

COSINE, L2, IP

COSINE

INT8_VECTOR

2-32,768

COSINE, L2, IP

COSINE

SPARSE\_FLOAT\_VECTOR

차원을 지정할 필요가 없습니다.

IP, BM25 (전체 텍스트 검색에만 사용)

IP

BINARY_VECTOR

8-32,768*8

HAMMING, JACCARD, MHJACCARD

HAMMING

  • SPARSE\_FLOAT\_VECTOR 유형의 벡터 필드의 경우, 전체 텍스트 검색을 수행할 때만 BM25 메트릭 유형을 사용합니다. 자세한 내용은 전체 텍스트 검색을 참조하세요.

  • BINARY_VECTOR 유형의 벡터 필드의 경우 차원 값(dim)은 8의 배수여야 합니다.

아래 표에는 지원되는 모든 메트릭 유형의 유사도 거리 값의 특징과 값 범위가 요약되어 있습니다.

메트릭 유형

유사도 거리 값의 특성

유사도 거리 값 범위

L2

값이 작을수록 유사도가 높음을 나타냅니다.

[0, ∞)

IP

값이 클수록 유사도가 높음을 나타냅니다.

[-1, 1]

COSINE

값이 클수록 유사도가 높음을 나타냅니다.

[-1, 1]

JACCARD

값이 작을수록 유사도가 높음을 나타냅니다.

[0, 1]

MHJACCARD

MinHash 서명 비트에서 Jaccard 유사성을 추정합니다. 거리가 작을수록 더 유사합니다.

[0, 1]

HAMMING

값이 작을수록 유사성이 높음을 나타냅니다.

[0, dim(vector)]

BM25

용어 빈도, 반전된 문서 빈도 및 문서 정규화를 기반으로 관련성을 점수화합니다.

[0, ∞)

구조 배열 필드에서 벡터 필드를 색인하려면 해당 필드에 저장된 벡터 임베딩을 기반으로 위에서 언급한 메트릭 유형 집합에 MAX_SIM 접두사를 붙여야 합니다. 예를 들어

  • FLOAT_VECTOR, FLOAT16_VECTOR, BFLOAT16_VECTOR, INT8_VECTOR 유형의 벡터 임베딩을 저장하는 벡터 필드의 경우 메트릭 유형으로 MAX_SIM_COSINE, MAX_SIM_IP, MAX_SIM_L2 을 사용할 수 있습니다.

  • BINARY_VECTOR 유형의 벡터 임베딩을 저장하는 벡터 필드의 경우 메트릭 유형으로 MAX_SIM_JACCADR 또는 MAX_SIM_HAMMING 을 사용할 수 있습니다.

유클리드 거리(L2)

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

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

Euclidean Metric 유클리드 미터법

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

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

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

내부 제품(IP)

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

IP Formula IP 공식

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

IP를 사용하여 임베딩 간의 유사성을 계산하는 경우 임베딩을 정규화해야 합니다. 정규화 후 내적 곱은 코사인 유사도와 같습니다.

X'가 임베딩 X에서 정규화되었다고 가정합니다:

Normalize Formula 정규화 공식

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

Correlation Between Embeddings 임베딩 간의 상관관계

코사인 유사도

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

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

Cosine Similarity 코사인 유사도

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

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

JACCARD 거리

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

JACCARD Similarity Coefficient Formula JACCARD 유사도 계수 공식

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

JACCARD Distance Formula JACCARD 거리 공식

MHJACCARD

MinHash Jaccard (MHJACCARD)는 문서 단어 집합, 사용자 태그 집합 또는 게놈 k-mer 집합과 같은 대규모 집합에 대한 효율적이고 대략적인 유사성 검색에 사용되는 메트릭 유형입니다. 원시 집합을 직접 비교하는 대신 MHJACCARD는 Jaccard 유사성을 효율적으로 추정하도록 설계된 압축 표현인 MinHash 서명을 비교합니다.

이 접근 방식은 정확한 Jaccard 유사도를 계산하는 것보다 훨씬 빠르며 대규모 또는 고차원 시나리오에서 특히 유용합니다.

적용 가능한 벡터 유형

  • BINARY_VECTOR각 벡터는 MinHash 서명을 저장합니다. 각 요소는 원래 집합에 적용된 독립 해시 함수 중 하나에 따른 최소 해시 값에 해당합니다.

거리 정의

MHJACCARD는 두 MinHash 서명에서 얼마나 많은 위치가 일치하는지 측정합니다. 일치 비율이 높을수록 기본 세트가 더 유사하다는 것을 의미합니다.

밀버스는 다음과 같이 보고합니다:

  • 거리 = 1 - 추정 유사도(일치 비율)

거리 값은 0에서 1 사이의 범위입니다:

  • 0은 MinHash 서명이 동일함을 의미합니다(예상 Jaccard 유사도 = 1).

  • 1은 어떤 위치에서도 일치하는 항목이 없음을 의미합니다(예상 Jaccard 유사도 = 0).

기술적 세부사항에 대한 자세한 내용은 MINHASH_LSH를 참조하세요.

해밍 거리

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

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

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

BM25 유사성

BM25는 널리 사용되는 텍스트 관련성 측정 방법으로, 특히 전체 텍스트 검색을 위해 설계되었습니다. 다음 세 가지 주요 요소를 결합합니다:

  • 용어 빈도(TF): 문서에서 용어가 얼마나 자주 나타나는지를 측정합니다. 빈도가 높을수록 중요도가 높은 경우가 많지만, BM25는 포화도 매개변수 k1k_1 k 를 사용하여 지나치게 빈번한 용어가 관련성 점수를 지배하는 것을 방지합니다.

  • 역 문서 빈도(IDF): 전체 말뭉치에서 용어의 중요도를 반영합니다. 더 적은 수의 문서에 나타나는 용어는 더 높은 IDF 값을 받아 연관성에 대한 기여도가 더 크다는 것을 나타냅니다.

  • 문서 길이 정규화: 문서 길이가 길수록 더 많은 용어를 포함하고 있기 때문에 점수가 높아지는 경향이 있습니다. BM25는 문서 길이를 정규화하여 이러한 편향을 완화하며, 매개변수 bb b는 이 정규화의 강도를 제어합니다.

BM25 점수는 다음과 같이 계산됩니다:

score(D,Q)=i=1nIDF(qi)TF(qi,D)(k1+1)TF(qi,D)+k1(1b+bDavgdl)score(D, Q)=\sum_{i=1}^{n}IDF(q_i)\cdot {{TF(q_i,D)\cdot(k_1+1)}\over{TF(q_i, D)+k_1\cdot(1-b+b\cdot {{|D|}\over{avgdl}})}}

매개변수 설명

  • QQ Q: 사용자가 제공한 쿼리 텍스트입니다.

  • DD D: 평가 중인 문서입니다.

  • TF(qi,D)TF(q_i, D),: 용어 빈도: 문서 DD D에 용어 qiq_iq 가 얼마나 자주 나타나는지를 나타내는 용어 빈도입니다.

  • IDF(qi)IDF(q_i)): 역 문서 빈도, 다음과 같이 계산됩니다:

    IDF(qi)=log(Nn(qi)+0.5n(qi)+0.5+1)IDF(q_i)=\log({N-n(q_i)+0.5\over n(q_i)+0.5} + 1)

    여기서 NN N은 코퍼스의 총 문서수이고, n(qi)n(q_i) n )은 용어 qiq_i를 포함하는 문서 수 입니다.

  • ∣D∣|D| 문서 길이 DD D(총 용어 수).

  • avgdlavgdl: 코퍼스에 있는 모든 문서의 평균 길이.

  • k1k_1 k: 용어 빈도가 점수에 미치는 영향을 제어합니다. 값이 높을수록 용어 빈도의 중요도가 높아집니다. 일반적인 범위는 [1.2, 2.0]이며, Milvus는 [0, 3]의 범위를 허용합니다.

  • bb b: 길이 정규화 정도를 0에서 1 사이의 범위로 제어합니다. 값이 0이면 정규화가 적용되지 않고, 값이 1이면 전체 정규화가 적용됩니다.

Try Managed Milvus for Free

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

Get Started
피드백

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