diff --git a/auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/pom.xml b/auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/pom.xml new file mode 100644 index 000000000..c03afa972 --- /dev/null +++ b/auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/pom.xml @@ -0,0 +1,113 @@ + + + + + 4.0.0 + + org.springframework.ai + spring-ai + 1.0.0-SNAPSHOT + ../../../pom.xml + + spring-ai-autoconfigure-vector-store-couchbase + jar + Spring AI Auto Configuration for Couchbase vector store + Spring AI Auto Configuration for Couchbase vector store + https://github.com/spring-projects/spring-ai + + + https://github.com/spring-projects/spring-ai + git://github.com/spring-projects/spring-ai.git + git@github.com:spring-projects/spring-ai.git + + + + + + org.springframework.ai + spring-ai-couchbase-store + ${project.parent.version} + true + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-configuration-processor + true + + + + org.springframework.ai + spring-ai-test + ${project.parent.version} + test + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-testcontainers + test + + + org.testcontainers + testcontainers + test + + + org.testcontainers + junit-jupiter + test + + + org.awaitility + awaitility + test + + + org.testcontainers + couchbase + test + + + org.springframework.ai + spring-ai-transformers + ${project.parent.version} + test + + + org.springframework.ai + spring-ai-autoconfigure-retry + ${project.parent.version} + test + + + org.springframework.ai + spring-ai-autoconfigure-model-openai + ${project.parent.version} + test + + + diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/couchbase/CouchbaseSearchVectorStoreAutoConfiguration.java b/auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/src/main/java/org/springframework/ai/vectorstore/couchbase/autoconfigure/CouchbaseSearchVectorStoreAutoConfiguration.java similarity index 95% rename from spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/couchbase/CouchbaseSearchVectorStoreAutoConfiguration.java rename to auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/src/main/java/org/springframework/ai/vectorstore/couchbase/autoconfigure/CouchbaseSearchVectorStoreAutoConfiguration.java index 30cb8dad5..96adb2a48 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/couchbase/CouchbaseSearchVectorStoreAutoConfiguration.java +++ b/auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/src/main/java/org/springframework/ai/vectorstore/couchbase/autoconfigure/CouchbaseSearchVectorStoreAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2023 - 2024 the original author or authors. + * Copyright 2023 - 2025 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. @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.autoconfigure.vectorstore.couchbase; +package org.springframework.ai.vectorstore.couchbase.autoconfigure; import com.couchbase.client.java.Cluster; import org.springframework.ai.embedding.EmbeddingModel; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/couchbase/CouchbaseSearchVectorStoreProperties.java b/auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/src/main/java/org/springframework/ai/vectorstore/couchbase/autoconfigure/CouchbaseSearchVectorStoreProperties.java similarity index 93% rename from spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/couchbase/CouchbaseSearchVectorStoreProperties.java rename to auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/src/main/java/org/springframework/ai/vectorstore/couchbase/autoconfigure/CouchbaseSearchVectorStoreProperties.java index 288df510c..0aeb86a41 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/couchbase/CouchbaseSearchVectorStoreProperties.java +++ b/auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/src/main/java/org/springframework/ai/vectorstore/couchbase/autoconfigure/CouchbaseSearchVectorStoreProperties.java @@ -1,5 +1,5 @@ /* - * Copyright 2023 - 2024 the original author or authors. + * Copyright 2023 - 2025 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. @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.autoconfigure.vectorstore.couchbase; +package org.springframework.ai.vectorstore.couchbase.autoconfigure; -import org.springframework.ai.autoconfigure.vectorstore.CommonVectorStoreProperties; import org.springframework.ai.vectorstore.CouchbaseIndexOptimization; import org.springframework.ai.vectorstore.CouchbaseSimilarityFunction; +import org.springframework.ai.vectorstore.properties.CommonVectorStoreProperties; import org.springframework.boot.context.properties.ConfigurationProperties; /** diff --git a/auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 000000000..f4fa474fa --- /dev/null +++ b/auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,16 @@ +# +# Copyright 2025-2025 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. +# +org.springframework.ai.vectorstore.couchbase.autoconfigure.CouchbaseSearchVectorStoreAutoConfiguration diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/couchbase/CouchbaseContainerMetadata.java b/auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/src/test/java/org/springframework/ai/vectorstore/couchbase/autoconfigure/CouchbaseContainerMetadata.java similarity index 90% rename from spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/couchbase/CouchbaseContainerMetadata.java rename to auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/src/test/java/org/springframework/ai/vectorstore/couchbase/autoconfigure/CouchbaseContainerMetadata.java index ae3dbbf65..73bf9533e 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/couchbase/CouchbaseContainerMetadata.java +++ b/auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/src/test/java/org/springframework/ai/vectorstore/couchbase/autoconfigure/CouchbaseContainerMetadata.java @@ -1,5 +1,5 @@ /* - * Copyright 2023 - 2024 the original author or authors. + * Copyright 2023 - 2025 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. @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.autoconfigure.vectorstore.couchbase; +package org.springframework.ai.vectorstore.couchbase.autoconfigure; import org.testcontainers.couchbase.BucketDefinition; import org.testcontainers.utility.DockerImageName; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/couchbase/CouchbaseSearchVectorStoreAutoConfigurationIT.java b/auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/src/test/java/org/springframework/ai/vectorstore/couchbase/autoconfigure/CouchbaseSearchVectorStoreAutoConfigurationIT.java similarity index 87% rename from spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/couchbase/CouchbaseSearchVectorStoreAutoConfigurationIT.java rename to auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/src/test/java/org/springframework/ai/vectorstore/couchbase/autoconfigure/CouchbaseSearchVectorStoreAutoConfigurationIT.java index a53e02862..936a68d47 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/couchbase/CouchbaseSearchVectorStoreAutoConfigurationIT.java +++ b/auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/src/test/java/org/springframework/ai/vectorstore/couchbase/autoconfigure/CouchbaseSearchVectorStoreAutoConfigurationIT.java @@ -1,5 +1,5 @@ /* - * Copyright 2023 - 2024 the original author or authors. + * Copyright 2023 - 2025 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. @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.autoconfigure.vectorstore.couchbase; +package org.springframework.ai.vectorstore.couchbase.autoconfigure; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; -import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration; -import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.document.Document; +import org.springframework.ai.model.openai.autoconfigure.OpenAiEmbeddingAutoConfiguration; +import org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration; import org.springframework.ai.vectorstore.CouchbaseIndexOptimization; import org.springframework.ai.vectorstore.CouchbaseSimilarityFunction; import org.springframework.ai.vectorstore.SearchRequest; @@ -39,7 +39,10 @@ import java.util.List; import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.ai.autoconfigure.vectorstore.couchbase.CouchbaseContainerMetadata.*; +import static org.springframework.ai.vectorstore.couchbase.autoconfigure.CouchbaseContainerMetadata.COUCHBASE_IMAGE_ENTERPRISE; +import static org.springframework.ai.vectorstore.couchbase.autoconfigure.CouchbaseContainerMetadata.PASSWORD; +import static org.springframework.ai.vectorstore.couchbase.autoconfigure.CouchbaseContainerMetadata.USERNAME; +import static org.springframework.ai.vectorstore.couchbase.autoconfigure.CouchbaseContainerMetadata.bucketDefinition; /** * @author Laurent Doguin @@ -63,7 +66,7 @@ class CouchbaseSearchVectorStoreAutoConfigurationIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(CouchbaseAutoConfiguration.class, CouchbaseSearchVectorStoreAutoConfiguration.class, RestClientAutoConfiguration.class, - SpringAiRetryAutoConfiguration.class, OpenAiAutoConfiguration.class)) + SpringAiRetryAutoConfiguration.class, OpenAiEmbeddingAutoConfiguration.class)) .withPropertyValues("spring.couchbase.connection-string=" + couchbaseContainer.getConnectionString(), "spring.couchbase.username=" + couchbaseContainer.getUsername(), "spring.couchbase.password=" + couchbaseContainer.getPassword(), @@ -112,7 +115,7 @@ class CouchbaseSearchVectorStoreAutoConfigurationIT { new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(CouchbaseAutoConfiguration.class, CouchbaseSearchVectorStoreAutoConfiguration.class, RestClientAutoConfiguration.class, - SpringAiRetryAutoConfiguration.class, OpenAiAutoConfiguration.class)) + SpringAiRetryAutoConfiguration.class, OpenAiEmbeddingAutoConfiguration.class)) .withPropertyValues("spring.couchbase.connection-string=" + couchbaseContainer.getConnectionString(), "spring.couchbase.username=" + couchbaseContainer.getUsername(), "spring.couchbase.password=" + couchbaseContainer.getPassword(), diff --git a/pom.xml b/pom.xml index a869c5626..b3e7f63e6 100644 --- a/pom.xml +++ b/pom.xml @@ -65,8 +65,6 @@ auto-configurations/models/spring-ai-autoconfigure-model-watsonx-ai auto-configurations/models/spring-ai-autoconfigure-model-zhipuai - - auto-configurations/mcp/spring-ai-autoconfigure-mcp-client auto-configurations/mcp/spring-ai-autoconfigure-mcp-server @@ -74,6 +72,7 @@ auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-azure-cosmos-db auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-cassandra auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-chroma + auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-elasticsearch auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-gemfire auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-hanadb @@ -124,12 +123,12 @@ vector-stores/spring-ai-weaviate-store spring-ai-spring-boot-starters/spring-ai-starter-coherence-store - spring-ai-spring-boot-starters/spring-ai-starter-couchbase-store spring-ai-spring-boot-starters/spring-ai-starter-vector-store-aws-opensearch spring-ai-spring-boot-starters/spring-ai-starter-vector-store-azure spring-ai-spring-boot-starters/spring-ai-starter-vector-store-azure-cosmos-db spring-ai-spring-boot-starters/spring-ai-starter-vector-store-cassandra spring-ai-spring-boot-starters/spring-ai-starter-vector-store-chroma + spring-ai-spring-boot-starters/spring-ai-starter-vector-store-couchbase spring-ai-spring-boot-starters/spring-ai-starter-vector-store-elasticsearch spring-ai-spring-boot-starters/spring-ai-starter-vector-store-gemfire spring-ai-spring-boot-starters/spring-ai-starter-vector-store-hanadb diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/couchbase.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/couchbase.adoc index f6fbb34fd..5a29d793f 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/couchbase.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/couchbase.adoc @@ -23,7 +23,7 @@ To enable it, add the following dependency to your project's Maven `pom.xml` fil ---- org.springframework.ai - spring-ai-couchbase-store-spring-boot-starter + spring-ai-starter-vector-store-couchbase ---- diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-couchbase-store/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-vector-store-couchbase/pom.xml similarity index 80% rename from spring-ai-spring-boot-starters/spring-ai-starter-couchbase-store/pom.xml rename to spring-ai-spring-boot-starters/spring-ai-starter-vector-store-couchbase/pom.xml index 632ec455a..ca7a05958 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-couchbase-store/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-vector-store-couchbase/pom.xml @@ -7,7 +7,7 @@ 1.0.0-SNAPSHOT ../../pom.xml - spring-ai-couchbase-store-spring-boot-starter + spring-ai-starter-vector-store-couchbase jar Spring AI Starter - Couchbase Store Spring AI Couchbase Store Auto Configuration @@ -28,10 +28,14 @@ org.springframework.ai - spring-ai-spring-boot-autoconfigure + spring-ai-autoconfigure-vector-store-couchbase + ${project.parent.version} + + + org.springframework.ai + spring-ai-autoconfigure-vector-store-observation ${project.parent.version} - org.springframework.ai spring-ai-couchbase-store