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 ドキュメントを参照してください。
自動構成
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。対応モデルについては | amazon.titan-embed-image-v1 |
サポートされている値は次のとおりです: amazon.titan-embed-image-v1
、amazon.titan-embed-text-v1
、amazon.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
regions 、access-key 、secret-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 インターフェースと構成要素を示しています。
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);