watsonx.ai 嵌入
透過 Watsonx.ai,您可以運行各種大型語言模型 (LLM) 並從中生成嵌入。Spring AI 透過 WatsonxAiEmbeddingModel
支援 Watsonx.ai 文字嵌入。
嵌入是一個浮點數的向量(列表)。兩個向量之間的距離衡量它們的相關性。小距離表示高度相關,大距離表示低度相關。
自動配置
Spring AI 為 Watsonx.ai 嵌入模型提供 Spring Boot 自動配置。若要啟用它,請將以下依賴項新增至您的 Maven pom.xml
檔案
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-watsonx-ai-spring-boot-starter</artifactId>
</dependency>
或新增至您的 Gradle build.gradle
建置檔案。
dependencies {
implementation 'org.springframework.ai:spring-ai-watsonx-ai-spring-boot-starter'
}
請參閱依賴管理章節,將 Spring AI BOM 新增至您的建置檔案。 |
spring.ai.watsonx.embedding.options.* 屬性用於配置所有嵌入請求的預設選項。
嵌入屬性
前綴 spring.ai.watsonx.ai
用作讓您連線到 watsonx.ai 的屬性前綴。
屬性 | 描述 | 預設值 |
---|---|---|
spring.ai.watsonx.ai.base-url |
連線到的 URL |
|
spring.ai.watsonx.ai.embedding-endpoint |
文字端點 |
ml/v1/text/embeddings?version=2023-05-29 |
spring.ai.watsonx.ai.project-id |
專案 ID |
- |
spring.ai.watsonx.ai.iam-token |
IBM Cloud 帳戶 IAM 權杖 |
- |
前綴 spring.ai.watsonx.embedding.options
是配置 Watsonx.ai 的 EmbeddingModel
實作的屬性前綴。
屬性 | 描述 | 預設值 |
---|---|---|
spring.ai.watsonx.ai.embedding.enabled |
啟用 Watsonx.ai 嵌入模型 |
true |
spring.ai.watsonx.ai.embedding.options.model |
要使用的嵌入模型 |
ibm/slate-30m-english-rtrvr |
運行時選項
WatsonxAiEmbeddingOptions.java 提供 Watsonx.ai 配置,例如要使用的模型。
預設選項也可以使用 spring.ai.watsonx.embedding.options
屬性進行配置。
EmbeddingResponse embeddingResponse = embeddingModel.call(
new EmbeddingRequest(List.of("Hello World", "World is big and salvation is near"),
WatsonxAiEmbeddingOptions.create()
.withModel("Different-Embedding-Model-Deployment-Name"))
);
範例控制器
這將建立一個 EmbeddingModel
實作,您可以將其注入到您的類別中。以下是一個簡單的 @Controller
類別的範例,該類別使用 EmbeddingModel
實作。
@RestController
public class EmbeddingController {
private final EmbeddingModel embeddingModel;
@Autowired
public EmbeddingController(EmbeddingModel embeddingModel) {
this.embeddingModel = embeddingModel;
}
@GetMapping("/ai/embedding")
public ResponseEntity<Embedding> embedding(@RequestParam String text) {
EmbeddingResponse response = this.embeddingModel.embedForResponse(List.of(text));
return ResponseEntity.ok(response.getResult());
}
}