Titan 嵌入

提供 Bedrock Titan 嵌入模型。Amazon Titan 基礎模型 (FM) 透過完全託管的 API 為客戶提供廣泛的高效能影像、多模態嵌入和文字模型選擇。Amazon Titan 模型由 AWS 建立,並預訓練於大型資料集,使其成為功能強大、通用性強的模型,旨在支援各種用例,同時還支援負責任地使用 AI。您可以按原樣使用它們,也可以使用自己的資料私下定製它們。

Bedrock Titan 嵌入支援文字和影像嵌入。
Bedrock Titan 嵌入不支援批次嵌入。

AWS Bedrock Titan 模型頁面Amazon Bedrock 使用者指南包含有關如何使用 AWS 託管模型的詳細資訊。

先決條件

有關設定 API 訪問許可權,請參閱Spring AI 關於 Amazon Bedrock 的文件

新增儲存庫和 BOM

Spring AI 工件釋出在 Maven Central 和 Spring Snapshot 儲存庫中。請參閱 工件儲存庫 部分,將這些儲存庫新增到您的構建系統。

為了幫助管理依賴項,Spring AI 提供了一個 BOM(物料清單),以確保在整個專案中使用的 Spring AI 版本一致。請參閱 依賴項管理 部分,將 Spring AI BOM 新增到您的構建系統。

自動配置

Spring AI 自動配置、啟動模組的工件名稱發生了重大變化。請參閱 升級說明 以獲取更多資訊。

spring-ai-starter-model-bedrock 依賴項新增到您專案的 Maven pom.xml 檔案中

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

或新增到您的 Gradle build.gradle 構建檔案中。

dependencies {
    implementation 'org.springframework.ai:spring-ai-starter-model-bedrock'
}
請參閱 依賴項管理 部分,將 Spring AI BOM 新增到您的構建檔案中。

啟用 Titan 嵌入支援

預設情況下,Titan 嵌入模型處於停用狀態。要啟用它,請在您的應用程式配置中將 spring.ai.model.embedding 屬性設定為 bedrock-titan

spring.ai.model.embedding=bedrock-titan

或者,您可以使用 Spring 表示式語言 (SpEL) 來引用環境變數

# In application.yml
spring:
  ai:
    model:
      embedding: ${AI_MODEL_EMBEDDING}
# In your environment or .env file
export AI_MODEL_EMBEDDING=bedrock-titan

您也可以在啟動應用程式時使用 Java 系統屬性設定此屬性

java -Dspring.ai.model.embedding=bedrock-titan -jar your-application.jar

嵌入屬性

字首 spring.ai.bedrock.aws 是配置與 AWS Bedrock 連線的屬性字首。

財產 描述 預設值

spring.ai.bedrock.aws.region

要使用的 AWS 區域。

us-east-1

spring.ai.bedrock.aws.access-key

AWS 訪問金鑰。

-

spring.ai.bedrock.aws.secret-key

AWS 秘密金鑰。

-

嵌入自動配置的啟用和停用現在透過字首為 spring.ai.model.embedding 的頂級屬性進行配置。

要啟用,請設定 spring.ai.model.embedding=bedrock-titan(預設已啟用)

要停用,請設定 spring.ai.model.embedding=none(或任何與 bedrock-titan 不匹配的值)

此更改是為了允許配置多個模型。

字首 spring.ai.bedrock.titan.embedding(在 BedrockTitanEmbeddingProperties 中定義)是為 Titan 配置嵌入模型實現的屬性字首。

財產

描述

預設值

spring.ai.bedrock.titan.embedding.enabled(已移除且不再有效)

啟用或停用 Titan 嵌入支援

spring.ai.model.embedding

啟用或停用 Titan 嵌入支援

bedrock-titan

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 值也可以在AWS Bedrock 文件中的基礎模型 ID中找到。

執行時選項

BedrockTitanEmbeddingOptions.java 提供模型配置,例如 input-type。在啟動時,可以使用 BedrockTitanEmbeddingOptions.builder().inputType(type).build() 方法或 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()
        .inputType(InputType.TEXT)
        .build()));

示例控制器

建立一個新的 Spring Boot 專案,並將 spring-ai-starter-model-bedrock 新增到您的 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.model.embedding=bedrock-titan
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 實現了 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 並將其用於文字嵌入

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

var embeddingModel = new BedrockTitanEmbeddingModel(this.titanEmbeddingApi);

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

低階 TitanEmbeddingBedrockApi 客戶端

TitanEmbeddingBedrockApi 提供了一個輕量級的 Java 客戶端,位於 AWS Bedrock Titan 嵌入模型之上。

以下類圖說明了 TitanEmbeddingBedrockApi 介面和構建塊

bedrock titan embedding low level api

TitanEmbeddingBedrockApi 支援 amazon.titan-embed-image-v1amazon.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 = this.titanEmbedApi.embedding(this.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(this.image))
	.build();

TitanEmbeddingResponse response = this.titanEmbedApi.embedding(this.request);
© . This site is unofficial and not affiliated with VMware.