Skip to content

Instantly share code, notes, and snippets.

@ilayaperumalg
Created December 10, 2024 18:41
Show Gist options
  • Select an option

  • Save ilayaperumalg/cb4c54db0e47637bca7671312a01452c to your computer and use it in GitHub Desktop.

Select an option

Save ilayaperumalg/cb4c54db0e47637bca7671312a01452c to your computer and use it in GitHub Desktop.
Custom Vector Store implementation
diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfiguration.java
index 90d48ac5..4f247378 100644
--- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfiguration.java
+++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfiguration.java
@@ -27,6 +27,7 @@ import io.milvus.param.MetricType;
import org.springframework.ai.embedding.BatchingStrategy;
import org.springframework.ai.embedding.EmbeddingModel;
import org.springframework.ai.embedding.TokenCountBatchingStrategy;
+import org.springframework.ai.milvus.vectorstore.CustomMilvusVectorStore;
import org.springframework.ai.milvus.vectorstore.MilvusVectorStore;
import org.springframework.ai.milvus.vectorstore.MilvusVectorStore.MilvusVectorStoreConfig;
import org.springframework.ai.vectorstore.observation.VectorStoreObservationConvention;
@@ -71,7 +72,7 @@ public class MilvusVectorStoreAutoConfiguration {
ObjectProvider<ObservationRegistry> observationRegistry,
ObjectProvider<VectorStoreObservationConvention> customObservationConvention) {
- return MilvusVectorStore.builder(milvusClient)
+ return CustomMilvusVectorStore.builder(milvusClient).customName("test")
.embeddingModel(embeddingModel)
.initializeSchema(properties.isInitializeSchema())
.batchingStrategy(batchingStrategy)
diff --git a/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/milvus/vectorstore/CustomMilvusVectorStore.java b/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/milvus/vectorstore/CustomMilvusVectorStore.java
index 24940cd4..4f8748e8 100644
--- a/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/milvus/vectorstore/CustomMilvusVectorStore.java
+++ b/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/milvus/vectorstore/CustomMilvusVectorStore.java
@@ -1,4 +1,58 @@
+/*
+ * 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package org.springframework.ai.milvus.vectorstore;
-public class CustomMilvusVectorStore {
+import io.milvus.client.MilvusServiceClient;
+
+public class CustomMilvusVectorStore extends MilvusVectorStore {
+
+ private String customName;
+
+ public CustomMilvusVectorStore(CustomBuilder customBuilder) {
+ super(customBuilder);
+ this.customName = customBuilder.customName;
+ }
+
+ public static CustomBuilder builder(MilvusServiceClient milvusClient) {
+ return new CustomBuilder(milvusClient);
+ }
+
+ public static class CustomBuilder extends MilvusVectorStore.MilvusBuilder {
+
+ private String customName;
+
+ public CustomBuilder customName(String customName) {
+ this.customName = customName;
+ return this;
+ }
+
+ /**
+ * Creates a new MilvusBuilder instance with the specified Milvus client.
+ *
+ * @param milvusClient the Milvus service client to use for database operations
+ * @throws IllegalArgumentException if milvusClient is null
+ */
+ public CustomBuilder(MilvusServiceClient milvusClient) {
+ super(milvusClient);
+ }
+
+ @Override
+ public CustomMilvusVectorStore build() {
+ return new CustomMilvusVectorStore(this);
+ }
+ }
}
diff --git a/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/milvus/vectorstore/MilvusVectorStore.java b/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/milvus/vectorstore/MilvusVectorStore.java
index 4c17d6d4..bb53cd2c 100644
--- a/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/milvus/vectorstore/MilvusVectorStore.java
+++ b/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/milvus/vectorstore/MilvusVectorStore.java
@@ -175,7 +175,7 @@ public class MilvusVectorStore extends AbstractObservationVectorStore implements
/**
* @param builder {@link Builder} for chroma vector store
*/
- private MilvusVectorStore(MilvusBuilder builder) {
+ protected MilvusVectorStore(MilvusBuilder builder) {
super(builder);
this.milvusClient = builder.milvusClient;
this.batchingStrategy = builder.batchingStrategy;
@@ -509,7 +509,7 @@ public class MilvusVectorStore extends AbstractObservationVectorStore implements
return SIMILARITY_TYPE_MAPPING.get(this.metricType).value();
}
- public static final class MilvusBuilder extends AbstractVectorStoreBuilder<MilvusBuilder> {
+ public static class MilvusBuilder extends AbstractVectorStoreBuilder<MilvusBuilder> {
private String databaseName = DEFAULT_DATABASE_NAME;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment