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 9f0b8493c..50f758918 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 class ChromaVectorStoreAutoConfiguration { 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 f1827162f..80898ac17 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 class ChromaVectorStore extends AbstractObservationVectorStore implements 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 class ChromaVectorStore extends AbstractObservationVectorStore implements /** * @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 class ChromaVectorStore extends AbstractObservationVectorStore implements } } - public static ChromaBuilder builder(ChromaApi chromaApi) { - return new ChromaBuilder(chromaApi); + public static ChromaBuilder builder() { + return new ChromaBuilder(); } @Override @@ -274,7 +278,7 @@ public class ChromaVectorStore extends AbstractObservationVectorStore implements public static class ChromaBuilder extends AbstractVectorStoreBuilder { - private final ChromaApi chromaApi; + private ChromaApi chromaApi; private String collectionName = DEFAULT_COLLECTION_NAME; @@ -286,9 +290,10 @@ public class ChromaVectorStore extends AbstractObservationVectorStore implements private boolean initializeImmediately = false; - public ChromaBuilder(ChromaApi chromaApi) { + public ChromaBuilder chromaApi(ChromaApi chromaApi) { Assert.notNull(chromaApi, "ChromaApi must not be null"); this.chromaApi = chromaApi; + return this; } /** diff --git a/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/BasicAuthChromaWhereIT.java b/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/BasicAuthChromaWhereIT.java index 6444ff795..8654f7d5b 100644 --- a/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/BasicAuthChromaWhereIT.java +++ b/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/BasicAuthChromaWhereIT.java @@ -111,7 +111,8 @@ public class BasicAuthChromaWhereIT { @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/ChromaApiIT.java b/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/ChromaApiIT.java index 79527ec8b..f0c5b1511 100644 --- a/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/ChromaApiIT.java +++ b/vector-stores/spring-ai-chroma-store/src/test/java/org/springframework/ai/chroma/vectorstore/ChromaApiIT.java @@ -207,7 +207,8 @@ public class ChromaApiIT { assertThat(collection).isNotNull(); assertThat(collection.name()).isEqualTo("test-collection"); - ChromaVectorStore store = ChromaVectorStore.builder(this.chromaApi) + ChromaVectorStore store = ChromaVectorStore.builder() + .chromaApi(this.chromaApi) .embeddingModel(this.embeddingModel) .collectionName("test-collection") .initializeImmediately(true) @@ -219,7 +220,7 @@ public class ChromaApiIT { @Test void shouldCreateNewCollectionWhenSchemaInitializationEnabled() { - ChromaVectorStore store = new ChromaVectorStore.ChromaBuilder(this.chromaApi) + ChromaVectorStore store = new ChromaVectorStore.ChromaBuilder().chromaApi(this.chromaApi) .embeddingModel(this.embeddingModel) .collectionName("new-collection") .initializeSchema(true) @@ -236,7 +237,8 @@ public class ChromaApiIT { @Test void shouldFailWhenCollectionDoesNotExist() { - assertThatThrownBy(() -> 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 74ab85f5e..c48c57a77 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 class ChromaVectorStoreIT { @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 34846632e..22157fee4 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 class ChromaVectorStoreObservationIT { @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 bd8220d3a..88b5f56b8 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 class TokenSecuredChromaWhereIT { @Bean public VectorStore chromaVectorStore(EmbeddingModel embeddingModel, ChromaApi chromaApi) { - return ChromaVectorStore.builder(chromaApi) + return ChromaVectorStore.builder() + .chromaApi(chromaApi) .embeddingModel(embeddingModel) .collectionName("TestCollection") .initializeSchema(true)