跳到主要内容

Cohere 嵌入

DeepSeek V3 中英对照 Cohere Cohere Embeddings

提供 Bedrock Cohere Embedding 模型。将生成式 AI 功能集成到关键应用程序和工作流程中,以改善业务成果。

AWS Bedrock Cohere 模型页面Amazon Bedrock 用户指南 包含了关于如何使用 AWS 托管的模型的详细信息。

先决条件

请参考 Spring AI 关于 Amazon Bedrock 的文档 以设置 API 访问权限。

添加仓库和 BOM

Spring AI 的工件已发布在 Maven Central 和 Spring Snapshot 仓库中。请参考 Repositories 部分,将这些仓库添加到您的构建系统中。

为了帮助进行依赖管理,Spring AI 提供了一个 BOM(物料清单),以确保在整个项目中使用一致版本的 Spring AI。请参考 依赖管理 部分,将 Spring AI BOM 添加到您的构建系统中。

自动配置

在你的项目的 Maven pom.xml 文件中添加 spring-ai-bedrock-ai-spring-boot-starter 依赖:

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

或添加到你的 Gradle build.gradle 构建文件中。

dependencies {
implementation 'org.springframework.ai:spring-ai-bedrock-ai-spring-boot-starter'
}
gradle
提示

请参考 依赖管理 部分,将 Spring AI BOM 添加到您的构建文件中。

启用 Cohere Embedding 支持

默认情况下,Cohere 模型是禁用的。要启用它,请将 spring.ai.bedrock.cohere.embedding.enabled 属性设置为 true。导出环境变量是设置此配置属性的一种方式:

export SPRING_AI_BEDROCK_COHERE_EMBEDDING_ENABLED=true
shell

嵌入属性

前缀 spring.ai.bedrock.aws 是用于配置与 AWS Bedrock 连接的属性前缀。

属性描述默认值
spring.ai.bedrock.aws.region使用的 AWS 区域。us-east-1
spring.ai.bedrock.aws.access-keyAWS 访问密钥。-
spring.ai.bedrock.aws.secret-keyAWS 秘密密钥。-

前缀 spring.ai.bedrock.cohere.embedding(定义在 BedrockCohereEmbeddingProperties 中)是用于配置 Cohere 嵌入模型实现的属性前缀。

属性描述默认值
spring.ai.bedrock.cohere.embedding.enabled启用或禁用对 Cohere 的支持false
spring.ai.bedrock.cohere.embedding.model使用的模型 ID。支持的模型请参见 CohereEmbeddingModelcohere.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 如何处理超过最大 token 长度的输入。如果指定 LEFT 或 RIGHT,模型将丢弃输入,直到剩余的输入正好是模型的最大输入 token 长度。NONE
备注

通过 Amazon Bedrock 访问 Cohere 时,无法使用截断功能。这是 Amazon Bedrock 的问题。Spring AI 类 BedrockCohereEmbeddingModel 会将文本截断至 2048 个字符长度,这是模型支持的最大长度。

查看 CohereEmbeddingModel 以获取其他模型 ID。支持的值为:cohere.embed-multilingual-v3cohere.embed-english-v3。模型 ID 值也可以在 AWS Bedrock 基础模型 ID 文档 中找到。

提示

所有以 spring.ai.bedrock.cohere.embedding.options 为前缀的属性都可以在运行时通过在 EmbeddingRequest 调用中添加特定请求的 运行时选项 来覆盖。

运行时选项

BedrockCohereEmbeddingOptions.java 提供了模型配置选项,例如 input-typetruncate

在启动时,默认选项可以通过 BedrockCohereEmbeddingModel(api, options) 构造函数或 spring.ai.bedrock.cohere.embedding.options.* 属性进行配置。

在运行时,你可以通过在 EmbeddingRequest 调用中添加新的、特定于请求的选项来覆盖默认选项。例如,要覆盖特定请求的默认输入类型:

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

示例控制器

创建一个新的 Spring Boot 项目,并将 spring-ai-bedrock-ai-spring-boot-starter 添加到你的 pom(或 gradle)依赖中。

src/main/resources 目录下添加一个 application.properties 文件,以启用并配置 Cohere Embedding 模型:

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
none
提示

regionsaccess-keysecret-key 替换为你的 AWS 凭证。

这将创建一个 BedrockCohereEmbeddingModel 实现,你可以将其注入到你的类中。以下是一个简单的 @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);
}
}
java

手动配置

BedrockCohereEmbeddingModel 实现了 EmbeddingModel 接口,并使用 Low-level CohereEmbeddingBedrockApi Client 来连接到 Bedrock Cohere 服务。

spring-ai-bedrock 依赖添加到项目的 Maven pom.xml 文件中:

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

或添加到你的 Gradle build.gradle 构建文件中。

dependencies {
implementation 'org.springframework.ai:spring-ai-bedrock'
}
gradle

:::提示
请参考依赖管理部分,将 Spring AI BOM 添加到您的构建文件中。
:::

接下来,创建一个 BedrockCohereEmbeddingModel 并使用它来进行文本嵌入:

var cohereEmbeddingApi =new CohereEmbeddingBedrockApi(
CohereEmbeddingModel.COHERE_EMBED_MULTILINGUAL_V1.id(),
EnvironmentVariableCredentialsProvider.create(), Region.US_EAST_1.id(), new ObjectMapper());

var embeddingModel = new BedrockCohereEmbeddingModel(this.cohereEmbeddingApi);

EmbeddingResponse embeddingResponse = this.embeddingModel
.embedForResponse(List.of("Hello World", "World is big and salvation is near"));
java

底层 CohereEmbeddingBedrockApi 客户端

CohereEmbeddingBedrockApi 提供了一个轻量级的 Java 客户端,基于 AWS Bedrock 的 Cohere Command 模型

以下类图展示了 CohereEmbeddingBedrockApi 接口及其构建模块:

bedrock cohere embedding 底层 API

CohereEmbeddingBedrockApi 支持 cohere.embed-english-v3cohere.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 = this.api.embedding(this.request);
java