diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/gemfire/GemFireVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/gemfire/GemFireVectorStoreAutoConfiguration.java index 7ad24b007..d74de9d5c 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/gemfire/GemFireVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/gemfire/GemFireVectorStoreAutoConfiguration.java @@ -18,7 +18,6 @@ package org.springframework.ai.autoconfigure.vectorstore.gemfire; import org.springframework.ai.embedding.EmbeddingModel; import org.springframework.ai.vectorstore.GemFireVectorStore; -import org.springframework.ai.vectorstore.GemFireVectorStoreConfig; import org.springframework.ai.vectorstore.observation.VectorStoreObservationConvention; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfiguration; @@ -33,6 +32,7 @@ import io.micrometer.observation.ObservationRegistry; /** * @author Geet Rawat * @author Christian Tzolov + * @author Soby Chacko */ @AutoConfiguration @ConditionalOnClass({ GemFireVectorStore.class, EmbeddingModel.class }) @@ -52,9 +52,9 @@ public class GemFireVectorStoreAutoConfiguration { public GemFireVectorStore gemfireVectorStore(EmbeddingModel embeddingModel, GemFireVectorStoreProperties properties, GemFireConnectionDetails gemFireConnectionDetails, ObjectProvider observationRegistry, ObjectProvider customObservationConvention) { - var config = new GemFireVectorStoreConfig(); + var builder = new GemFireVectorStore.GemFireVectorStoreConfig.Builder(); - config.setHost(gemFireConnectionDetails.getHost()) + builder.setHost(gemFireConnectionDetails.getHost()) .setPort(gemFireConnectionDetails.getPort()) .setIndexName(properties.getIndexName()) .setBeamWidth(properties.getBeamWidth()) @@ -63,7 +63,7 @@ public class GemFireVectorStoreAutoConfiguration { .setVectorSimilarityFunction(properties.getVectorSimilarityFunction()) .setFields(properties.getFields()) .setSslEnabled(properties.isSslEnabled()); - return new GemFireVectorStore(config, embeddingModel, properties.isInitializeSchema(), + return new GemFireVectorStore(builder.build(), embeddingModel, properties.isInitializeSchema(), observationRegistry.getIfUnique(() -> ObservationRegistry.NOOP), customObservationConvention.getIfAvailable(() -> null)); } diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/gemfire/GemFireVectorStoreProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/gemfire/GemFireVectorStoreProperties.java index cc183f4e8..2e7e89cfe 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/gemfire/GemFireVectorStoreProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/gemfire/GemFireVectorStoreProperties.java @@ -17,11 +17,12 @@ package org.springframework.ai.autoconfigure.vectorstore.gemfire; import org.springframework.ai.autoconfigure.vectorstore.CommonVectorStoreProperties; -import org.springframework.ai.vectorstore.GemFireVectorStoreConfig; +import org.springframework.ai.vectorstore.GemFireVectorStore; import org.springframework.boot.context.properties.ConfigurationProperties; /** * @author Geet Rawat + * @author Soby Chacko */ @ConfigurationProperties(GemFireVectorStoreProperties.CONFIG_PREFIX) public class GemFireVectorStoreProperties extends CommonVectorStoreProperties { @@ -36,31 +37,31 @@ public class GemFireVectorStoreProperties extends CommonVectorStoreProperties { * "spring.ai.vectorstore.gemfire.host"; * */ - private String host = GemFireVectorStoreConfig.DEFAULT_HOST; + private String host = GemFireVectorStore.GemFireVectorStoreConfig.DEFAULT_HOST; /** * The port of the GemFire to connect to. To specify a custom port, use * "spring.ai.vectorstore.gemfire.port"; */ - private int port = GemFireVectorStoreConfig.DEFAULT_PORT; + private int port = GemFireVectorStore.GemFireVectorStoreConfig.DEFAULT_PORT; /** * The name of the index in the GemFire. To specify a custom index, use * "spring.ai.vectorstore.gemfire.index-name"; */ - private String indexName = GemFireVectorStoreConfig.DEFAULT_INDEX_NAME; + private String indexName = GemFireVectorStore.GemFireVectorStoreConfig.DEFAULT_INDEX_NAME; /** * The beam width for similarity queries. Default value is {@code 100}. To specify a * custom beam width, use "spring.ai.vectorstore.gemfire.beam-width"; */ - private int beamWidth = GemFireVectorStoreConfig.DEFAULT_BEAM_WIDTH; + private int beamWidth = GemFireVectorStore.GemFireVectorStoreConfig.DEFAULT_BEAM_WIDTH; /** * The maximum number of connections allowed. Default value is {@code 16}. To specify * custom number of connections, use "spring.ai.vectorstore.gemfire.max-connections"; */ - private int maxConnections = GemFireVectorStoreConfig.DEFAULT_MAX_CONNECTIONS; + private int maxConnections = GemFireVectorStore.GemFireVectorStoreConfig.DEFAULT_MAX_CONNECTIONS; /** * The similarity function to be used for vector comparisons. Default value is @@ -68,14 +69,14 @@ public class GemFireVectorStoreProperties extends CommonVectorStoreProperties { * "spring.ai.vectorstore.gemfire.vector-similarity-function"; * */ - private String vectorSimilarityFunction = GemFireVectorStoreConfig.DEFAULT_SIMILARITY_FUNCTION; + private String vectorSimilarityFunction = GemFireVectorStore.GemFireVectorStoreConfig.DEFAULT_SIMILARITY_FUNCTION; /** * The fields to be used for queries. Default value is an array containing * {@code "vector"}. To specify custom fields, use * "spring.ai.vectorstore.gemfire.fields" */ - private String[] fields = GemFireVectorStoreConfig.DEFAULT_FIELDS; + private String[] fields = GemFireVectorStore.GemFireVectorStoreConfig.DEFAULT_FIELDS; /** * The number of buckets to use for partitioning the data. Default value is {@code 0}. @@ -83,14 +84,14 @@ public class GemFireVectorStoreProperties extends CommonVectorStoreProperties { * To specify custom buckets, use "spring.ai.vectorstore.gemfire.buckets"; * */ - private int buckets = GemFireVectorStoreConfig.DEFAULT_BUCKETS; + private int buckets = GemFireVectorStore.GemFireVectorStoreConfig.DEFAULT_BUCKETS; /** * Set to true if GemFire cluster is ssl enabled * * To specify sslEnabled, use "spring.ai.vectorstore.gemfire.ssl-enabled"; */ - private boolean sslEnabled = GemFireVectorStoreConfig.DEFAULT_SSL_ENABLED; + private boolean sslEnabled = GemFireVectorStore.GemFireVectorStoreConfig.DEFAULT_SSL_ENABLED; public int getBeamWidth() { return beamWidth; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/gemfire/GemFireVectorStorePropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/gemfire/GemFireVectorStorePropertiesTests.java index 559e07778..c8ef301c0 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/gemfire/GemFireVectorStorePropertiesTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/gemfire/GemFireVectorStorePropertiesTests.java @@ -19,23 +19,26 @@ package org.springframework.ai.autoconfigure.vectorstore.gemfire; import static org.assertj.core.api.Assertions.assertThat; import org.junit.jupiter.api.Test; -import org.springframework.ai.vectorstore.GemFireVectorStoreConfig; + +import org.springframework.ai.vectorstore.GemFireVectorStore; /** * @author Geet Rawat + * @author Soby Chacko */ class GemFireVectorStorePropertiesTests { @Test void defaultValues() { var props = new GemFireVectorStoreProperties(); - assertThat(props.getIndexName()).isEqualTo(GemFireVectorStoreConfig.DEFAULT_INDEX_NAME); - assertThat(props.getHost()).isEqualTo(GemFireVectorStoreConfig.DEFAULT_HOST); - assertThat(props.getPort()).isEqualTo(GemFireVectorStoreConfig.DEFAULT_PORT); - assertThat(props.getBeamWidth()).isEqualTo(GemFireVectorStoreConfig.DEFAULT_BEAM_WIDTH); - assertThat(props.getMaxConnections()).isEqualTo(GemFireVectorStoreConfig.DEFAULT_MAX_CONNECTIONS); - assertThat(props.getFields()).isEqualTo(GemFireVectorStoreConfig.DEFAULT_FIELDS); - assertThat(props.getBuckets()).isEqualTo(GemFireVectorStoreConfig.DEFAULT_BUCKETS); + assertThat(props.getIndexName()).isEqualTo(GemFireVectorStore.GemFireVectorStoreConfig.DEFAULT_INDEX_NAME); + assertThat(props.getHost()).isEqualTo(GemFireVectorStore.GemFireVectorStoreConfig.DEFAULT_HOST); + assertThat(props.getPort()).isEqualTo(GemFireVectorStore.GemFireVectorStoreConfig.DEFAULT_PORT); + assertThat(props.getBeamWidth()).isEqualTo(GemFireVectorStore.GemFireVectorStoreConfig.DEFAULT_BEAM_WIDTH); + assertThat(props.getMaxConnections()) + .isEqualTo(GemFireVectorStore.GemFireVectorStoreConfig.DEFAULT_MAX_CONNECTIONS); + assertThat(props.getFields()).isEqualTo(GemFireVectorStore.GemFireVectorStoreConfig.DEFAULT_FIELDS); + assertThat(props.getBuckets()).isEqualTo(GemFireVectorStore.GemFireVectorStoreConfig.DEFAULT_BUCKETS); } @Test diff --git a/vector-stores/spring-ai-gemfire-store/src/main/java/org/springframework/ai/vectorstore/GemFireVectorStore.java b/vector-stores/spring-ai-gemfire-store/src/main/java/org/springframework/ai/vectorstore/GemFireVectorStore.java index a2a40c851..390de98f7 100644 --- a/vector-stores/spring-ai-gemfire-store/src/main/java/org/springframework/ai/vectorstore/GemFireVectorStore.java +++ b/vector-stores/spring-ai-gemfire-store/src/main/java/org/springframework/ai/vectorstore/GemFireVectorStore.java @@ -30,7 +30,6 @@ import org.springframework.ai.embedding.EmbeddingModel; import org.springframework.ai.observation.conventions.VectorStoreProvider; import org.springframework.ai.vectorstore.observation.AbstractObservationVectorStore; import org.springframework.ai.vectorstore.observation.VectorStoreObservationContext; -import org.springframework.ai.vectorstore.observation.VectorStoreObservationContext.Builder; import org.springframework.ai.vectorstore.observation.VectorStoreObservationConvention; import org.springframework.beans.factory.InitializingBean; import org.springframework.http.HttpMethod; @@ -58,6 +57,7 @@ import reactor.util.annotation.NonNull; * @author Geet Rawat * @author Christian Tzolov * @author Thomas Vitale + * @author Soby Chacko */ public class GemFireVectorStore extends AbstractObservationVectorStore implements InitializingBean { @@ -537,11 +537,160 @@ public class GemFireVectorStore extends AbstractObservationVectorStore implement } @Override - public Builder createObservationContextBuilder(String operationName) { + public VectorStoreObservationContext.Builder createObservationContextBuilder(String operationName) { return VectorStoreObservationContext.builder(VectorStoreProvider.GEMFIRE.value(), operationName) .withCollectionName(this.indexName) .withDimensions(this.embeddingModel.dimensions()) .withFieldName(EMBEDDINGS); } + public static class GemFireVectorStoreConfig { + + // Create Index DEFAULT Values + public static final String DEFAULT_HOST = "localhost"; + + public static final int DEFAULT_PORT = 8080; + + public static final String DEFAULT_INDEX_NAME = "spring-ai-gemfire-index"; + + public static final int UPPER_BOUND_BEAM_WIDTH = 3200; + + public static final int DEFAULT_BEAM_WIDTH = 100; + + private static final int UPPER_BOUND_MAX_CONNECTIONS = 512; + + public static final int DEFAULT_MAX_CONNECTIONS = 16; + + public static final String DEFAULT_SIMILARITY_FUNCTION = "COSINE"; + + public static final String[] DEFAULT_FIELDS = new String[] {}; + + public static final int DEFAULT_BUCKETS = 0; + + public static final boolean DEFAULT_SSL_ENABLED = false; + + String host; + + int port; + + String indexName; + + int beamWidth; + + int maxConnections; + + String vectorSimilarityFunction; + + String[] fields; + + int buckets; + + boolean sslEnabled; + + private GemFireVectorStoreConfig(Builder builder) { + this.host = builder.host; + this.port = builder.port; + this.sslEnabled = builder.sslEnabled; + this.indexName = builder.indexName; + this.beamWidth = builder.beamWidth; + this.maxConnections = builder.maxConnections; + this.buckets = builder.buckets; + this.vectorSimilarityFunction = builder.vectorSimilarityFunction; + this.fields = builder.fields; + } + + /** + * Start building a new configuration. + * @return The entry point for creating a new configuration. + */ + public static Builder builder() { + return new Builder(); + } + + public static class Builder { + + // Create Index DEFAULT Values + String host = GemFireVectorStoreConfig.DEFAULT_HOST; + + int port = GemFireVectorStoreConfig.DEFAULT_PORT; + + String indexName = GemFireVectorStoreConfig.DEFAULT_INDEX_NAME; + + int beamWidth = GemFireVectorStoreConfig.DEFAULT_BEAM_WIDTH; + + int maxConnections = GemFireVectorStoreConfig.DEFAULT_MAX_CONNECTIONS; + + String vectorSimilarityFunction = GemFireVectorStoreConfig.DEFAULT_SIMILARITY_FUNCTION; + + String[] fields = GemFireVectorStoreConfig.DEFAULT_FIELDS; + + int buckets = GemFireVectorStoreConfig.DEFAULT_BUCKETS; + + boolean sslEnabled = GemFireVectorStoreConfig.DEFAULT_SSL_ENABLED; + + public Builder setHost(String host) { + Assert.hasText(host, "host must have a value"); + this.host = host; + return this; + } + + public Builder setPort(int port) { + Assert.isTrue(port > 0, "port must be positive"); + this.port = port; + return this; + } + + public Builder setSslEnabled(boolean sslEnabled) { + this.sslEnabled = sslEnabled; + return this; + } + + public Builder setIndexName(String indexName) { + Assert.hasText(indexName, "indexName must have a value"); + this.indexName = indexName; + return this; + } + + public Builder setBeamWidth(int beamWidth) { + Assert.isTrue(beamWidth > 0, "beamWidth must be positive"); + Assert.isTrue(beamWidth <= GemFireVectorStoreConfig.UPPER_BOUND_BEAM_WIDTH, + "beamWidth must be less than or equal to " + GemFireVectorStoreConfig.UPPER_BOUND_BEAM_WIDTH); + this.beamWidth = beamWidth; + return this; + } + + public Builder setMaxConnections(int maxConnections) { + Assert.isTrue(maxConnections > 0, "maxConnections must be positive"); + Assert.isTrue(maxConnections <= GemFireVectorStoreConfig.UPPER_BOUND_MAX_CONNECTIONS, + "maxConnections must be less than or equal to " + + GemFireVectorStoreConfig.UPPER_BOUND_MAX_CONNECTIONS); + this.maxConnections = maxConnections; + return this; + } + + public Builder setBuckets(int buckets) { + Assert.isTrue(buckets >= 0, "bucket must be 1 or more"); + this.buckets = buckets; + return this; + } + + public Builder setVectorSimilarityFunction(String vectorSimilarityFunction) { + Assert.hasText(vectorSimilarityFunction, "vectorSimilarityFunction must have a value"); + this.vectorSimilarityFunction = vectorSimilarityFunction; + return this; + } + + public Builder setFields(String[] fields) { + this.fields = fields; + return this; + } + + public GemFireVectorStoreConfig build() { + return new GemFireVectorStoreConfig(this); + } + + } + + } + } diff --git a/vector-stores/spring-ai-gemfire-store/src/main/java/org/springframework/ai/vectorstore/GemFireVectorStoreConfig.java b/vector-stores/spring-ai-gemfire-store/src/main/java/org/springframework/ai/vectorstore/GemFireVectorStoreConfig.java deleted file mode 100644 index 2c0f1d098..000000000 --- a/vector-stores/spring-ai-gemfire-store/src/main/java/org/springframework/ai/vectorstore/GemFireVectorStoreConfig.java +++ /dev/null @@ -1,107 +0,0 @@ -package org.springframework.ai.vectorstore; - -import org.springframework.util.Assert; - -public final class GemFireVectorStoreConfig { - - // Create Index DEFAULT Values - public static final String DEFAULT_HOST = "localhost"; - - public static final int DEFAULT_PORT = 8080; - - public static final String DEFAULT_INDEX_NAME = "spring-ai-gemfire-index"; - - public static final int UPPER_BOUND_BEAM_WIDTH = 3200; - - public static final int DEFAULT_BEAM_WIDTH = 100; - - private static final int UPPER_BOUND_MAX_CONNECTIONS = 512; - - public static final int DEFAULT_MAX_CONNECTIONS = 16; - - public static final String DEFAULT_SIMILARITY_FUNCTION = "COSINE"; - - public static final String[] DEFAULT_FIELDS = new String[] {}; - - public static final int DEFAULT_BUCKETS = 0; - - public static final boolean DEFAULT_SSL_ENABLED = false; - - String host = GemFireVectorStoreConfig.DEFAULT_HOST; - - int port = DEFAULT_PORT; - - String indexName = DEFAULT_INDEX_NAME; - - int beamWidth = DEFAULT_BEAM_WIDTH; - - int maxConnections = DEFAULT_MAX_CONNECTIONS; - - String vectorSimilarityFunction = DEFAULT_SIMILARITY_FUNCTION; - - String[] fields = DEFAULT_FIELDS; - - int buckets = DEFAULT_BUCKETS; - - boolean sslEnabled = DEFAULT_SSL_ENABLED; - - public GemFireVectorStoreConfig() { - } - - public GemFireVectorStoreConfig setHost(String host) { - Assert.hasText(host, "host must have a value"); - this.host = host; - return this; - } - - public GemFireVectorStoreConfig setPort(int port) { - Assert.isTrue(port > 0, "port must be positive"); - this.port = port; - return this; - } - - public GemFireVectorStoreConfig setSslEnabled(boolean sslEnabled) { - this.sslEnabled = sslEnabled; - return this; - } - - public GemFireVectorStoreConfig setIndexName(String indexName) { - Assert.hasText(indexName, "indexName must have a value"); - this.indexName = indexName; - return this; - } - - public GemFireVectorStoreConfig setBeamWidth(int beamWidth) { - Assert.isTrue(beamWidth > 0, "beamWidth must be positive"); - Assert.isTrue(beamWidth <= GemFireVectorStoreConfig.UPPER_BOUND_BEAM_WIDTH, - "beamWidth must be less than or equal to " + GemFireVectorStoreConfig.UPPER_BOUND_BEAM_WIDTH); - this.beamWidth = beamWidth; - return this; - } - - public GemFireVectorStoreConfig setMaxConnections(int maxConnections) { - Assert.isTrue(maxConnections > 0, "maxConnections must be positive"); - Assert.isTrue(maxConnections <= GemFireVectorStoreConfig.UPPER_BOUND_MAX_CONNECTIONS, - "maxConnections must be less than or equal to " + GemFireVectorStoreConfig.UPPER_BOUND_MAX_CONNECTIONS); - this.maxConnections = maxConnections; - return this; - } - - public GemFireVectorStoreConfig setBuckets(int buckets) { - Assert.isTrue(buckets >= 0, "bucket must be 1 or more"); - this.buckets = buckets; - return this; - } - - public GemFireVectorStoreConfig setVectorSimilarityFunction(String vectorSimilarityFunction) { - Assert.hasText(vectorSimilarityFunction, "vectorSimilarityFunction must have a value"); - this.vectorSimilarityFunction = vectorSimilarityFunction; - return this; - } - - public GemFireVectorStoreConfig setFields(String[] fields) { - this.fields = fields; - return this; - } - -} diff --git a/vector-stores/spring-ai-gemfire-store/src/test/java/org/springframework/ai/vectorstore/GemFireVectorStoreIT.java b/vector-stores/spring-ai-gemfire-store/src/test/java/org/springframework/ai/vectorstore/GemFireVectorStoreIT.java index 51b8be858..98aa791d7 100644 --- a/vector-stores/spring-ai-gemfire-store/src/test/java/org/springframework/ai/vectorstore/GemFireVectorStoreIT.java +++ b/vector-stores/spring-ai-gemfire-store/src/test/java/org/springframework/ai/vectorstore/GemFireVectorStoreIT.java @@ -1,5 +1,5 @@ /* - * Copyright 2023 - 2024 the original author or authors. + * Copyright 2023-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -45,6 +45,7 @@ import org.springframework.core.io.DefaultResourceLoader; /** * @author Geet Rawat + * @author Soby Chacko * @since 1.0.0 */ public class GemFireVectorStoreIT { @@ -208,15 +209,12 @@ public class GemFireVectorStoreIT { public static class TestApplication { @Bean - public GemFireVectorStoreConfig gemfireVectorStoreConfig() { - return new GemFireVectorStoreConfig().setHost("localhost") + public GemFireVectorStore vectorStore(EmbeddingModel embeddingModel) { + return new GemFireVectorStore(GemFireVectorStore.GemFireVectorStoreConfig.builder() + .setHost("localhost") .setPort(HTTP_SERVICE_PORT) - .setIndexName(INDEX_NAME); - } - - @Bean - public GemFireVectorStore vectorStore(GemFireVectorStoreConfig config, EmbeddingModel embeddingModel) { - return new GemFireVectorStore(config, embeddingModel, true); + .setIndexName(INDEX_NAME) + .build(), embeddingModel, true); } @Bean diff --git a/vector-stores/spring-ai-gemfire-store/src/test/java/org/springframework/ai/vectorstore/GemFireVectorStoreObservationIT.java b/vector-stores/spring-ai-gemfire-store/src/test/java/org/springframework/ai/vectorstore/GemFireVectorStoreObservationIT.java index c4808a1b6..db2f370ad 100644 --- a/vector-stores/spring-ai-gemfire-store/src/test/java/org/springframework/ai/vectorstore/GemFireVectorStoreObservationIT.java +++ b/vector-stores/spring-ai-gemfire-store/src/test/java/org/springframework/ai/vectorstore/GemFireVectorStoreObservationIT.java @@ -55,6 +55,7 @@ import static org.hamcrest.Matchers.hasSize; /** * @author Christian Tzolov * @author Thomas Vitale + * @author Soby Chacko */ public class GemFireVectorStoreObservationIT { @@ -193,16 +194,12 @@ public class GemFireVectorStoreObservationIT { } @Bean - public GemFireVectorStoreConfig gemfireVectorStoreConfig() { - return new GemFireVectorStoreConfig().setHost("localhost") + public GemFireVectorStore vectorStore(EmbeddingModel embeddingModel, ObservationRegistry observationRegistry) { + return new GemFireVectorStore(GemFireVectorStore.GemFireVectorStoreConfig.builder() + .setHost("localhost") .setPort(HTTP_SERVICE_PORT) - .setIndexName(TEST_INDEX_NAME); - } - - @Bean - public GemFireVectorStore vectorStore(GemFireVectorStoreConfig config, EmbeddingModel embeddingModel, - ObservationRegistry observationRegistry) { - return new GemFireVectorStore(config, embeddingModel, true, observationRegistry, null); + .setIndexName(TEST_INDEX_NAME) + .build(), embeddingModel, true, observationRegistry, null); } @Bean