메트릭 유형
유사성 메트릭은 벡터 간의 유사성을 측정하는 데 사용됩니다. 적절한 거리 메트릭을 선택하면 분류 및 클러스터링 성능을 크게 향상시키는 데 도움이 됩니다.
현재 Milvus는 다음과 같은 유형의 유사도 메트릭을 지원합니다: 유클리드 거리 (L2
), 내적 곱 (IP
), 코사인 유사도 (COSINE
), JACCARD
, HAMMING
, BM25
(특히 희소 벡터의 전체 텍스트 검색을 위해 설계됨).
아래 표에는 다양한 필드 유형과 해당 메트릭 유형 간의 매핑이 요약되어 있습니다.
필드 유형 | 차원 범위 | 지원되는 메트릭 유형 | 기본 메트릭 유형 |
---|---|---|---|
| 2-32,768 |
|
|
| 2-32,768 |
|
|
| 2-32,768 |
|
|
| 치수를 지정할 필요가 없습니다. |
|
|
| 8-32,768*8 |
|
|
SPARSE_FLOAT_VECTOR
유형의 벡터 필드의 경우, 전체 텍스트 검색을 수행할 때만BM25
메트릭 유형을 사용합니다. 자세한 내용은 전체 텍스트 검색을 참조하세요.BINARY_VECTOR
유형의 벡터 필드의 경우 차원 값(dim
)은 8의 배수여야 합니다.
아래 표에는 지원되는 모든 메트릭 유형의 유사도 거리 값의 특징과 값 범위가 요약되어 있습니다.
메트릭 유형 | 유사도 거리 값의 특성 | 유사도 거리 값 범위 |
---|---|---|
| 값이 작을수록 유사도가 높음을 나타냅니다. | [0, ∞) |
| 값이 클수록 유사도가 높음을 나타냅니다. | [-1, 1] |
| 값이 클수록 유사도가 높음을 나타냅니다. | [-1, 1] |
| 값이 작을수록 유사도가 높음을 나타냅니다. | [0, 1] |
| 값이 작을수록 유사도가 높음을 나타냅니다. | [0, dim(벡터)] |
| 용어 빈도, 반전된 문서 빈도 및 문서 정규화를 기반으로 관련성 점수를 매깁니다. | [0, ∞) |
유클리드 거리(L2)
기본적으로 유클리드 거리는 두 점을 연결하는 세그먼트의 길이를 측정합니다.
유클리드 거리의 공식은 다음과 같습니다.
유클리드 거리 공식
여기서 a = (a0, a1,...,an-1) 과 b = (b0, b1,..., bn-1) 은 n차원 유클리드 공간에서 두 점입니다.
가장 일반적으로 사용되는 거리 측정법으로 데이터가 연속적인 경우에 매우 유용합니다.
밀버스는 유클리드 거리를 거리 측정값으로 선택한 경우 제곱근을 적용하기 전의 값만 계산합니다.
내부 제품(IP)
두 임베딩 사이의 IP 거리는 다음과 같이 정의됩니다.
내부 곱 공식
IP는 정규화되지 않은 데이터를 비교해야 하거나 크기와 각도를 고려해야 할 때 더 유용합니다.
IP를 사용하여 임베딩 간의 유사성을 계산하는 경우 임베딩을 정규화해야 합니다. 정규화 후 내적 곱은 코사인 유사도와 같습니다.
X'가 임베딩 X에서 정규화되었다고 가정합니다.
정규화된 내적 곱 공식
두 임베딩 간의 상관관계는 다음과 같습니다.
임베딩 간의 상관관계
코사인 유사도
코사인 유사도는 두 벡터 세트 사이의 각도의 코사인을 사용하여 얼마나 유사한지 측정합니다. 두 벡터 세트는 [0,0,...]과 같이 같은 지점에서 시작하지만 서로 다른 방향을 가리키는 선분으로 생각할 수 있습니다.
두 벡터 집합 A = (a0, a1,...,an-1) 와 B = (b0, b1,..., bn-1) 사이의 코사인 유사도를 계산하려면 다음 공식을 사용하세요.
코사인 유사도 공식
코사인 유사도는 항상 [-1, 1] 간격에 있습니다. 예를 들어 두 개의 비례 벡터의 코사인 유사도는 1, 두 개의 직교 벡터의 유사도는 0, 두 개의 반대 벡터의 유사도는 -1입니다. 코사인이 클수록 두 벡터 사이의 각도가 작아져 이 두 벡터가 서로 더 유사하다는 것을 나타냅니다.
코사인 유사도를 1에서 빼면 두 벡터 사이의 코사인 거리를 구할 수 있습니다.
JACCARD 거리
JACCARD 유사도 계수는 두 샘플 세트 간의 유사도를 측정하며, 정의된 세트의 교집합의 카디널리티를 두 세트의 합집합의 카디널리티로 나눈 값으로 정의됩니다. 유한한 샘플 세트에만 적용할 수 있습니다.
JACCARD 유사도 계수 공식
JACCARD 거리는 데이터 세트 간의 유사도를 측정하며, 1에서 JACCARD 유사도 계수를 빼면 구할 수 있습니다. 이진 변수의 경우, JACCARD 거리는 타니모토 계수와 동일합니다.
JACCARD 거리 공식
해밍 거리
해밍 거리는 이진 데이터 문자열을 측정합니다. 길이가 같은 두 문자열 사이의 거리는 비트가 서로 다른 비트 위치의 수입니다.
예를 들어 1101 1001과 1001 1101이라는 두 개의 문자열이 있다고 가정해 보겠습니다.
11011001 ⊕ 10011101 = 01000100. 여기에는 두 개의 1이 포함되어 있으므로 해밍 거리는 d(11011001, 10011101) = 2입니다.
BM25 유사성
BM25는 널리 사용되는 텍스트 관련성 측정 방법으로, 특히 전체 텍스트 검색을 위해 설계되었습니다. 다음 세 가지 주요 요소를 결합합니다.
용어 빈도(TF): 문서에서 용어가 얼마나 자주 나타나는지를 측정합니다. 빈도가 높을수록 중요도가 높은 경우가 많지만, BM25는 포화도 매개변수 k1을 사용하여 지나치게 빈번한 용어가 관련성 점수를 지배하는 것을 방지합니다.
역 문서 빈도(IDF): 전체 말뭉치에서 용어의 중요도를 반영합니다. 더 적은 문서에 나타나는 용어는 더 높은 IDF 값을 받아 연관성에 대한 기여도가 더 크다는 것을 나타냅니다.
문서 길이 정규화: 문서 길이가 길수록 더 많은 용어를 포함하고 있기 때문에 점수가 높아지는 경향이 있습니다. BM25는 문서 길이를 정규화하여 이러한 편향을 완화하며, 매개변수 b는 이 정규화의 강도를 제어합니다.
BM25 점수는 다음과 같이 계산됩니다.
BM25 유사도 공식
매개변수 설명
Q
: 사용자가 제공한 쿼리 텍스트입니다.D
: 평가 중인 문서입니다.TF(qi,D)
: 문서에서qi
용어가 얼마나 자주 나타나는지 나타내는 용어 빈도D
.IDF(qi)
: 역 문서 빈도, 다음과 같이 계산됩니다.IDF 공식
여기서
N
은 말뭉치의 총 문서 수이고n(qi)
은 용어 qi 가 포함된 문서 수입니다.∣D∣
: 문서 길이D
(총 용어 수).avgdl
: 코퍼스에 있는 모든 문서의 평균 길이.k1
: 용어 빈도가 점수에 미치는 영향을 제어합니다. 값이 높을수록 용어 빈도의 중요도가 높아집니다. 일반적인 범위는 [1.2, 2.0]이며, Milvus는 [0, 3]의 범위를 허용합니다.b
: 길이 정규화 정도를 0에서 1 사이의 범위로 제어합니다. 값이 0이면 정규화가 적용되지 않고, 값이 1이면 전체 정규화가 적용됩니다.