テキストのベクトル化
watsonx.ai から入手できる埋め込みモデルと埋め込みAPIを使用して、生成AIアプリケーションで使用する文章や段落の意味を捉えたテキスト埋め込みを作成します。
開発方法
テキストをベクトル化、つまりテキストを埋め込みと呼ばれるテキストの数値表現に変換するには、これらのプログラミング方法を使用します
また、 IBM を使用して、サードパーティのプラットフォームから埋め込みモデルを使用することもできます。例えば、以下のようなプラットフォームです
あるいは、チャットワークフローの一環として文書をベクトル化したり、ベクトルインデックスを作成したりするために、 watsonx.ai UIのグラフィックツールを使用することもできます。 以下のリソースを参照してください。
概要
Converting text into text embeddings, or ベクトル化 text, helps with document comparison, question-answering, and in retrieval-augmented generation (RAG) tasks, where you need to retrieve relevant content quickly.
詳しくは、以下のトピックを参照してください。
サポートされている基盤モデル
watsonx.ai で利用可能なエンベッディングモデルの詳細については 、「サポートされているエンコーダモデル 」を参照してください。
プログラム的に使用可能な埋め込みモデルを確認するには、 watsonx.ai のサービスAPIとして 利用可能な基盤モデルをリストアップする メソッドを使用します。 filters=function_embedding
パラメータを指定すると、利用可能な埋め込みモデルのみが返されます。
curl -X GET \
'https://{cluster_url}/ml/v1/foundation_model_specs?version=2024-07-25&filters=function_embedding'
Python
watsonx.ai Python ライブラリの埋め込みクラスを参照してください。
次のサンプルノートブックが利用可能です
REST API
watsonx.ai API の Generate embeddings メソッドを使用してテキストをベクトル化します。
REST API の例
次のコードスニペットでは、 slate-30m-english-rtrvr モデルを使用して、次の2行のテキストをテキスト埋め込みに変換しています
- 基盤モデル、幅広い下流タスクに適応できる大規模な生成AIモデルである。
- 生成型AI テキスト、ソースコード、画像、音声、合成データなど、さまざまな種類のコンテンツを生成できるAIアルゴリズムの一種。
この例では2行のテキストしか送信されていないが、1,000行まで指定できる。 送信する各行は、埋め込みモデルで定義されている最大入力トークン制限に従う必要があります。
行が長くなる可能性がある場合に対処するため、 truncate_input_tokens
パラメータを指定して行を強制的に切り詰めるようにします。 そうでないと、リクエストが失敗する可能性があります。 この例では、 input_text
パラメーターが含まれているので、元のテキストがレスポンスに追加され、元のテキストと各埋め込み値のセットとのペアが簡単になります。
埋め込み方法のペイロードで model_id
として使用する埋め込みモデルを指定します。
REST API リクエストの例
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"
}'
REST API レスポンスの例
レスポンスはこのようになるが、このレスポンスのサンプルでは、例の可読性を向上させるために、各埋め込みの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ソリューションのコーディング