文字嵌入指南

MediaPipe 文字嵌入工具工作可讓您建立文字資料的數值表示法,以擷取其語意含義。此功能經常使用數學比較技術 (例如 Cosine Similarity) 來比較兩個文字的語意相似度。這項工作會使用機器學習 (ML) 模型對文字資料執行作業,並將文字資料的數字表示法輸出為高維度的特徵向量清單 (又稱為嵌入向量),其提供浮點或量化格式。

試試看!

開始使用

如要開始使用這項工作,請按照目標平台適用的任一實作指南操作。下列平台專用指南將逐步引導您完成這項工作的基本實作方式,包括建議的模型,以及含有建議設定選項的程式碼範例:

任務詳細資料

本節說明這項工作的功能、輸入、輸出和設定選項。

功能

  • 輸入文字處理 - 針對不含圖內代碼化的模型,支援圖形外的代碼化。
  • 嵌入相似度計算 - 內建公用程式函式,可以計算兩個特徵向量之間的餘弦相似度
  • 量化 - 支援特徵向量的純量量化。
工作輸入內容 工作輸出內容
文字嵌入程式接受下列輸入資料類型:
  • 字串
文字嵌入程式會輸出包含以下內容的嵌入清單:
  • 嵌入:以浮點格式或純量化的地圖項目向量本身。
  • 頭部指數:產生此嵌入項目的頭部索引。
  • 標題名稱 (選填):產生此嵌入的頭部名稱。

設定選項

這項工作有以下設定選項:

選項名稱 說明 值範圍 預設值
l2_normalize 是否使用 L2 正規化傳回的特徵向量。只有在模型不含原生 L2_NORMALIZATION TFLite Op 的情況下,才能使用這個選項。在大多數情況下,已經是此情況,L2 正規化是透過 TFLite 推論達成,不需要使用這個選項。 Boolean False
quantize 是否應透過純量量化,將傳回的嵌入量化為位元組。以隱含方式假設嵌入為單位標準,因此任何維度保證在 [-1.0, 1.0] 中都有一個值。如果並非如此,請使用 l2_正規化選項。 Boolean False

模型

當您開始以這項工作進行開發時,我們會提供預設的建議模型。

這個模型採用雙重編碼器架構,並以各種問題答案資料集進行訓練。

請參考以下兩組語句:

  • (「這是個迷人,而且經常影響了旅程」、「美好的旅程是美好又美好的旅程」)
  • (「我喜歡我的手機」、「我討厭我的手機」
  • (「這家餐廳好吃」、「我們必須仔細檢查計畫的詳細資料」)

前兩組文字嵌入的餘弦相似度會高於第三組的嵌入,因為前兩組語句分別共用一個「行程情緒」和「電話看法」主題,而第三組句子則不會有共同的主題。

請注意,雖然第二組的兩個語句具有反對的情緒,但相似度分數很高,因為這兩個語句有共同的主題。

模型名稱 輸入形狀 量化類型 版本
Universal Sentence Encoder 字串、字串、字串 無 (float32) 最新

工作基準

以下為整個管道根據上述預先訓練模型所產生的工作基準。延遲時間結果是 Pixel 6 使用 CPU / GPU 的平均延遲時間。

模型名稱 CPU 延遲時間 GPU 延遲時間
Universal Sentence Encoder 18.21 毫秒 -