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

$slimalityCosine(式)

バージョン8.3の新機能

$similarityCosine

配列または binData 値として表される 2 つの数値ベクトル間のコサイン類似度を返します。コサイン類似度は、2 つのベクトル間の角度のコサインを測定し、その方向がどれだけ類似しているかを示します。

$similarityCosine には 2 つの構文形式があります。

簡潔な構文では、以下のような未加工のコサイン類似度スコアが返されます。

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

完全な構文は任意の正規化パラメータを受け入れます。

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

完全な構文を使用する場合、$similarityCosine は次のフィールドを受け入れます。

フィールド
タイプ
必要性
説明

vectors

配列

必須

正確に 2 つの式の配列。各式は、数値の配列または binData 値に解決される必要があります。どちらのベクトルの長さは等しくなければなりません。

score

ブール値

任意

true の場合、 は式 (1 + cosine) / 2 を使用して、範囲 [0, 1] 内の正規化されたスコアを返します。デフォルトは false です。

式の詳細については、「 式 」を参照してください。

null引数が に解決されるか、欠落しているフィールドを参照する場合、$similarityCosine nullは を返します。

いずれかの入力ベクトルの大きさがゼロ(つまり、すべての要素が0 )の場合、$similarityCosine 0は を返します。

$similarityCosine doubleを返します。 がscorefalse (デフォルトの)の場合、結果は の範囲内の未加工のコサイン類似度の値です。[-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

項目一覧