watsonx.ai 埋め込み

Watsonx.ai (英語) を使用すると、さまざまな大規模言語モデル (LLM) を実行し、そこから埋め込みを生成できます。Spring AI は、WatsonxAiEmbeddingModel を使用した Watsonx.ai テキスト埋め込みをサポートしています。

埋め込みは、浮動小数点数のベクトル (リスト) です。2 つのベクトル間の距離によって、それらの関連性が測定されます。距離が小さい場合は関連性が高いことを示し、距離が大きい場合は関連性が低いことを示します。

前提条件

まず、watsonx.ai の SaaS インスタンス (および IBM Cloud アカウント) が必要です。

watsonx.ai をフリーで試すには、フリートライアル (英語) を参照してください。

詳細はこちら (英語) を参照してください

リポジトリと BOM の追加

Spring AI アーティファクトは、Spring マイルストーンおよびスナップショットリポジトリで公開されます。これらのリポジトリをビルドシステムに追加するには、リポジトリセクションを参照してください。

依存関係の管理を支援するために、Spring AI は BOM (部品表) を提供し、一貫したバージョンの Spring AI がプロジェクト全体で使用されるようにします。Spring AI BOM をビルドシステムに追加するには、"依存関係管理" セクションを参照してください。

自動構成

Spring AI は、Watsonx.ai 埋め込みモデル用の Spring Boot 自動構成を提供します。これを有効にするには、Maven pom.xml ファイルに次の依存関係を追加します。

<dependency>
   <groupId>org.springframework.ai</groupId>
   <artifactId>spring-ai-watsonx-ai-spring-boot-starter</artifactId>
</dependency>

または、Gradle build.gradle ビルドファイルに保存します。

dependencies {
    implementation 'org.springframework.ai:spring-ai-watsonx-ai-spring-boot-starter'
}
Spring AI BOM をビルドファイルに追加するには、"依存関係管理" セクションを参照してください。

spring.ai.watsonx.embedding.options.* プロパティは、すべての埋め込みリクエストに使用されるデフォルトオプションを構成するために使用されます。

埋め込みプロパティ

プレフィックス spring.ai.watsonx.ai は、watsonx.ai に接続するためのプロパティプレフィックスとして使用されます。

プロパティ 説明 デフォルト

spring.ai.watsonx.ai.base-url

接続先の URL

us-south.ml.cloud.ibm.com (英語)

spring.ai.watsonx.ai.embedding-endpoint

テキストエンドポイント

ml/v1/ テキスト / 埋め込み ? バージョン =2023-05-29

spring.ai.watsonx.ai.project-id

プロジェクト ID

-

spring.ai.watsonx.ai.iam-token

IBM Cloud アカウントの IAM トークン

-

プレフィックス spring.ai.watsonx.embedding.options は、Watsonx.ai の EmbeddingModel 実装を構成するプロパティプレフィックスです。

プロパティ 説明 デフォルト

spring.ai.watsonx.ai.embedding.enabled

Watsonx.ai 埋め込みモデルを有効にする

true

spring.ai.watsonx.ai.embedding.options.model

使用する埋め込みモデル

ibm/slate-30m- 英語 -rtrvr

ランタイムオプション

WatsonxAiEmbeddingOptions.java [GitHub] (英語) は、使用するモデルなどの Watsonx.ai 構成を提供します。

デフォルトのオプションは、spring.ai.watsonx.embedding.options プロパティを使用して構成することもできます。

EmbeddingResponse embeddingResponse = embeddingModel.call(
    new EmbeddingRequest(List.of("Hello World", "World is big and salvation is near"),
        WatsonxAiEmbeddingOptions.create()
            .withModel("Different-Embedding-Model-Deployment-Name"))
);

サンプルコントローラー

これにより、クラスに挿入できる EmbeddingModel 実装が作成されます。以下は、EmbeddingModel 実装を使用する単純な @Controller クラスの例です。

@RestController
public class EmbeddingController {

    private final EmbeddingModel embeddingModel;

    @Autowired
    public EmbeddingController(EmbeddingModel embeddingModel) {
        this.embeddingModel = embeddingModel;
    }

    @GetMapping("/ai/embedding")
    public ResponseEntity<Embedding> embedding(@RequestParam String text) {
        EmbeddingResponse response = this.embeddingModel.embedForResponse(List.of(text));
        return ResponseEntity.ok(response.getResult());
    }
}