Created
December 10, 2024 18:41
-
-
Save ilayaperumalg/cb4c54db0e47637bca7671312a01452c to your computer and use it in GitHub Desktop.
Custom Vector Store implementation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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