watsonx.ai から入手できる埋め込みモデルおよび埋め込み API を使用して、生成 AI アプリケーションで使用するセンテンスまたはパッセージの意味をキャプチャーするテキスト埋め込みを作成します。
テキストをテキスト埋め込みに変換すること、つまりテキストをベクトル化することは、文書比較、質問応答、そして関連するコンテンツを素早く検索する必要がある検索支援生成(RAG)タスクに役立ちます。
詳しくは、以下のトピックを参照してください。
以下のようなサード・パーティー・プラットフォームから IBM 組み込みモデルを使用することもできます。
テキスト埋め込みとは何ですか?
テキスト埋め込みは、実数値のベクトルとしてのセンテンスまたはパッセージの数値表現です。 センテンスを数値ベクトルに変換することで、センテンスに対する操作は数学の方程式のようになります。これは、コンピューターが迅速に実行できることであり、うまくいくことができます。
組み込みモデルがセンテンスのベクトル表現を作成すると、組み込みモデルは、センテンスの意味を取り込む値を割り当てます。 また、埋め込みモデルは、割り当てられた値に基づいて、ベクトルを多次元空間内に配置します。 次元空間のサイズはモデルによって異なります。つまり、正確なベクトル値も変化します。 しかし、すべてのモデルは、同じ意味を持つ文が互いに近接するようにベクトルを配置します。
ほとんどの埋め込みモデルでは、数百次元から数千次元までの非常に多くの次元でベクトルが生成されるため、視覚化することは不可能です。 埋め込みモデルが 3 次元ベクトルを生成する場合は、次のようになります。 図に示されているベクトル値は架空のものですが、この仮定のシナリオを説明するために含まれていることに注意してください。
この図は、共有キーワードを持つ文と共有サブジェクトを持つ文に、類似した値を持つベクトルがあることを示しています。これにより、それらのベクトルは 3 次元空間内で相互に近い位置に配置されます。 以下の文は、ベクトル値に基づいて配置されます。
- Degreproduction が den にハングしています
- Jan は、カードを使用して犬の絵を購入しました
- 犬を散歩に連れて行きました
アートワークに関する最初の 2 つのセンテンスと、キーワード 犬 を共有する最後の 2 つのセンテンスは、1 番目と 3 番目のセンテンスより近くにあります。これらのセンテンスは、一般的な単語や意味を共有していません。
生成されたベクトルは、ベクトル・データベースに保管できます。 同じ組み込みモデルを使用してデータベース内のすべてのセンテンスを変換する場合、ベクトル・ストアは、ベクトル値に基づいてセンテンス間に存在する固有のグループおよび関係を利用して、関連する検索結果を迅速に返すことができます。
テキストを保管し、情報検索のためにキーワード検索に依存する従来の索引とは異なり、ベクトル・ストアは、意味が似ている情報を検索するセマンティック検索をサポートします。 例えば、キーワード検索でキーワードが存在するかどうかのみが検査される場合、セマンティック検索では、キーワードが使用されているコンテキストが重み付けされます。これにより、通常はより良い検索結果が生成されます。
テキストのベクトル化
テキストをベクトル化するには、watsonx.aiAPI のGenerate embeddingsメソッドを使います。
プログラムで利用可能な埋め込みモデルを調べるには、watsonx.aias a service API のList the available foundation modelsメソッドを使います。 利用可能な埋め込みモデルのみを返すには、'filters=function_embedding
パラメータを指定します。
curl -X GET \
'https://{cluster_url}/ml/v1/foundation_model_specs?version=2024-07-25&filters=function_embedding'
例
次のコード・スニペットは、slate-30m-english-rtrvr モデルを使用して、次の2行のテキストをテキスト埋め込みに変換します:
- foundation modelとは、幅広い下流タスクに適応できる大規模な生成AIモデルである。
- Generative AI(ジェネレーティブAI)とは、テキスト、ソースコード、画像、音声、合成データなど、さまざまな種類のコンテンツを生成できるAIアルゴリズムの一種。
この例では、2行のテキストが変換のために送信されている。 1,000行まで指定可能。 送信する各行は、エンベッディング・モデルによって定義された最大入力トークン制限に適合していなければなりません。
行が長くなりそうな場合は、truncate_input_tokens
パラメータを指定して強制的に行を切り詰めます。 さもなければ、リクエストは失敗するかもしれない。 input_text
パラメータは、元のテキストがレスポンスに追加されるように含まれており、元のテキストと各埋め込み値のセットを簡単にペアリングできるようになっています。
埋め込みメソッドのペイロードの'model_id
には、使用したい埋め込みモデルを指定する。
curl -X POST \
'https://{region}.cloud.ibm.com/ml/v1/text/embeddings?version=2024-05-02' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJraWQiOi...' \
--data-raw '{
"inputs": [
"A foundation model is a large-scale generative AI model that can be adapted to a wide range of downstream tasks.",
"Generative AI a class of AI algorithms that can produce various types of content including text, source code, imagery, audio, and synthetic data."
],
"parameters":{
"truncate_input_tokens": 128,
"return_options":{
"input_text":true
}
},
"model_id": "ibm/slate-30m-english-rtrvr",
"project_id": "81966e98-c691-48a2-9bcc-e637a84db410"
}'
各埋め込みにおける384の値は、例の可読性を向上させるために6つの値に削減されている:
{
"model_id": "ibm/slate-30m-english-rtrvr",
"created_at": "2024-05-02T16:21:56.771Z",
"results": [
{
"embedding": [
-0.023104044,
0.05364946,
0.062400896,
...
0.008527246,
-0.08910927,
0.048190728
],
"input": "A foundation model is a large-scale generative AI model that can be adapted to a wide range of downstream tasks."
},
{
"embedding": [
-0.024285838,
0.03582272,
0.008893765,
...
0.0148864435,
-0.051656704,
0.012944954
],
"input": "Generative AI a class of AI algorithms that can produce various types of content including text, source code, imagery, audio, and synthetic data."
}
],
"input_token_count": 57
}
詳細情報
親トピック: 生成 AI ソリューションのコーディング