From 69311483779842d857016e80b991467bda0aa32e Mon Sep 17 00:00:00 2001 From: jiwoo Date: Fri, 5 Jul 2024 10:54:31 +0900 Subject: [PATCH] Fix MilvusVectorStore max allowed dimension size to 32768 --- .../ai/vectorstore/MilvusVectorStore.java | 4 ++-- .../MilvusEmbeddingDimensionsTests.java | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/vectorstore/MilvusVectorStore.java b/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/vectorstore/MilvusVectorStore.java index ba113856a..1b0272389 100644 --- a/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/vectorstore/MilvusVectorStore.java +++ b/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/vectorstore/MilvusVectorStore.java @@ -225,8 +225,8 @@ public class MilvusVectorStore implements VectorStore, InitializingBean { */ public Builder withEmbeddingDimension(int newEmbeddingDimension) { - Assert.isTrue(newEmbeddingDimension >= 1 && newEmbeddingDimension <= 2048, - "Dimension has to be withing the boundaries 1 and 2048 (inclusively)"); + Assert.isTrue(newEmbeddingDimension >= 1 && newEmbeddingDimension <= 32768, + "Dimension has to be withing the boundaries 1 and 32768 (inclusively)"); this.embeddingDimension = newEmbeddingDimension; return this; diff --git a/vector-stores/spring-ai-milvus-store/src/test/java/org/springframework/ai/vectorstore/MilvusEmbeddingDimensionsTests.java b/vector-stores/spring-ai-milvus-store/src/test/java/org/springframework/ai/vectorstore/MilvusEmbeddingDimensionsTests.java index b6a73bc3d..9db458ae3 100644 --- a/vector-stores/spring-ai-milvus-store/src/test/java/org/springframework/ai/vectorstore/MilvusEmbeddingDimensionsTests.java +++ b/vector-stores/spring-ai-milvus-store/src/test/java/org/springframework/ai/vectorstore/MilvusEmbeddingDimensionsTests.java @@ -16,8 +16,11 @@ package org.springframework.ai.vectorstore; import io.milvus.client.MilvusServiceClient; +import org.assertj.core.api.ThrowableAssert; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; @@ -25,6 +28,7 @@ import org.springframework.ai.embedding.EmbeddingModel; import org.springframework.ai.vectorstore.MilvusVectorStore.MilvusVectorStoreConfig; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.Mockito.never; import static org.mockito.Mockito.only; import static org.mockito.Mockito.verify; @@ -32,6 +36,7 @@ import static org.mockito.Mockito.when; /** * @author Christian Tzolov + * @author Jiwoo Kim */ @ExtendWith(MockitoExtension.class) public class MilvusEmbeddingDimensionsTests { @@ -84,4 +89,16 @@ public class MilvusEmbeddingDimensionsTests { verify(embeddingModel, only()).dimensions(); } + @ParameterizedTest + @ValueSource(ints = { 0, 32769 }) + public void invalidDimensionsThrowException(final int explicitDimensions) { + // when + ThrowableAssert.ThrowingCallable actual = () -> MilvusVectorStoreConfig.builder() + .withEmbeddingDimension(explicitDimensions) + .build(); + + // then + assertThatThrownBy(actual).isInstanceOf(IllegalArgumentException.class); + } + }