今日のRAGソリューションをより深く理解するために、詳細はこちらのRAG Cookbookを参照してください

Watson for Customer Careリードスペースをベースとして使用して色を変更したリードスペース。
概要

埋め込みモデルは、ドキュメントのチャンク(つまり、文章の一部)を、数値表現またはベクトルに変換するトランスフォーマー・ベースのニューラル・ネットワークです。同様の意味またはセマンティックを持つコンテンツは、以下の画像のように、潜在空間内の同様の表現にマッピングされます。

言語のベクトル化により、従来のキーワード(語彙)検索ではなく、「ドキュメントとのチャット」やセマンティック検索などのAI搭載アプリケーションが可能になります。

ベクトル空間内に関連するトピックを埋め込む概念を示す図。
検討事項

性能とコストのトレードオフ

選択した埋め込みモデルは、RAGシステムの検索精度、待ち時間、および計算コストに大きく影響します。埋め込みモデルの選択はサイズに大きく影響を受け、埋め込みの次元とモデル・パラメーターの数という2つの特性によって大きく左右されます。

埋め込みモデルが大きいと、通常、検索性能は向上しますが、レイテンシー、ストレージ、計算(財務)コストが増加します。逆に、埋め込みモデルが小さいほど、通常、検索パフォーマンスは低下しますが、占有のメモリーは小さく、必要な計算能力が少なくなり、実行時の速度は高くなります。性能要件と利用可能なリソースのバランスをとる埋め込みモデルを選択します。

特定の埋め込みモデルは、言語固有(例:スペイン語の顧客向けに構築されたスペイン語の埋め込みモデル)のものであり、ドメイン固有(例、医療ファイル上でRAGを実現にするために腫瘍学の用語でトレーニングされたモデル)のものです。

IBMソリューション

watsonxで利用可能な埋め込みモデル

watsonxでデプロイされている埋め込みモデル(IBMが開発したSlateモデル、または以下のサードパーティー・モデル)を使用することをお勧めします。各モデルの詳細については、このドキュメントをお読みください。請求クラスの詳細については、watsonx請求プランをご覧ください。

IBM Slateモデル

モデル名APIモデルID請求クラス最大インプットトークン次元数詳細はこちら
slate-125m-english-rtrvribm/slate-125m-english-rtrvrクラスC1                  512                768モデルカード
slate-30m-english-rtrvribm/slate-30m-english-rtrvrクラスC1                  512                384モデルカード

 

slate-125m-english-rtrvr

slate-125m-english-rtrvr基盤モデルはIBMによって提供されます。slate-125m-english-rtrvr基盤モデルは、クエリー、文章、ドキュメントなどのさまざまなインプットに対する埋め込みを生成します。トレーニングの目的は、クエリーと文章の間のコサイン類似性を最大化することです。このプロセスにより、2つの文埋め込みが生成されます。1つは質問を表すもので、もう1つは文章を表すもので、コサイン類似度を通じてこの2つを比較できます。

使用法:slate-30m-english-rtrvrモデルよりも2~3倍低速ですが、性能はわずかに優れています。対応言語:英語

slate-30m-english-rtrvr

slate-30m-english-rtrvr基盤モデルは、どちらもIBMが提供するslate-125m-english-rtrvrの蒸留バージョンです。slate-30m-english-rtrvr埋め込みモデルは、2つのテキスト入力間のコサイン類似性を最大化するようにトレーニングされるため、後で類似性に基づいて埋め込みを評価できます。

使用法:slate-125m-english-rtrvrモデルよりも2~3倍高速で、性能スコアはわずかに低くなります。対応言語:英語

watsonxで利用できるサードパーティの埋め込みモデル

モデル名APIモデルIDプロバイダー請求クラス最大インプットトークン次元数詳細はこちら
all-minilm-l12-v2sentence-transformers/all-minilm-l12-v2オープンソースの自然言語処理(NLP)およびコンピューター・ビジョン(CV)コミュニティークラスC1           256           384モデルカード
multilingual-e5-largeintfloat/multilingual-e5-largeMicrosoft社クラスC1            512           1024モデルカード研究論文
all-minilm-l12-v2

all-minilm-l12-v2埋め込みモデルは、オープンソースの自然言語処理(NLP)およびコンピューター・ビジョン(CV)コミュニティーによって構築され、HuggingFaceによって提供されています。

対応言語:英語

multilingual-e5-large

用途:英語以外の言語のテキスト埋め込みを生成するユースケースに適しています。

サポートされる自然言語:最大100言語詳細についてはモデルカードを参照してください。

サポートされている埋め込みモデルの詳細については、watsonxのドキュメンテーションを参照してください。

watsonx埋め込みPython SDKを使ったクイックスタート

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)

統合

詳細はこちら

IBMから最新のテクノロジー・パターン、ソリューション・アーキテクチャー、およびアーキテクチャーに関する出版物を入手してください。

  1. IBM Architecture Centerに移動
寄稿者