Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

$ 유사성 코사인 (표현식 연산자)

버전 8.3에 추가 되었습니다.

$similarityCosine

배열 또는 binData 값으로 표시되는 두 숫자 벡터 간의 코사인 유사성을 반환합니다. 코사인 유사도는 두 벡터 사이의 각도의 코사인을 측정하고 크기와 관계없이 방향이 얼마나 유사한지를 나타냅니다.

$similarityCosine 에는 두 가지 구문 형식이 있습니다.

간결한 구문은 원시 코사인 유사성 점수를 반환합니다.

{ $similarityCosine: [ <vector1>, <vector2> ] }

전체 구문은 선택적 정규화 매개변수를 허용합니다.

{
$similarityCosine: {
vectors: [ <vector1>, <vector2> ],
score: <boolean>
}
}

전체 구문을 사용하는 경우 은 다음 필드를$similarityCosine 허용합니다.

필드
유형
필요성
설명

vectors

배열

필수 사항

정확히 두 개의 표현식으로 구성된 배열입니다. 각 표현식 숫자 값의 배열 또는 binData 값으로 해석되어야 합니다. 두 벡터의 길이는 모두 같아야 합니다.

score

부울

옵션

true인 경우 (1 + cosine) / 2 공식을 사용하여 [0, 1] 범위 에서 정규화된 점수를 반환합니다. 기본값은 false입니다.

표현식에 대한 자세한 내용은 표현식을 참조하세요.

인수 null 중 하나가 로 해석되거나 누락된 필드$similarityCosine 참조하는 경우 null 는 를 반환합니다.

두 입력 벡터 중 하나의 크기가 0인 경우(즉, 모든 요소가 인 0 경우)$similarityCosine0 를 반환합니다.

은 를$similarityCosine 반환합니다.double score false 이(가)( 기본값)인 경우 결과는 범위 의 원시 코사인 유사성 값입니다.[-1, 1]

  • 1 는 벡터가 동일한 방향을 가리키고 점 을 나타냅니다.

  • 0 는 벡터가 직교임을 나타냅니다.

  • -1 는 벡터가 반대 방향을 가리키고 점 나타냅니다.

scoretrue인 경우 결과는 (1 + cosine) / 2 공식을 사용하여 [0, 1] 범위 로 정규화됩니다.

$similarityCosine 다음과 같은 경우 오류를 반환합니다.

  • 두 인수 모두 배열 또는 binData 값으로 해석되지 않습니다.

  • 입력 배열 또는 binData 값의 길이가 다릅니다.

  • 두 배열 중 하나에 숫자가 아닌 요소가 포함되어 있습니다.

다음 예시 vectors 컬렉션 사용합니다.

db.vectors.insertMany( [
{ _id: 1, a: [1, 2, 3], b: [1, 2, 3] },
{ _id: 2, a: [1, 2, 3], b: [3, 2, 1] },
{ _id: 3, a: [1, 2, 3], b: [4, 5, 6] }
] )

다음 집계 파이프라인 각 문서 의 a 필드와 b 필드 간의 코사인 유사성을 계산하고 원본 점수와 정규화된 점수를 모두 반환합니다.

db.vectors.aggregate( [
{
$project: {
raw: { $similarityCosine: [ "$a", "$b" ] },
normalized: {
$similarityCosine: {
vectors: [ "$a", "$b" ],
score: true
}
}
}
}
] )

이 연산은 다음과 같은 결과를 반환합니다.

{ _id: 1, raw: 1, normalized: 1 }
{ _id: 2, raw: 0.7142857142857143,
normalized: 0.8571428571428571 }
{ _id: 3, raw: 0.9746318461970762,
normalized: 0.9873159230985381 }

돌아가기

$sigmoid

이 페이지의 내용