From a8dda0a8f14a3dceb0de06306bee847137fb761e Mon Sep 17 00:00:00 2001 From: Ilayaperumal Gopinathan Date: Fri, 6 Dec 2024 18:49:01 +0000 Subject: [PATCH] fix: Chroma VectorStore auto configuration - Add null check for the Chroma vector store ObservationConvention - Since the builder enforces non null check, the ChromaVectorStore builder in its autoconfiguration will only set the ObservationConvention if it is not null. --- .../chroma/ChromaVectorStoreAutoConfiguration.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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..3a1313f48 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,14 +86,17 @@ public class ChromaVectorStoreAutoConfiguration { ChromaVectorStoreProperties storeProperties, ObjectProvider observationRegistry, ObjectProvider customObservationConvention, BatchingStrategy chromaBatchingStrategy) { - return ChromaVectorStore.builder(chromaApi) + ChromaVectorStore.ChromaBuilder chromaBuilder = ChromaVectorStore.builder(chromaApi) .embeddingModel(embeddingModel) .collectionName(storeProperties.getCollectionName()) .initializeSchema(storeProperties.isInitializeSchema()) .observationRegistry(observationRegistry.getIfUnique(() -> ObservationRegistry.NOOP)) - .customObservationConvention(customObservationConvention.getIfAvailable(() -> null)) - .batchingStrategy(chromaBatchingStrategy) - .build(); + .batchingStrategy(chromaBatchingStrategy); + VectorStoreObservationConvention observationConvention = customObservationConvention.getIfAvailable(); + if (observationConvention != null) { + chromaBuilder.customObservationConvention(observationConvention); + } + return chromaBuilder.build(); } static class PropertiesChromaConnectionDetails implements ChromaConnectionDetails {