Skip to content

Commit 1c09fb7

Browse files
committed
More refactorings - vector store builders, adding deprecations
1 parent 4179a76 commit 1c09fb7

File tree

3 files changed

+56
-138
lines changed

3 files changed

+56
-138
lines changed

spring-ai-core/src/main/java/org/springframework/ai/vectorstore/observation/AbstractObservationVectorStore.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import io.micrometer.observation.ObservationRegistry;
2323

2424
import org.springframework.ai.document.Document;
25+
import org.springframework.ai.embedding.EmbeddingModel;
26+
import org.springframework.ai.vectorstore.AbstractVectorStoreBuilder;
2527
import org.springframework.ai.vectorstore.SearchRequest;
2628
import org.springframework.ai.vectorstore.VectorStore;
2729
import org.springframework.lang.Nullable;
@@ -31,6 +33,7 @@
3133
* capabilities.
3234
*
3335
* @author Christian Tzolov
36+
* @author Soby Chacko
3437
* @since 1.0.0
3538
*/
3639
public abstract class AbstractObservationVectorStore implements VectorStore {
@@ -42,17 +45,42 @@ public abstract class AbstractObservationVectorStore implements VectorStore {
4245
@Nullable
4346
private final VectorStoreObservationConvention customObservationConvention;
4447

48+
@Nullable
49+
protected final EmbeddingModel embeddingModel;
50+
4551
/**
4652
* Create a new {@link AbstractObservationVectorStore} instance.
4753
* @param observationRegistry the observation registry to use
4854
* @param customObservationConvention the custom observation convention to use
4955
*/
56+
@Deprecated(since = "1.0.0-M5", forRemoval = true)
5057
public AbstractObservationVectorStore(ObservationRegistry observationRegistry,
5158
@Nullable VectorStoreObservationConvention customObservationConvention) {
59+
this(null, observationRegistry, customObservationConvention);
60+
}
61+
62+
/**
63+
* Private constructor that both public constructors delegate to. This helps avoid
64+
* code duplication and centralizes object initialization.
65+
*/
66+
@Deprecated(since = "1.0.0-M5", forRemoval = true)
67+
public AbstractObservationVectorStore(@Nullable EmbeddingModel embeddingModel,
68+
ObservationRegistry observationRegistry,
69+
@Nullable VectorStoreObservationConvention customObservationConvention) {
70+
this.embeddingModel = embeddingModel;
5271
this.observationRegistry = observationRegistry;
5372
this.customObservationConvention = customObservationConvention;
5473
}
5574

75+
/**
76+
* Creates a new AbstractObservationVectorStore instance with the specified builder
77+
* settings. Initializes observation-related components and the embedding model.
78+
* @param builder the builder containing configuration settings
79+
*/
80+
public AbstractObservationVectorStore(AbstractVectorStoreBuilder<?> builder) {
81+
this(builder.embeddingModel(), builder.observationRegistry(), builder.customObservationConvention());
82+
}
83+
5684
/**
5785
* Create a new {@link AbstractObservationVectorStore} instance.
5886
* @param documents the documents to add

spring-ai-core/src/main/java/org/springframework/ai/vectorstore/observation/NewAbstractObservationVectorStore.java

Lines changed: 0 additions & 136 deletions
This file was deleted.

vector-stores/spring-ai-chroma-store/src/main/java/org/springframework/ai/chroma/vectorstore/ChromaVectorStore.java

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
import org.springframework.ai.vectorstore.VectorStore;
4545
import org.springframework.ai.vectorstore.filter.FilterExpressionConverter;
4646
import org.springframework.ai.vectorstore.observation.AbstractObservationVectorStore;
47-
import org.springframework.ai.vectorstore.observation.NewAbstractObservationVectorStore;
4847
import org.springframework.ai.vectorstore.observation.VectorStoreObservationContext;
4948
import org.springframework.ai.vectorstore.observation.VectorStoreObservationConvention;
5049
import org.springframework.beans.factory.InitializingBean;
@@ -66,7 +65,7 @@
6665
* @author Soby Chacko
6766
* @author Thomas Vitale
6867
*/
69-
public class ChromaVectorStore extends NewAbstractObservationVectorStore implements InitializingBean {
68+
public class ChromaVectorStore extends AbstractObservationVectorStore implements InitializingBean {
7069

7170
public static final String DEFAULT_COLLECTION_NAME = "SpringAiCollection";
7271

@@ -87,6 +86,33 @@ public class ChromaVectorStore extends NewAbstractObservationVectorStore impleme
8786

8887
private boolean initialized = false;
8988

89+
@Deprecated(since = "1.0.0-M5", forRemoval = true)
90+
public ChromaVectorStore(EmbeddingModel embeddingModel, ChromaApi chromaApi, boolean initializeSchema) {
91+
this(embeddingModel, chromaApi, DEFAULT_COLLECTION_NAME, initializeSchema);
92+
}
93+
94+
@Deprecated(since = "1.0.0-M5", forRemoval = true)
95+
public ChromaVectorStore(EmbeddingModel embeddingModel, ChromaApi chromaApi, String collectionName,
96+
boolean initializeSchema) {
97+
this(embeddingModel, chromaApi, collectionName, initializeSchema, ObservationRegistry.NOOP, null,
98+
new TokenCountBatchingStrategy());
99+
}
100+
101+
@Deprecated(since = "1.0.0-M5", forRemoval = true)
102+
public ChromaVectorStore(EmbeddingModel embeddingModel, ChromaApi chromaApi, String collectionName,
103+
boolean initializeSchema, ObservationRegistry observationRegistry,
104+
VectorStoreObservationConvention customObservationConvention, BatchingStrategy batchingStrategy) {
105+
106+
super(embeddingModel, observationRegistry, customObservationConvention);
107+
108+
this.chromaApi = chromaApi;
109+
this.collectionName = collectionName;
110+
this.initializeSchema = initializeSchema;
111+
this.filterExpressionConverter = new ChromaFilterExpressionConverter();
112+
this.batchingStrategy = batchingStrategy;
113+
this.objectMapper = JsonMapper.builder().addModules(JacksonUtils.instantiateAvailableModules()).build();
114+
}
115+
90116
/**
91117
* @param builder {@link Builder} for chroma vector store
92118
*/

0 commit comments

Comments
 (0)