埋め込みモデルは、ドキュメントのチャンク(つまり、文章の一部)を、数値表現またはベクトルに変換するトランスフォーマー・ベースのニューラル・ネットワークです。同様の意味またはセマンティックを持つコンテンツは、以下の画像のように、潜在空間内の同様の表現にマッピングされます。
言語のベクトル化により、従来のキーワード(語彙)検索ではなく、「ドキュメントとのチャット」やセマンティック検索などのAI搭載アプリケーションが可能になります。
選択した埋め込みモデルは、RAGシステムの検索精度、待ち時間、および計算コストに大きく影響します。埋め込みモデルの選択はサイズに大きく影響を受け、埋め込みの次元とモデル・パラメーターの数という2つの特性によって大きく左右されます。
埋め込みモデルが大きいと、通常、検索性能は向上しますが、レイテンシー、ストレージ、計算(財務)コストが増加します。逆に、埋め込みモデルが小さいほど、通常、検索パフォーマンスは低下しますが、占有のメモリーは小さく、必要な計算能力が少なくなり、実行時の速度は高くなります。性能要件と利用可能なリソースのバランスをとる埋め込みモデルを選択します。
特定の埋め込みモデルは、言語固有(例:スペイン語の顧客向けに構築されたスペイン語の埋め込みモデル)のものであり、ドメイン固有(例、医療ファイル上でRAGを実現にするために腫瘍学の用語でトレーニングされたモデル)のものです。
watsonxでデプロイされている埋め込みモデル(IBMが開発したSlateモデル、または以下のサードパーティー・モデル)を使用することをお勧めします。各モデルの詳細については、このドキュメントをお読みください。請求クラスの詳細については、watsonx請求プランをご覧ください。
IBM Slateモデル
| モデル名 | APIモデルID | 請求クラス | 最大インプットトークン | 次元数 | 詳細はこちら |
|---|---|---|---|---|---|
| slate-125m-english-rtrvr | ibm/slate-125m-english-rtrvr | クラスC1 | 512 | 768 | モデルカード |
| slate-30m-english-rtrvr | ibm/slate-30m-english-rtrvr | クラスC1 | 512 | 384 | モデルカード |
slate-125m-english-rtrvr基盤モデルはIBMによって提供されます。slate-125m-english-rtrvr基盤モデルは、クエリー、文章、ドキュメントなどのさまざまなインプットに対する埋め込みを生成します。トレーニングの目的は、クエリーと文章の間のコサイン類似性を最大化することです。このプロセスにより、2つの文埋め込みが生成されます。1つは質問を表すもので、もう1つは文章を表すもので、コサイン類似度を通じてこの2つを比較できます。
使用法:slate-30m-english-rtrvrモデルよりも2~3倍低速ですが、性能はわずかに優れています。対応言語:英語
slate-30m-english-rtrvr基盤モデルは、どちらもIBMが提供するslate-125m-english-rtrvrの蒸留バージョンです。slate-30m-english-rtrvr埋め込みモデルは、2つのテキスト入力間のコサイン類似性を最大化するようにトレーニングされるため、後で類似性に基づいて埋め込みを評価できます。
使用法:slate-125m-english-rtrvrモデルよりも2~3倍高速で、性能スコアはわずかに低くなります。対応言語:英語
all-minilm-l12-v2埋め込みモデルは、オープンソースの自然言語処理(NLP)およびコンピューター・ビジョン(CV)コミュニティーによって構築され、HuggingFaceによって提供されています。
対応言語:英語
用途:英語以外の言語のテキスト埋め込みを生成するユースケースに適しています。
サポートされる自然言語:最大100言語詳細についてはモデルカードを参照してください。
サポートされている埋め込みモデルの詳細については、watsonxのドキュメンテーションを参照してください。
ibm-watsonx-ai Pythonライブラリーをインストールする
pip install -U ibm-watsonx-ai
watsonx埋め込みAPIと利用可能な埋め込みモデルを使用してテキスト埋め込みを生成します。
from ibm_watsonx_ai.metanames import EmbedTextParamsMetaNames as EmbedParams
from ibm_watsonx_ai.foundation_models.utils.enums import EmbeddingTypes
from ibm_watsonx_ai.foundation_models import Embeddings
# truncate_input_tokensを、使用している埋め込みモデルの最大許可トークン数と同じかそれ以下の値に設定します。この値が指定されず、インプットにモデルが処理できるよりも多くのトークンが含まれている場合は、エラーが生成されます。
embed_params = {
EmbedParams.TRUNCATE_INPUT_TOKENS: 128,
EmbedParams.RETURN_OPTIONS: {
'input_text': True
}
}
embedding = Embeddings(
model_id=EmbeddingTypes.IBM_SLATE_30M_ENG,
credentials=credentials,
params=embed_params,
project_id=project_id,
space_id=None,
verify=False
)
q = [
"基盤モデルとは、幅広い下流タスクに適応可能な大規模な生成AIモデルのことです。",
"生成AIは、テキスト、ソースコード、画像、音声、合成データなど、さまざまな種類のコンテンツを生成できるAIアルゴリズムの種類です。"
]
embedding_vectors = embedding.embed_documents(texts=q)
print(embedding_vectors)
watsonx Graniteモデルシリーズと埋め込み、Chroma、LangChainを使って質問に答える(RAG)
更新日:2024年11月15日