提供基础的Cohere嵌入式客户端。整合生成型AI能力到关键应用程序和工作流中,以提升业务成果。
[AWS Bedrock Cohere Model Page](Amazon Bedrock User Guide(https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html)包含了如何使用AWS托管模型的详细信息。
先决条件
请参考亚马逊床岩上的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。 |
启用Cohere嵌入式支持
默认情况下,Cohere模型是禁用的。要启用它,请将`spring.ai.bedrock.cohere.embedding.enabled`属性设置为`true`。导出环境变量是设置此配置属性的一种方式:
export SPRING_AI_BEDROCK_COHERE_EMBEDDING_ENABLED=true
嵌入属性
前缀 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.bedrock.cohere.embedding
(在`BedrockCohereEmbeddingProperties`中定义)是配置Cohere的嵌入客户端实现的属性前缀。
属性 |
描述 |
默认值 |
spring.ai.bedrock.cohere.embedding.enabled |
启用或禁用对Cohere的支持 |
false |
spring.ai.bedrock.cohere.embedding.model |
使用的模型id。参见 CohereEmbeddingModel 支持的模型列表。 |
cohere.embed-multilingual-v3 |
spring.ai.bedrock.cohere.embedding.options.input-type |
在每种类型之前添加特殊的令牌以便区分各个类型。您不应将不同类型混合使用,除非是在搜索和检索时混合使用。在这种情况下,应使用search_document类型嵌入您的语料库,并使用search_query类型嵌入查询。 |
SEARCH_DOCUMENT |
spring.ai.bedrock.cohere.embedding.options.truncate |
指定API处理超出最大令牌长度的输入的方式。如果您指定了LEFT或RIGHT,则模型将丢弃输入,直到剩余的输入正好是该模型的最大输入令牌长度。 |
NONE |
查看 CohereEmbeddingModel 以获取其他模型ID。支持的值有:cohere.embed-multilingual-v3
和 cohere.embed-english-v3
。模型ID值也可以在 AWS Bedrock 文档中的基础模型ID 找到。
Tip
|
所有以 spring.ai.bedrock.cohere.embedding.options 为前缀的属性可以在运行时被覆盖,方法是在 EmbeddingRequest 调用中添加一个请求特定的 [embedding-options]。
|
运行时选项
The BedrockCohereEmbeddingOptions.java 提供了模型配置,例如 input-type
或 truncate
。
在启动时,可以使用`BedrockCohereEmbeddingClient(api, options)`构造函数或`spring.ai.bedrock.cohere.embedding.options.*`属性来配置默认选项。
在运行时,你可以通过添加新的、特定于请求的选项到`EmbeddingRequest`调用中来覆盖默认选项。例如,要覆盖特定请求的默认温度设置:
EmbeddingResponse embeddingResponse = embeddingClient.call(
new EmbeddingRequest(List.of("Hello World", "World is big and salvation is near"),
BedrockCohereEmbeddingOptions.builder()
.withInputType(InputType.SEARCH_DOCUMENT)
.build()));
样本控制器
访问'''Create''',新建一个Spring Boot项目,并将`spring-ai-bedrock-ai-spring-boot-starter`添加到你的pom(或gradle)依赖中。
在`src/main/resources`目录下添加一个`application.properties`文件,以启用并配置Cohere嵌入式客户端:
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.cohere.embedding.enabled=true
spring.ai.bedrock.cohere.embedding.options.input-type=search-document
Tip
|
将 regions 、access-key 和 secret-key 替换为您的AWS凭证。
|
这将创建一个`BedrockCohereEmbeddingClient`实现,您可以将其注入到您的类中。这里有一个简单的`@Controller`类的例子,它使用聊天客户端来生成文本。
@RestController
public class EmbeddingController {
private final EmbeddingClient embeddingClient;
@Autowired
public EmbeddingController(EmbeddingClient embeddingClient) {
this.embeddingClient = embeddingClient;
}
java
@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 BedrockCohereEmbeddingClient 实现了 EmbeddingClient
接口,并使用了 [low-level-api] 来连接到 Bedrock Cohere 服务。
将`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。 |
接下来,创建一个https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingClient.java[BedrockCohereEmbeddingClient]并用它来进行文本嵌入:
var cohereEmbeddingApi =new CohereEmbeddingBedrockApi(
CohereEmbeddingModel.COHERE_EMBED_MULTILINGUAL_V1.id(),
EnvironmentVariableCredentialsProvider.create(), Region.US_EAST_1.id(), new ObjectMapper());
var embeddingClient = new BedrockCohereEmbeddingClient(cohereEmbeddingApi);
EmbeddingResponse embeddingResponse = embeddingClient
.embedForResponse(List.of("Hello World", "World is big and salvation is near"));
低级Cohere嵌入式基岩Api客户端
'''[CohereEmbeddingBedrockApi](https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/api/CohereEmbeddingBedrockApi.java) 提供的是一个基于 AWS Bedrock 的轻量级 Java 客户端,支持 [Cohere Command 模型](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-cohere-command.html)。'''
以下类图说明了CohereEmbeddingBedrockApi接口和构建模块:
CohereEmbeddingBedrockApi支持`cohere.embed-english-v3`和`cohere.embed-multilingual-v3`模型来进行单个和批量嵌入计算。
这是一个简单的代码片段,展示了如何以编程方式使用API:
CohereEmbeddingBedrockApi api = new CohereEmbeddingBedrockApi(
CohereEmbeddingModel.COHERE_EMBED_MULTILINGUAL_V1.id(),
EnvironmentVariableCredentialsProvider.create(),
Region.US_EAST_1.id(), new ObjectMapper());
CohereEmbeddingRequest request = new CohereEmbeddingRequest(
List.of("I like to eat apples", "I like to eat oranges"),
CohereEmbeddingRequest.InputType.search_document,
CohereEmbeddingRequest.Truncate.NONE);
CohereEmbeddingResponse response = api.embedding(request);