Fix Mongo VectorStore persistance issue

Fixes #698
This commit is contained in:
Mark Pollack
2024-07-05 16:26:02 -04:00
parent 24da2efc86
commit a1afb0db46
2 changed files with 42 additions and 3 deletions

View File

@@ -17,15 +17,22 @@ package org.springframework.ai.autoconfigure.vectorstore.mongo;
import org.springframework.ai.embedding.EmbeddingModel;
import org.springframework.ai.vectorstore.MongoDBAtlasVectorStore;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoCustomConversions;
import org.springframework.util.MimeType;
import org.springframework.util.StringUtils;
import java.util.Arrays;
/**
* @author Eddú Meléndez
* @author Christian Tzolov
@@ -57,4 +64,38 @@ public class MongoDBAtlasVectorStoreAutoConfiguration {
return new MongoDBAtlasVectorStore(mongoTemplate, embeddingModel, config, properties.isInitializeSchema());
}
@Bean
public Converter<MimeType, String> mimeTypeToStringConverter() {
return new Converter<MimeType, String>() {
@Override
public String convert(MimeType source) {
return source.toString();
}
};
}
@Bean
public Converter<String, MimeType> stringToMimeTypeConverter() {
return new Converter<String, MimeType>() {
@Override
public MimeType convert(String source) {
return MimeType.valueOf(source);
}
};
}
@Bean
public BeanPostProcessor mongoCustomConversionsPostProcessor() {
return new BeanPostProcessor() {
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof MongoCustomConversions) {
return new MongoCustomConversions(
Arrays.asList(mimeTypeToStringConverter(), stringToMimeTypeConverter()));
}
return bean;
}
};
}
}

View File

@@ -15,7 +15,6 @@
*/
package org.springframework.ai.autoconfigure.vectorstore.mongo;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration;
import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration;
@@ -43,11 +42,10 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Eddú Meléndez
*/
@Testcontainers
@Disabled("Disabled due to https://github.com/spring-projects/spring-ai/issues/698")
class MongoDBAtlasVectorStoreAutoConfigurationIT {
@Container
static GenericContainer<?> mongo = new GenericContainer<>("mongodb/atlas:v1.15.1").withPrivilegedMode(true)
static GenericContainer<?> mongo = new GenericContainer<>("mongodb/atlas:v1.24.0").withPrivilegedMode(true)
.withCommand("/bin/bash", "-c",
"atlas deployments setup local-test --type local --port 27778 --bindIpAll --username root --password root --force && tail -f /dev/null")
.withExposedPorts(27778)