Oracle Cloud Infrastructure (OCI) GenAI 嵌入
OCI GenAI 服務提供文字嵌入,支援按需模型或專用 AI 叢集。
OCI 嵌入模型頁面和OCI 文字嵌入頁面提供了有關在 OCI 上使用和託管嵌入模型的詳細資訊。
自動配置
|
Spring AI 自動配置、啟動模組的工件名稱發生了重大變化。請參閱 升級說明 以獲取更多資訊。 |
Spring AI 為 OCI GenAI 嵌入客戶端提供 Spring Boot 自動配置。要啟用它,請將以下依賴項新增到專案的 Maven pom.xml 檔案中
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-oci-genai</artifactId>
</dependency>
或新增到您的 Gradle build.gradle 構建檔案中。
dependencies {
implementation 'org.springframework.ai:spring-ai-starter-model-oci-genai'
}
| 請參閱 依賴項管理 部分,將 Spring AI BOM 新增到您的構建檔案中。 |
嵌入屬性
字首 spring.ai.oci.genai 是用於配置與 OCI GenAI 連線的屬性字首。
| 財產 | 描述 | 預設值 |
|---|---|---|
spring.ai.oci.genai.authenticationType |
用於向 OCI 進行身份驗證的身份驗證型別。可以是 |
file |
spring.ai.oci.genai.region |
OCI 服務區域。 |
us-chicago-1 |
spring.ai.oci.genai.tenantId |
OCI 租戶 OCID,在使用 |
- |
spring.ai.oci.genai.userId |
OCI 使用者 OCID,在使用 |
- |
spring.ai.oci.genai.fingerprint |
私鑰指紋,在使用 |
- |
spring.ai.oci.genai.privateKey |
私鑰內容,在使用 |
- |
spring.ai.oci.genai.passPhrase |
可選私鑰密碼短語,在透過 |
- |
spring.ai.oci.genai.file |
OCI 配置檔案路徑。在透過 |
<使用者主目錄>/.oci/config |
spring.ai.oci.genai.profile |
OCI 配置檔名。在透過 |
DEFAULT |
spring.ai.oci.genai.endpoint |
可選 OCI GenAI 端點。 |
- |
|
嵌入自動配置的啟用和停用現在透過字首為 要啟用,請設定 spring.ai.model.embedding=oci-genai(預設已啟用) 要停用,請設定 spring.ai.model.embedding=none(或任何不匹配 oci-genai 的值) 此更改是為了允許配置多個模型。 |
字首 spring.ai.oci.genai.embedding 是配置 OCI GenAI 的 EmbeddingModel 實現的屬性字首。
| 財產 | 描述 | 預設值 |
|---|---|---|
spring.ai.oci.genai.embedding.enabled(已移除且不再有效) |
啟用 OCI GenAI 嵌入模型。 |
true |
spring.ai.model.embedding |
啟用 OCI GenAI 嵌入模型。 |
oci-genai |
spring.ai.oci.genai.embedding.compartment |
模型隔間 OCID。 |
- |
spring.ai.oci.genai.embedding.servingMode |
要使用的模型服務模式。可以是 |
按需 |
spring.ai.oci.genai.embedding.truncate |
如果文字超出嵌入上下文,如何截斷文字。可以是 |
END |
spring.ai.oci.genai.embedding.model |
用於嵌入的模型或模型端點。 |
- |
所有以 spring.ai.oci.genai.embedding.options 為字首的屬性都可以在執行時透過向 EmbeddingRequest 呼叫新增請求特定的執行時選項來覆蓋。 |
執行時選項
OCIEmbeddingOptions 提供嵌入請求的配置資訊。OCIEmbeddingOptions 提供了一個構建器來建立這些選項。
在啟動時,使用 OCIEmbeddingOptions 建構函式設定所有嵌入請求使用的預設選項。在執行時,您可以透過將 OCIEmbeddingOptions 例項傳遞給 EmbeddingRequest 請求來覆蓋預設選項。
例如,為特定請求覆蓋預設模型名稱
EmbeddingResponse embeddingResponse = embeddingModel.call(
new EmbeddingRequest(List.of("Hello World", "World is big and salvation is near"),
OCIEmbeddingOptions.builder()
.model("my-other-embedding-model")
.build()
));
示例程式碼
這將建立一個 EmbeddingModel 實現,您可以將其注入到您的類中。這是一個使用 EmbeddingModel 實現的簡單 @Controller 類的示例。
spring.ai.oci.genai.embedding.model=<your model>
spring.ai.oci.genai.embedding.compartment=<your model compartment>
@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);
}
}
手動配置
如果您不希望使用 Spring Boot 自動配置,您可以手動配置應用程式中的 OCIEmbeddingModel。為此,請將 spring-oci-genai-openai 依賴項新增到專案的 Maven pom.xml 檔案中
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-oci-genai-openai</artifactId>
</dependency>
或新增到您的 Gradle build.gradle 構建檔案中。
dependencies {
implementation 'org.springframework.ai:spring-oci-genai-openai'
}
| 請參閱 依賴項管理 部分,將 Spring AI BOM 新增到您的構建檔案中。 |
接下來,建立一個 OCIEmbeddingModel 例項並使用它計算兩個輸入文字之間的相似度。
final String EMBEDDING_MODEL = "cohere.embed-english-light-v2.0";
final String CONFIG_FILE = Paths.get(System.getProperty("user.home"), ".oci", "config").toString();
final String PROFILE = "DEFAULT";
final String REGION = "us-chicago-1";
final String COMPARTMENT_ID = System.getenv("OCI_COMPARTMENT_ID");
var authProvider = new ConfigFileAuthenticationDetailsProvider(
this.CONFIG_FILE, this.PROFILE);
var aiClient = GenerativeAiInferenceClient.builder()
.region(Region.valueOf(this.REGION))
.build(this.authProvider);
var options = OCIEmbeddingOptions.builder()
.model(this.EMBEDDING_MODEL)
.compartment(this.COMPARTMENT_ID)
.servingMode("on-demand")
.build();
var embeddingModel = new OCIEmbeddingModel(this.aiClient, this.options);
List<Double> embedding = this.embeddingModel.embed(new Document("How many provinces are in Canada?"));