watsonx.ai 嵌入

透過 Watsonx.ai,您可以運行各種大型語言模型 (LLM) 並從中生成嵌入。Spring AI 透過 WatsonxAiEmbeddingModel 支援 Watsonx.ai 文字嵌入。

嵌入是一個浮點數的向量(列表)。兩個向量之間的距離衡量它們的相關性。小距離表示高度相關,大距離表示低度相關。

先決條件

您首先需要擁有 watsonx.ai 的 SaaS 實例(以及一個 IBM Cloud 帳戶)。

請參閱免費試用以免費試用 watsonx.ai

更多資訊請參閱這裡

新增儲存庫和 BOM

Spring AI 成品發佈在 Spring Milestone 和 Snapshot 儲存庫中。請參閱儲存庫章節,將這些儲存庫新增至您的建置系統。

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

自動配置

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

us-south.ml.cloud.ibm.com

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());
    }
}