提供基石泰坦嵌入式客户端。链接:https://aws.amazon.com/bedrock/titan/[Amazon Titan] 基础模型(FMs)通过一个完全管理的API,为客户提供了一系列高性能的图像、多模态嵌入和文本模型选择。亚马逊泰坦模型由AWS创建,预先训练在大型数据集上,使它们成为强大的通用模型,旨在支持各种用例,同时也支持AI的负责任使用。您可以直接使用它们,或者用您自己的数据私下定制它们。
Note
|
Bedrock Titan Embedding 支持文本和图像嵌入。 |
Note
|
Bedrock Titan嵌入不支持批量嵌入。 |
[AWS Bedrock Titan Model Page](https://aws.amazon.com/bedrock/titan/) 和 [Amazon Bedrock User Guide](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) 包含了如何使用 AWS 托管模型的详细信息。
先决条件
参考Amazon Bedrock上的Spring AI文档来设置API访问。
自动配置
将 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'
}
Tip
|
请参考依赖管理部分,以将Spring AI BOM添加到您的构建文件中。 |
启用泰坦嵌入支持
默认情况下,Titan嵌入模型是禁用的。要启用它,请将`spring.ai.bedrock.titan.embedding.enabled`属性设置为`true`。导出环境变量是设置此配置属性的一种方式:
export SPRING_AI_BEDROCK_TITAN_EMBEDDING_ENABLED=true
嵌入属性
前缀`spring.ai.bedrock.aws`是用来配置与AWS Bedrock连接的属性前缀。
Property | Description | Default |
---|---|---|
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.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-v1
和 amazon.titan-embed-text-v1
。模型ID值也可以在 [AWS Bedrock文档中的基础模型ID部分](https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids-arns.html) 找到。
样本控制器
访问'''Create''' 创建一个新的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
Tip
|
将 regions 、access-key 和 secret-key 替换为您的AWS凭证。
|
这将创建一个您可以注入到您的类中的`EmbeddingController`实现。这里有一个简单的`@Controller`类的示例,它使用聊天客户端进行文本生成。
@RestController
public class EmbeddingController {
private final EmbeddingClient embeddingClient;
@Autowired
public EmbeddingController(EmbeddingClient embeddingClient) {
this.embeddingClient = embeddingClient;
}
'''
@GetMapping("/ai/embedding")
public Map embed(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
EmbeddingResponse embeddingResponse = this.embeddingClient.embedForResponse(List.of(message));
return Map.of("embedding", embeddingResponse);
}
}
'''
手动配置
The BedrockTitanEmbeddingClient实现了`EmbeddingClient`接口,并使用[low-level-api]与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'
}
Tip
|
请参考依赖管理部分,以将Spring AI BOM添加到您的构建文件中。 |
下一步,创建一个[BedrockTitanEmbeddingClient]并用它来进行文本嵌入:https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanEmbeddingClient.java
var titanEmbeddingApi = new TitanEmbeddingBedrockApi(
TitanEmbeddingModel.TITAN_EMBED_IMAGE_V1.id(), Region.US_EAST_1.id());
var embeddingClient new BedrockTitanEmbeddingClient(titanEmbeddingApi);
EmbeddingResponse embeddingResponse = embeddingClient
.embedForResponse(List.of("Hello World")); // NOTE titan does not support batch embedding.
TitanEmbeddingBedrockApi底层客户端
[TitanEmbeddingBedrockApi]提供了一个轻量级的Java客户端,基于AWS Bedrock的[Titan Embedding模型]。
下列类图展示了 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);