This commit is contained in:
Christian Tzolov
2024-06-15 12:57:26 +02:00
parent baadf4cb53
commit 053fcb0153
2 changed files with 19 additions and 13 deletions

View File

@@ -15,9 +15,12 @@
*/
package org.springframework.ai.autoconfigure.vectorstore.oracle;
import javax.sql.DataSource;
import org.springframework.ai.embedding.EmbeddingModel;
import org.springframework.ai.vectorstore.OracleVectorStore;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration;
@@ -25,14 +28,13 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
/**
* @author Loïc Lefèvre
*/
@AutoConfiguration(after = JdbcTemplateAutoConfiguration.class)
@ConditionalOnClass({ OracleVectorStore.class, DataSource.class, JdbcTemplate.class })
@EnableConfigurationProperties(OracleVectorStoreProperties.class)
@ImportAutoConfiguration(classes = JdbcTemplateAutoConfiguration.class)
public class OracleVectorStoreAutoConfiguration {
@Bean

View File

@@ -15,28 +15,30 @@
*/
package org.springframework.ai.autoconfigure.vectorstore.oracle;
import static org.assertj.core.api.Assertions.assertThat;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
import org.junit.jupiter.api.Test;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.oracle.OracleContainer;
import org.testcontainers.utility.MountableFile;
import org.springframework.ai.document.Document;
import org.springframework.ai.embedding.EmbeddingModel;
import org.springframework.ai.transformers.TransformersEmbeddingModel;
import org.springframework.ai.vectorstore.SearchRequest;
import org.springframework.ai.vectorstore.VectorStore;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.DefaultResourceLoader;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.oracle.OracleContainer;
import org.testcontainers.utility.MountableFile;
import static org.assertj.core.api.Assertions.assertThat;
/**
* @author Christian Tzolov
@@ -55,13 +57,15 @@ public class OracleVectorStoreAutoConfigurationIT {
new Document(getText("classpath:/test/data/great.depression.txt"), Map.of("depression", "bad")));
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(OracleVectorStoreAutoConfiguration.class))
.withConfiguration(
AutoConfigurations.of(OracleVectorStoreAutoConfiguration.class, DataSourceAutoConfiguration.class))
.withUserConfiguration(Config.class)
.withPropertyValues("spring.ai.vectorstore.oracle.distanceType=COSINE",
.withPropertyValues("test.spring.ai.vectorstore.oracle.distanceType=COSINE",
"test.spring.ai.vectorstore.oracle.dimensions=384",
// JdbcTemplate configuration
String.format("spring.datasource.url=jdbc:oracle:thin:@//%s:%d/%s", oracle23aiContainer.getHost(),
oracle23aiContainer.getMappedPort(1521), "freepdb1"),
"spring.datasource.username=mlops", "spring.datasource.password=mlops",
String.format("spring.datasource.url=%s", oracle23aiContainer.getJdbcUrl()),
String.format("spring.datasource.username=%s", oracle23aiContainer.getUsername()),
String.format("spring.datasource.password=%s", oracle23aiContainer.getPassword()),
"spring.datasource.type=oracle.jdbc.pool.OracleDataSource");
@Test