このセクションでは、 SentenceTransformersフレームワークに基づいてテキストの埋め込みを生成するために使用できる最も便利なオプションの 1 つについて学習します。
このフレームワークで利用できるモデルはコンピューターにインストールでき、GPU がなくても十分にパフォーマンスを発揮し、無料で使用できるため、埋め込みの使用法を探求して理解を深める際には、SentenceTransformers を使用することをお勧めします。
SentenceTransformersをインストールする
SentenceTransformers フレームワークは、Python パッケージとしてインストールされます。Python 仮想環境がアクティブになっていることを確認し、ターミナルで次のコマンドを実行してこのフレームワークをインストールします。
いつものように、プロジェクトに新しい依存関係を追加するたびに、要件ファイルを更新することをお勧めします。
モデルの選択
次のタスクは、埋め込み生成に使用する機械学習モデルを決定することです。ドキュメントには事前トレーニング済みのモデルのリストがあります。SentenceTransformers は非常に人気のあるフレームワークであるため、フレームワークに直接関係のない研究者によって作成された互換性のあるモデルも存在します。使用できるモデルの完全なリストを確認するには、HuggingFace のSentenceTransformersタグを確認してください。
このチュートリアルでは、どのモデルでも十分なので、モデルの選択について深く考える必要はありません。SentenceTransformers のドキュメントには、事前トレーニング済みモデルに関する次の注意事項が含まれています。
「all-* モデルは、利用可能なすべてのトレーニング データ (10 億を超えるトレーニング ペア) でトレーニングされており、汎用モデルとして設計されています。all-mpnet-base-v2 モデルは最高の品質を提供しますが、all-MiniLM-L6-v2 は 5 倍高速でありながら良好な品質を提供します。
これは、 all-MiniLM-L6-v2モデルが速度と品質のバランスが取れた適切な選択肢であることを示唆しているようですので、このモデルを使用しましょう。表内でこのモデルを見つけて、「情報」アイコンをクリックすると、そのモデルに関する情報が表示されます。

選択したモデルについて知っておくとよい興味深い詳細は、生成された埋め込みの長さ、つまり結果のベクトルが持つ数値または次元の数です。これは、必要なストレージの量に直接影響するため重要です。all-MiniLM-L6-v2の場合、生成されたベクトルは 384 次元になります。
モデルの読み込み
次の Python コードは、モデルをロードする方法を示しています。これを Python シェルで試すことができます。
これを初めて実行すると、モデルがダウンロードされ、仮想環境にインストールされるため、呼び出しが返されるまでに時間がかかる場合があります。モデルがインストールされると、インスタンス化にそれほど時間はかかりません。
埋め込みの生成
モデルがインスタンス化されたので、埋め込みを生成する準備が整いました。これを行うには、ソース テキストをmodel.encode()メソッドに渡します。
結果は、埋め込みを構成するすべての数値を含む配列です。ご存知のとおり、選択したモデルによって生成された埋め込みは 384 次元であるため、これがembedding配列の長さになります。