> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/workflows/ja/burokku/blocks/advanced-blocks/cosine-similarity.md).

# コサイン類似度

2つの埋め込みベクトルの間の角度の余弦を計算してコサイン類似度を求め、分布の大きさに関係なく方向の類似性を測定することで、類似性比較、意味的マッチング、埋め込みベースの検索、類似性ベースのフィルタリングのワークフローを実現します。

## このブロックの仕組み

このブロックは、2つのベクトル間の角度の余弦に基づく類似度指標であるコサイン類似度を計算します。このブロックは次を行います:

1. ワークフローのステップから2つの埋め込みベクトルを受け取ります（例: CLIP、Perception Encoder、またはその他の埋め込みモデルから）
2. 埋め込み次元を検証します:
   * 両方の埋め込みが同じ次元数（同じ要素数）であることを確認します
   * 次元が一致しない場合はエラーを発生させます
3. コサイン類似度を計算します:
   * 2つの埋め込みベクトルの内積を計算します
   * 各埋め込みベクトルのL2ノルム（大きさ）を計算します
   * 内積を2つのノルムの積で割ります: similarity = (a · b) / (||a|| × ||b||)
   * これはベクトル間の角度の余弦を表し、方向の類似性を示します
4. 類似度スコアを返します:
   * -1から1の範囲の類似度値を出力します
   * 値が1: ベクトルが同じ方向を向いている（同一または比例） - 最大の類似性
   * 値が0: ベクトルが直交している（垂直） - 類似性なし
   * 値が-1: ベクトルが反対方向を向いている - 最大の非類似性
   * 値が大きいほど（1に近いほど）類似性が高いことを示します

コサイン類似度は大きさに依存しないため、サイズではなく方向の類似性を測定します。同じ方向を向く2つのベクトルは、大きさが異なっていても高いコサイン類似度を持ちます。そのため、大きさは変わる可能性がある一方で、意味的な内容（方向）が重要な埋め込みを比較するのに最適です。

## 一般的な使用例

* **意味類似度の比較**: 埋め込みを使用して、画像、テキスト、またはその他のデータ型間の意味類似度を比較します（例: 画像埋め込みの比較、テキストと画像のマッチング、類似コンテンツの検索）。これにより、類似性比較ワークフローを実現します
* **埋め込みベース検索**: 類似度スコアを埋め込みベースの検索と取得に使用します（例: 類似画像の検索、埋め込み類似度による検索、類似コンテンツの取得）。これにより、埋め込み検索ワークフローを実現します
* **マルチモーダル間マッチング**: 異なるモダリティ間で埋め込みをマッチングします（例: 画像とテキストのマッチング、テキスト説明に一致する画像の検索、テキストと画像のマッチング）。これにより、マルチモーダル間マッチングワークフローを実現します
* **類似性ベースのフィルタリング**: 類似度しきい値に基づいてデータをフィルタリングします（例: 類似アイテムの絞り込み、類似度を使った重複の検出、ほぼ重複する項目の特定）。これにより、類似性フィルタリングワークフローを実現します
* **コンテンツのレコメンド**: 類似度スコアをコンテンツの推薦とマッチングに使用します（例: 類似コンテンツの推薦、関連アイテムのマッチング、類似製品の提案）。これにより、レコメンドワークフローを実現します
* **品質管理と検証**: 品質管理のために埋め込みを検証したり、埋め込みを比較したりします（例: 埋め込み品質の検証、一貫性のための埋め込み比較、埋め込み類似度の確認）。これにより、品質管理ワークフローを実現します

## 他のブロックへの接続

このブロックは埋め込みモデルのブロックから埋め込みを受け取り、類似度スコアを生成します:

* **埋め込みモデルブロックの後** （CLIP、Perception Encoder など）埋め込みを比較します（例: 画像とテキストの埋め込みを比較、複数の埋め込みを比較、類似度スコアを計算）。これにより、埋め込みから類似度へのワークフローを実現します
* **ロジックブロックの前** Continue If のように、条件で類似度スコアを使用します（例: 類似度がしきい値を超えた場合に続行、類似度に基づいてフィルタリング、類似度を使って意思決定）。これにより、類似性ベースの意思決定ワークフローを実現します
* **フィルタリングブロックの前** 類似性に基づいてフィルタリングします（例: 類似度しきい値で絞り込み、低類似度アイテムを削除、高類似度の一致を保持）。これにより、類似度からフィルタへのワークフローを実現します
* **データ保存ブロックの前** 類似度スコアを保存します（例: 類似度メトリクスを保存、類似度比較をログに記録、類似度結果を保存）。これにより、類似度保存ワークフローを実現します
* **通知ブロックの前** 類似性ベースのアラートを送信します（例: 高類似度の一致を通知、類似度の変化をアラート、類似度レポートを送信）。これにより、類似度通知ワークフローを実現します
* **ワークフロー出力において** 類似度スコアを最終出力として提供します（例: 類似度比較結果、マッチング結果、類似度メトリクス）。これにより、類似度出力ワークフローを実現します

## 要件

このブロックは、同じ次元数（同じ要素数）の2つの埋め込みベクトルを必要とします。埋め込みは任意の埋め込みモデル（CLIP、Perception Encoder など）によるものでもよく、画像、テキスト、その他のデータ型を表現できます。埋め込みは浮動小数点数のリストとして渡されます。このブロックは、L2ノルムの積で内積を割ることでコサイン類似度を計算し、-1から1の間の類似度スコアを生成します。1に近い値はより高い類似性を示し、0に近い値は直交ベクトルを示し、-1に近い値は反対方向を示します。

### 型識別子

ステップで次の識別子を使用してください `"type"` フィールド： `roboflow_core/cosine_similarity@v1` ワークフローにこのブロックをステップとして追加するには。

### プロパティ

| **名前** | **型** | **説明**              | 参照 |
| ------ | ----- | ------------------- | -- |
| `name` | `str` | ワークフロー内のステップの一意の名前。 | ❌  |

この **参照** 列は、で利用可能な動的値を使ってプロパティをパラメータ化できる可能性を示します `ワークフロー` 実行時。参照 *バインディング* 詳細は。

### 入力と出力のバインディング

利用可能な接続は、そのバインディング種別によって異なります。どのバインディング種別が `コサイン類似度` のバージョン `v1` あるか確認してください。

<details>

<summary>入力と出力のバインディング</summary>

* 入力
  * `embedding_1` ([*`埋め込み`*](/workflows/ja/gaido/developer-guide/kinds/embedding.md)）: 比較する最初の埋め込みベクトル。embedding\_2 と同じ次元数（同じ要素数）である必要があります。任意の埋め込みモデル（CLIP、Perception Encoder など）によるものでもよく、画像、テキスト、その他のデータ型を表現できます。埋め込みベクトルは、高次元の特徴表現を表す浮動小数点数のリストです。
  * `embedding_2` ([*`埋め込み`*](/workflows/ja/gaido/developer-guide/kinds/embedding.md)）: 比較する2番目の埋め込みベクトル。embedding\_1 と同じ次元数（同じ要素数）である必要があります。任意の埋め込みモデル（CLIP、Perception Encoder など）によるものでもよく、画像、テキスト、その他のデータ型を表現できます。埋め込みベクトルは、高次元の特徴表現を表す浮動小数点数のリストです。コサイン類似度は embedding\_1 と embedding\_2 の間の類似性を測定します。
* 出力
  * `類似度` ([`float`](/workflows/ja/gaido/developer-guide/kinds/float.md)): 浮動小数値。

</details>

<details>

<summary>JSON 定義の例</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/cosine_similarity@v1",
	    "embedding_1": "$steps.clip_image.embedding",
	    "embedding_2": "$steps.clip_text.embedding"
	}
```

</details>
