MediaPipe Text Embedder 工作可讓您建立文字資料的數值表示法,以擷取語意。以下操作說明將說明如何使用網頁和 JavaScript 應用程式的 Text Embedder。
如要進一步瞭解這項工作的能力、模型和設定選項,請參閱總覽。
程式碼範例
Text Embedder 的範例程式碼提供以 JavaScript 完整實作這項工作的程式碼,供您參考。這段程式碼可協助您測試這項工作,並開始建構自己的文字嵌入應用程式。您只需使用網路瀏覽器,即可查看、執行及編輯文字嵌入器範例。
設定
本節說明設定開發環境和程式碼專案的主要步驟,以便使用 Text Embedder。如要瞭解如何設定開發環境以使用 MediaPipe 工作,包括平台版本規定,請參閱 Web 設定指南。
JavaScript 套件
Text Embedder 程式碼可透過 @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 工作需要與這項工作相容的訓練模型。如要進一步瞭解 Text Embedder 適用的預先訓練模型,請參閱工作總覽的「模型」部分。
選取並下載模型,然後儲存在專案目錄中:
<dev-project-root>/app/shared/models
建立工作
使用其中一個 Text Embedder 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_NORMALIZATION TFLite 運算,因此透過 TFLite 推論即可完成 L2 正規化,不需要這個選項。 | Boolean |
False |
quantize |
是否應透過純量量化,將傳回的嵌入量化為位元組。系統會隱含假設嵌入是單位範數,因此任何維度的值保證介於 [-1.0, 1.0]。如果不是這種情況,請使用 l2Normalize 選項。 | Boolean |
False |
準備資料
Text Embedder 可處理文字 (string) 資料。這項工作會處理資料輸入預先處理作業,包括斷詞和張量預先處理。所有前置處理作業都會在 embed 函式中處理。不需要事先對輸入文字進行額外預先處理。
const inputText = "The input text to be embedded.";
執行工作
Text Embedder 會使用 embed 函式觸發推論。如果是文字嵌入,這表示要傳回輸入文字的嵌入向量。
以下程式碼示範如何使用工作模型執行處理作業。
// Wait to run the function until inner text is set
const embeddingResult = textEmbedder.embed(
inputText
);
處理及顯示結果
Text Embedder 會輸出 TextEmbedderResult,其中包含輸入文字的嵌入清單 (浮點或純量量化)。
以下是這項工作的輸出資料範例:
TextEmbedderResult:
Embedding #0 (sole embedding head):
float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
head_index: 0
您可以使用 TextEmbedder.cosineSimilarity 函式比較兩個嵌入的語意相似度。請參閱以下程式碼範例。
// Compute cosine similarity.
const similarity = TextEmbedder.cosineSimilarity(
embeddingResult.embeddings[0],
otherEmbeddingResult.embeddings[0]);
Text Embedder 範例程式碼會示範如何顯示工作傳回的嵌入結果,詳情請參閱範例。