Titan 埋め込み

Bedrock Titan 埋め込みモデルを提供します。Amazon Titan 基盤モデル (FM) は、フルマネージド API を介して、幅広い高性能なイメージ、マルチモーダル埋め込み、テキストモデルの選択肢を顧客に提供します。Amazon Titan モデルは AWS によって作成され、大規模なデータセットで事前トレーニングされているため、さまざまなユースケースをサポートするように構築された強力な汎用モデルであり、AI の責任ある使用もサポートします。そのまま使用するか、独自のデータを使用して非公開でカスタマイズします。

Bedrock Titan 埋め込みは、テキストとイメージの埋め込みをサポートします。
Bedrock Titan 埋め込みはバッチ埋め込みをサポートしていません。

AWS Bedrock Titan モデルページ [Amazon] および Amazon Bedrock ユーザーガイド には、AWS ホストモデルの使用方法に関する詳細情報が含まれています。

前提条件

API アクセスの設定については、Spring Amazon Bedrock に関する AI ドキュメントを参照してください。

リポジトリと BOM の追加

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

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

自動構成

spring-ai-bedrock-ai-spring-boot-starter 依存関係をプロジェクトの Maven pom.xml ファイルに追加します。

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

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

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

Titan 埋め込みサポートを有効にする

デフォルトでは、Titan 埋め込みモデルは無効になっています。これを有効にするには、spring.ai.bedrock.titan.embedding.enabled プロパティを true に設定します。環境変数のエクスポートは、この構成プロパティを設定する 1 つの方法です。

export SPRING_AI_BEDROCK_TITAN_EMBEDDING_ENABLED=true

埋め込みプロパティ

プレフィックス spring.ai.bedrock.aws は、AWS Bedrock への接続を設定するためのプロパティプレフィックスです。

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

spring.ai.bedrock.aws.region

使用する AWS リージョン。

米国東部 -1

spring.ai.bedrock.aws.access-key

AWS アクセスキー。

-

spring.ai.bedrock.aws.secret-key

AWS の秘密キー。

-

プレフィックス spring.ai.bedrock.titan.embedding ( BedrockTitanEmbeddingProperties で定義) は、Titan の埋め込みモデルの実装を構成するプロパティプレフィックスです。

プロパティ

説明

デフォルト

spring.ai.bedrock.titan.embedding.enabled

Titan 埋め込みのサポートを有効または無効にする

false

spring.ai.bedrock.titan.embedding.model

使用するモデル ID。対応モデルについては TitanEmbeddingModel を参照してください。

amazon.titan-embed-image-v1

サポートされている値は次のとおりです: amazon.titan-embed-image-v1amazon.titan-embed-text-v1amazon.titan-embed-text-v2:0. モデル ID 値は基本モデル ID に関する AWS Bedrock ドキュメント [Amazon] にも記載されています。

ランタイムオプション

BedrockTitanEmbeddingOptions.java [GitHub] (英語) は、input-type などのモデル構成を提供します。起動時に、デフォルトオプションは BedrockTitanEmbeddingModel(api).withInputType(type) メソッドまたは spring.ai.bedrock.titan.embedding.input-type プロパティで構成できます。

実行時に、新しいリクエスト固有のオプションを EmbeddingRequest 呼び出しに追加することで、デフォルトのオプションをオーバーライドできます。たとえば、特定のリクエストのデフォルトの温度をオーバーライドするには、次のようにします。

EmbeddingResponse embeddingResponse = embeddingModel.call(
    new EmbeddingRequest(List.of("Hello World", "World is big and salvation is near"),
        BedrockTitanEmbeddingOptions.builder()
        	.withInputType(InputType.TEXT)
        .build()));

サンプルコントローラー

新しい Spring Boot プロジェクトを作成し、spring-ai-bedrock-ai-spring-boot-starter を pom (または gradle) の依存関係に追加します。

src/main/resources ディレクトリに application.properties ファイルを追加して、Titan 埋め込みモデルを有効にして構成します。

spring.ai.bedrock.aws.region=eu-central-1
spring.ai.bedrock.aws.access-key=${AWS_ACCESS_KEY_ID}
spring.ai.bedrock.aws.secret-key=${AWS_SECRET_ACCESS_KEY}

spring.ai.bedrock.titan.embedding.enabled=true
regionsaccess-keysecret-key を AWS 認証情報に置き換えます。

これにより、クラスに挿入できる EmbeddingController 実装が作成されます。以下は、テキスト生成にチャットモデルを使用する単純な @Controller クラスの例です。

@RestController
public class EmbeddingController {

    private final EmbeddingModel embeddingModel;

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

    @GetMapping("/ai/embedding")
    public Map embed(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        EmbeddingResponse embeddingResponse = this.embeddingModel.embedForResponse(List.of(message));
        return Map.of("embedding", embeddingResponse);
    }
}

手動構成

BedrockTitanEmbeddingModel [GitHub] (英語) は EmbeddingModel を実装し、低レベル TitanEmbeddingBedrockApi クライアントを使用して Bedrock Titan サービスに接続します。

spring-ai-bedrock 依存関係をプロジェクトの Maven pom.xml ファイルに追加します。

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-bedrock</artifactId>
</dependency>

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

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

次に、BedrockTitanEmbeddingModel [GitHub] (英語) を作成し、テキストの埋め込みに使用します。

var titanEmbeddingApi = new TitanEmbeddingBedrockApi(
	TitanEmbeddingModel.TITAN_EMBED_IMAGE_V1.id(), Region.US_EAST_1.id());

var embeddingModel = new BedrockTitanEmbeddingModel(titanEmbeddingApi);

EmbeddingResponse embeddingResponse = embeddingModel
	.embedForResponse(List.of("Hello World")); // NOTE titan does not support batch embedding.

低レベル TitanEmbeddingBedrockApi クライアント

TitanEmbeddingBedrockApi [GitHub] (英語) は、AWS Bedrock Titan 埋め込みモデル [Amazon] 上にある軽量の Java クライアントを提供します。

次のクラス図は、TitanEmbeddingBedrockApi インターフェースと構成要素を示しています。

bedrock titan embedding low level api

TitanEmbeddingBedrockApi は、単一およびバッチの埋め込み計算用に amazon.titan-embed-image-v1 および amazon.titan-embed-image-v1 モデルをサポートします。

API をプログラムで使用する方法の簡単なスニペットを次に示します。

TitanEmbeddingBedrockApi titanEmbedApi = new TitanEmbeddingBedrockApi(
		TitanEmbeddingModel.TITAN_EMBED_TEXT_V1.id(), Region.US_EAST_1.id());

TitanEmbeddingRequest request = TitanEmbeddingRequest.builder()
	.withInputText("I like to eat apples.")
	.build();

TitanEmbeddingResponse response = titanEmbedApi.embedding(request);

イメージを埋め込むには、イメージを base64 形式に変換する必要があります。

TitanEmbeddingBedrockApi titanEmbedApi = new TitanEmbeddingBedrockApi(
		TitanEmbeddingModel.TITAN_EMBED_IMAGE_V1.id(), Region.US_EAST_1.id());

byte[] image = new DefaultResourceLoader()
	.getResource("classpath:/spring_framework.png")
	.getContentAsByteArray();


TitanEmbeddingRequest request = TitanEmbeddingRequest.builder()
	.withInputImage(Base64.getEncoder().encodeToString(image))
	.build();

TitanEmbeddingResponse response = titanEmbedApi.embedding(request);