0 / 0
資料の 英語版 に戻る
埋め込み
最終更新: 2024年12月12日
埋め込み

埋め込みモデルを使用して、文や一節の意味を捉えるテキスト埋め込みを作成する。 これらのモデルは、サポートベクターマシンのような分類器と一緒に使うことができる。 モデルを埋め込むことは、検索を利用した生成タスクにも役立つ。

次の図は、エンベッディングをサポートした検索機能付き生成パターンを示している。

検索補強生成の入力にベクトルストアから得られた検索結果を加えることを示す図

エンベッディングをサポートする検索機能付き生成パターンには、以下のステップが含まれる:

  1. コンテンツをテキスト埋め込みに変換し、ベクターデータストアに保存します。
  2. 同じ埋め込みモデルを使用して、ユーザー入力をテキスト埋め込みに変換する。
  3. ユーザーの質問に関連するコンテンツをナレッジベースで類似検索または意味検索します。
  4. 最も関連性の高い検索結果を文脈としてプロンプトに取り込み、「次の文章に書かれている情報のみを使って、次の質問に答えてください」といった指示を加えます
  5. 組み合わされたプロンプトテキスト(指示+検索結果+質問)をfoundation modelモデルに送信する。
  6. foundation modelは、プロンプトからの文脈情報を使って事実に基づいた答えを生成する。

詳しくは、以下を参照してください。

USEエンベッディング

USEエンベッディングは、TFHubで利用可能なGoogleUniversal Sentence Encoderエンベッディングのラッパーです。 これらの埋め込みは、文書分類 SVM アルゴリズムで使用されます。 事前学習されたUSEエンベッディングとその対応言語のリストについては、Included pretrained USE embeddingsをご覧ください

USE 埋め込みを使用する場合は、以下の点を考慮してください。

  • タスクに英語のテキストが含まれる場合は、embedding_use_en_stockを選択します。

  • タスクに英語以外の言語のテキストが含まれている場合、またはマルチリンガル・モデルをトレーニングする場合は、マルチリンガル USE 埋め込みのいずれかを選択します。

  • USE 埋め込みは、以下に説明するように、トレーニングされたモデルの品質と推論時のスループットとの間で異なるトレードオフを示します。 結果の品質と、ユース・ケースに適した推論スループットとの間のトレードオフを決定するために、さまざまな埋め込みを試してください。

    • embedding_use_multi_smallの品質は妥当ですが、推論時には高速です。
    • embedding_use_en_stockは英語のみのバージョンのembedding_embedding_use_multi_smallであるため、サイズが小さくなり、推論のスループットが高くなります。
    • embedding_use_multi_largeは Transformer アーキテクチャーに基づいているため、結果の品質が向上し、推論時のスループットが低下します。

コード・サンプル

import watson_nlp

syntax_model = watson_nlp.load("syntax_izumo_en_stock")
embeddings_model = watson_nlp.load("embedding_use_en_stock")

text = "python"
syntax_doc = syntax_model.run(text)
embedding = embeddings_model.run(syntax_doc)
print(embedding)

コードサンプルの出力

{
  "data": {
    "data": [
      -0.01909315399825573,
      -0.009827353060245514,
...
      0.008978910744190216,
      -0.0702751949429512
    ],
    "rows": 1,
    "cols": 512,
    "dtype": "float32"
  },
  "offsets": null,
  "producer_id": null
}

事前に学習されたUSE埋め込みを含む

以下の表に、使用可能な USE 埋め込み用の事前トレーニング済みブロックと、サポートされる言語をリストします。 言語コードおよび対応する言語のリストについては、『言語コード』を参照してください。

事前学習されたUSEエンベッディングとそのサポート言語のリスト
ブロック名 モデル名 サポート対象言語
use embedding_use_en_stock 英語のみ
use embedding_use_multi_small ar、de、el、en、es、fr、it、ja、ko、nb、nl、pl、pt、ru、th、tr、zh_tw、zh
use embedding_use_multi_large ar、de、el、en、es、fr、it、ja、ko、nb、nl、pl、pt、ru、th、tr、zh_tw、zh

GloVeエンベッディング

GloVe埋め込みはCNN分類器で使用される。

ブロック名:'embedding_glove__stock

対応言語:ar, de, en, es, fr, it, ja, ko, nl, pt, zh-cn

コード・サンプル

import watson_nlp

syntax_model = watson_nlp.load("syntax_izumo_en_stock")
embeddings_model = watson_nlp.load("embedding_glove_en_stock")

text = "python"
syntax_doc = syntax_model.run(text)
embedding = embeddings_model.run(syntax_doc)
print(embedding)

コードサンプルの出力

{
  "data": {
    "data": [
      -0.01909315399825573,
      -0.009827353060245514,
...
      0.008978910744190216,
      -0.0702751949429512
    ],
    "rows": 1,
    "cols": 512,
    "dtype": "float32"
  },
  "offsets": null,
  "producer_id": null
}

トランスフォーマー埋め込み

ブロック名

  • embedding_transformer_en_slate.125m
  • embedding_transformer_en_slate.30m

サポート対象言語

英語のみ

コード・サンプル

import watson_nlp

# embeddings_model = watson_nlp.load("embedding_transformer_en_slate.125m")
embeddings_model = watson_nlp.load("embedding_transformer_en_slate.30m")
text = "python"

embedding = embeddings_model.run(text)
print(embedding)

コードサンプルの出力

{
  "data": {
    "data": [
      -0.055536773055791855,
      0.008286023512482643,
      ...
      -0.3202415108680725,
      5.000295277568512e-05
    ],
    "rows": 1,
    "cols": 384,
    "dtype": "float32"
  },
  "offsets": null,
  "producer_id": {
    "name": "Transformer Embeddings",
    "version": "0.0.1"
  }
}

親トピック Watson自然言語処理タスクカタログ

生成 AI の検索と回答
これらの回答は、製品資料の内容に基づいて、 watsonx.ai のラージ言語モデルによって生成されます。 詳細