テキスト埋め込みツールを統合する。

テキスト埋め込みを使用すると、高次元の特徴ベクトルにテキストを埋め込み可能 セマンティックな意味を表現し、それを特徴と比較できます。 ベクトルに変換して、意味的類似性を評価できます。

従来の テキスト検索、 テキスト埋め込みを使用すると、テキスト間の類似度をその場で計算できます。 (コーパスから構築された事前定義されたインデックスを使用しません)。

タスク ライブラリの TextEmbedder API を使用してカスタム テキスト埋め込み機能をデプロイする 管理できます。

TextEmbedder API の主な機能

  • グラフ内またはグラフ外を含む入力テキスト処理 ワードピース または トークン化も検討する必要があります。

  • 指標を計算するための組み込みのユーティリティ関数 モデル間のコサイン類似度 特徴ベクトルが作成されます。

サポートされているテキスト埋め込みモデル

次のモデルは、TextEmbedder との互換性が保証されています API

C++ で推論を実行する

// Initialization.
TextEmbedderOptions options:
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<TextEmbedder> text_embedder = TextEmbedder::CreateFromOptions(options).value();

// Run inference with your two inputs, `input_text1` and `input_text2`.
const EmbeddingResult result_1 = text_embedder->Embed(input_text1);
const EmbeddingResult result_2 = text_embedder->Embed(input_text2);

// Compute cosine similarity.
double similarity = TextEmbedder::CosineSimilarity(
    result_1.embeddings[0].feature_vector()
    result_2.embeddings[0].feature_vector());

詳しくは、 ソースコード TextEmbedder を構成するその他のオプションをご覧ください。

Python で推論を実行する

ステップ 1: TensorFlow Lite サポート Pypi パッケージをインストールする

以下を使用して、TensorFlow Lite サポート Pypi パッケージをインストールできます。 command:

pip install tflite-support

ステップ 2: モデルを使用する

from tflite_support.task import text

# Initialization.
text_embedder = text.TextEmbedder.create_from_file(model_path)

# Run inference on two texts.
result_1 = text_embedder.embed(text_1)
result_2 = text_embedder.embed(text_2)

# Compute cosine similarity.
feature_vector_1 = result_1.embeddings[0].feature_vector
feature_vector_2 = result_2.embeddings[0].feature_vector
similarity = text_embedder.cosine_similarity(
    result_1.embeddings[0].feature_vector, result_2.embeddings[0].feature_vector)

詳しくは、 ソースコード TextEmbedder を構成するその他のオプションをご覧ください。

検索結果の例

正規化された特徴ベクトル間のコサイン類似度により、-1 のスコアが返されます。 および 1.高いほど良い。つまり、コサイン類似度が 1 であれば、2 つのベクトルは あります。

Cosine similarity: 0.954312

シンプルな TextEmbedder 用の CLI デモツール 独自のモデルとテストデータで トレーニングできます

モデルの互換性要件

TextEmbedder API は、必須の TFLite モデルを想定しています。 TFLite モデル メタデータ

主に次の 3 種類のモデルがサポートされています。

  • BERT ベースのモデル( ソースコード をご覧ください)。

    • 正確に 3 つの入力テンソル(kTfLiteString)

      • ID テンソル。メタデータ名は「ids」、
      • メタデータ名が「mask」のマスク テンソル。
      • セグメント ID のテンソル(メタデータ名「segment_ids」)
    • 1 つの出力テンソル(kTfLiteUInt8/kTfLiteFloat32)

      • 対応する N コンポーネントは、値の N ディメンションに対応する 特徴ベクトルを返します。
      • 2 つまたは 4 つのディメンション(例: [1 x N][1 x 1 x 1 x N])。
    • Wordpiece/Sentencepiece Tokenizer 用の input_process_units

  • ユニバーサル センテンス エンコーダ ベースのモデル( ソースコード をご覧ください)。

    • 正確に 3 つの入力テンソル(kTfLiteString)

      • メタデータ名「inp_text」のテキスト テンソルをクエリします。
      • メタデータ名「res_context」を持つレスポンス コンテキスト テンソル。
      • メタデータ名「res_text」のレスポンス テキストのテンソル。
    • 厳密に 2 つの出力テンソル(kTfLiteUInt8/kTfLiteFloat32)

      • メタデータ名「query_encoding」を持つクエリ エンコード テンソル。
      • メタデータ名が「response_encoding」のレスポンス エンコード テンソル。
      • どちらも、ディメンションの N ディメンションに対応する N コンポーネントを持ちます。 特徴ベクトルを返します。
      • どちらも 2 つまたは 4 つのディメンション([1 x N] または [1 x 1 x 1 x N])を持つ。
  • 以下を備えた任意のテキスト埋め込みモデル:

    • 入力テキスト テンソル(kTfLiteString)
    • 1 つ以上の出力エンベディング テンソル(kTfLiteUInt8/kTfLiteFloat32)

      • 対応する N コンポーネントは、値の N ディメンションに対応する 特徴ベクトルを返します。
      • 2 つまたは 4 つのディメンション(例: [1 x N][1 x 1 x 1 x N])。