MediaPipe Text Embedder タスクを使用すると、テキストデータの数値表現を作成して、 意味を取得します。ここでは、 ウェブアプリと JavaScript アプリ用のテキスト埋め込み。
機能、モデル、構成オプションの詳細については、 概要をご覧ください。
サンプルコード
テキスト埋め込みのサンプルコードは、このコードを完全に実装しています。 タスクを示しています。このコードは、このタスクのテストと 独自のテキスト エンベディング アプリの作成を開始します。BigQuery では 編集して テキスト埋め込みのコード例 できます。
セットアップ
このセクションでは、開発環境をセットアップする主な手順と テキスト エンベディングを使用するコード プロジェクトを作成することにしました。一般的な情報については、 MediaPipe タスクを使用するための開発環境の設定 プラットフォーム バージョンの要件については、 ウェブ用の設定ガイド
JavaScript パッケージ
テキスト埋め込みコードは、
@mediapipe/tasks-text
パッケージ化されています。これらのライブラリは、
プラットフォーム
設定ガイド
ローカル ステージング用に次のコードを使用して、必要なパッケージをインストールできます。 次のコマンドを使用します。
npm install @mediapipe/tasks-text
サーバーにデプロイする場合は、コンテンツ配信 ネットワーク(CDN)サービス(jsDelivr など)を 次のように、HTML ページに直接コードを追加します。
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/index.js"
crossorigin="anonymous"></script>
</head>
モデル
MediaPipe Text Embedder タスクには、この変換と互換性のあるトレーニング済みモデルが必要です タスクを実行します。テキスト エンベディングで利用可能なトレーニング済みモデルについて詳しくは、以下をご覧ください。 タスクの概要のモデル セクションをご覧ください。
モデルを選択してダウンロードし、プロジェクト ディレクトリに保存します。
<dev-project-root>/app/shared/models
タスクを作成する
テキスト エンベディングの createFrom...()
関数のいずれかを使用して、以下を行います。
タスクを準備します。createFromModelPath()
を使用できます。
トレーニング済みモデルファイルの相対パスまたは絶対パスで関数を呼び出します。コード
以下の例は createFromOptions()
の使用方法を示しています。
使用します。使用可能な構成オプションの詳細については、このモジュールの
構成オプション。
次のコードは、このタスクをビルドして構成する方法を示しています。
async function createEmbedder() {
const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
textEmbedder = await TextEmbedder.createFromOptions(
textFiles,
{
baseOptions: {
modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_embedder/universal_sentence_encoder.tflite`
},
quantize: true
}
);
}
createEmbedder();
構成オプション
このタスクには、ウェブと JavaScript 用に次の構成オプションがあります。 アプリケーション:
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
l2Normalize |
返された特徴ベクトルを L2 ノルムで正規化するかどうか。 このオプションは、モデルにネイティブ L2_NORMALIZATION TFLite 演算ほとんどの場合はこれがすでに行われており、 そのため、L2 正規化は TFLite 推論によって実現され、 指定します。 | Boolean |
False |
quantize |
返されたエンベディングを、次を使用してバイトに量子化するかどうか スカラー量子化です。エンベディングは暗黙的にユニットノルムであると想定され、 したがって、どのディメンションも [-1.0, 1.0] の範囲の値を持つことが保証されます。使用 そうでない場合は l2Normalize オプションを使用します。 | Boolean |
False |
データの準備
テキスト エンベディングはテキスト(string
)データを処理します。タスクは、
データ入力の前処理(トークン化やテンソルの前処理など)すべて
前処理は embed
関数内で処理されます。データ アナリストが
を使用して、入力テキストを事前に追加前処理します。
const inputText = "The input text to be embedded.";
タスクを実行する
テキスト エンベディングは、embed
関数を使用して推論をトリガーします。テキストの場合
エンべディングとは、入力テキストのエンべディング ベクトルを返すことを意味します。
次のコードは、タスクモデルを使用して処理を実行する方法を示しています。
// Wait to run the function until inner text is set
const embeddingResult = textEmbedder.embed(
inputText
);
結果の処理と表示
テキスト エンベディングは、テキスト エンベディングのリストを含む TextEmbedderResult
を出力します。
入力テキストのエンべディング(浮動小数点またはスカラー量子化)。
このタスクからの出力データの例を次に示します。
TextEmbedderResult:
Embedding #0 (sole embedding head):
float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
head_index: 0
2 つのエンベディングの意味的類似度は、
TextEmbedder.cosineSimilarity
関数を使用します。詳細については、次のコードをご覧ください。
例です。
// Compute cosine similarity.
const similarity = TextEmbedder.cosineSimilarity(
embeddingResult.embeddings[0],
otherEmbeddingResult.embeddings[0]);
テキスト埋め込みのサンプルコードは、埋め込み機能を表示する方法を示しています。 結果については、 コードサンプル をご覧ください。