diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfiguration.java index 9f0b8493c64..50f75891882 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfiguration.java @@ -86,7 +86,8 @@ public ChromaVectorStore vectorStore(EmbeddingModel embeddingModel, ChromaApi ch ChromaVectorStoreProperties storeProperties, ObjectProvider observationRegistry, ObjectProvider customObservationConvention, BatchingStrategy chromaBatchingStrategy) { - return ChromaVectorStore.builder(chromaApi) + return ChromaVectorStore.builder() + .chromaApi(chromaApi) .embeddingModel(embeddingModel) .collectionName(storeProperties.getCollectionName()) .initializeSchema(storeProperties.isInitializeSchema()) diff --git a/vector-stores/spring-ai-chroma-store/src/main/java/org/springframework/ai/chroma/vectorstore/ChromaVectorStore.java b/vector-stores/spring-ai-chroma-store/src/main/java/org/springframework/ai/chroma/vectorstore/ChromaVectorStore.java index f1827162fe1..80898ac17ce 100644 --- a/vector-stores/spring-ai-chroma-store/src/main/java/org/springframework/ai/chroma/vectorstore/ChromaVectorStore.java +++ b/vector-stores/spring-ai-chroma-store/src/main/java/org/springframework/ai/chroma/vectorstore/ChromaVectorStore.java @@ -102,7 +102,8 @@ public ChromaVectorStore(EmbeddingModel embeddingModel, ChromaApi chromaApi, Str boolean initializeSchema, ObservationRegistry observationRegistry, VectorStoreObservationConvention customObservationConvention, BatchingStrategy batchingStrategy) { - this(builder(chromaApi).embeddingModel(embeddingModel) + this(builder().chromaApi(chromaApi) + .embeddingModel(embeddingModel) .collectionName(collectionName) .initializeSchema(initializeSchema) .observationRegistry(observationRegistry) @@ -113,8 +114,11 @@ public ChromaVectorStore(EmbeddingModel embeddingModel, ChromaApi chromaApi, Str /** * @param builder {@link Builder} for chroma vector store */ - private ChromaVectorStore(ChromaBuilder builder) { + protected ChromaVectorStore(ChromaBuilder builder) { super(builder); + + Assert.notNull(builder.chromaApi, "ChromaApi must not be null"); + this.chromaApi = builder.chromaApi; this.collectionName = builder.collectionName; this.initializeSchema = builder.initializeSchema; @@ -151,8 +155,8 @@ public void afterPropertiesSet() throws Exception { } } - public static ChromaBuilder builder(ChromaApi chromaApi) { - return new ChromaBuilder(chromaApi); + public static ChromaBuilder builder() { + return new ChromaBuilder(); } @Override @@ -274,7 +278,7 @@ public VectorStoreObservationContext.Builder createObservationContextBuilder(Str public static class ChromaBuilder extends AbstractVectorStoreBuilder { - private final ChromaApi chromaApi; + private ChromaApi chromaApi; private String collectionName = DEFAULT_COLLECTION_NAME; @@ -286,9 +290,10 @@ public static class ChromaBuilder extends AbstractVectorStoreBuilder new ChromaVectorStore.ChromaBuilder(this.chromaApi).embeddingModel(this.embeddingModel) + assertThatThrownBy(() -> new ChromaVectorStore.ChromaBuilder().chromaApi(this.chromaApi) + .embeddingModel(this.embeddingModel) .collectionName("non-existent") .initializeSchema(false) .initializeImmediately(true) diff --git a/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/ChromaVectorStoreIT.java b/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/ChromaVectorStoreIT.java index 74ab85f5edb..c48c57a779b 100644 --- a/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/ChromaVectorStoreIT.java +++ b/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/ChromaVectorStoreIT.java @@ -252,7 +252,8 @@ public ChromaApi chromaApi(RestClient.Builder builder) { @Bean public VectorStore chromaVectorStore(EmbeddingModel embeddingModel, ChromaApi chromaApi) { - return ChromaVectorStore.builder(chromaApi) + return ChromaVectorStore.builder() + .chromaApi(chromaApi) .embeddingModel(embeddingModel) .collectionName("TestCollection") .initializeSchema(true) diff --git a/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/ChromaVectorStoreObservationIT.java b/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/ChromaVectorStoreObservationIT.java index 34846632efe..22157fee4fe 100644 --- a/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/ChromaVectorStoreObservationIT.java +++ b/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/ChromaVectorStoreObservationIT.java @@ -176,7 +176,8 @@ public ChromaApi chromaApi(RestClient.Builder builder) { @Bean public VectorStore chromaVectorStore(EmbeddingModel embeddingModel, ChromaApi chromaApi, ObservationRegistry observationRegistry) { - return ChromaVectorStore.builder(chromaApi) + return ChromaVectorStore.builder() + .chromaApi(chromaApi) .embeddingModel(embeddingModel) .collectionName("TestCollection") .initializeSchema(true) diff --git a/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/TokenSecuredChromaWhereIT.java b/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/TokenSecuredChromaWhereIT.java index bd8220d3ab7..88b5f56b8d0 100644 --- a/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/TokenSecuredChromaWhereIT.java +++ b/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/TokenSecuredChromaWhereIT.java @@ -144,7 +144,8 @@ public ChromaApi chromaApi(RestClient.Builder builder) { @Bean public VectorStore chromaVectorStore(EmbeddingModel embeddingModel, ChromaApi chromaApi) { - return ChromaVectorStore.builder(chromaApi) + return ChromaVectorStore.builder() + .chromaApi(chromaApi) .embeddingModel(embeddingModel) .collectionName("TestCollection") .initializeSchema(true)