Class MongoDBAtlasVectorStore
java.lang.Object
org.springframework.ai.vectorstore.observation.AbstractObservationVectorStore
org.springframework.ai.vectorstore.mongodb.atlas.MongoDBAtlasVectorStore
- All Implemented Interfaces:
Consumer<List<Document>>,DocumentWriter,VectorStore,VectorStoreRetriever,org.springframework.beans.factory.InitializingBean
public class MongoDBAtlasVectorStore
extends AbstractObservationVectorStore
implements org.springframework.beans.factory.InitializingBean
MongoDB Atlas-based vector store implementation using the Atlas Vector Search.
The store uses a MongoDB collection to persist vector embeddings along with their associated document content and metadata. By default, it uses the "vector_store" collection with a vector search index for similarity search operations.
Features:
- Automatic schema initialization with configurable collection and index creation
- Support for cosine similarity search
- Metadata filtering using MongoDB Atlas Search syntax
- Configurable similarity thresholds for search results
- Batch processing support with configurable batching strategies
- Observation and metrics support through Micrometer
Basic usage example:
MongoDBAtlasVectorStore vectorStore = MongoDBAtlasVectorStore.builder(mongoTemplate, embeddingModel)
.collectionName("vector_store")
.initializeSchema(true)
.build();
// Add documents
vectorStore.add(List.of(
new Document("content1", Map.of("key1", "value1")),
new Document("content2", Map.of("key2", "value2"))
));
// Search with filters
List<Document> results = vectorStore.similaritySearch(
SearchRequest.query("search text")
.withTopK(5)
.withSimilarityThreshold(0.7)
.withFilterExpression("key1 == 'value1'")
);
Advanced configuration example:
MongoDBAtlasVectorStore vectorStore = MongoDBAtlasVectorStore.builder(mongoTemplate, embeddingModel)
.collectionName("custom_vectors")
.vectorIndexName("custom_vector_index")
.pathName("custom_embedding")
.numCandidates(500)
.metadataFieldsToFilter(List.of("category", "author"))
.initializeSchema(true)
.batchingStrategy(new TokenCountBatchingStrategy())
.build();
Database Requirements:
- MongoDB Atlas cluster with Vector Search enabled
- Collection with vector search index configured
- Collection schema with id (string), content (string), metadata (document), and embedding (vector) fields
- Proper access permissions for index and collection operations
- Since:
- 1.0.0
- Author:
- Chris Smith, Soby Chacko, Christian Tzolov, Thomas Vitale, Ilayaperumal Gopinathan
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic final recordThe representation ofDocumentalong with its embedding. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final StringFields inherited from class org.springframework.ai.vectorstore.observation.AbstractObservationVectorStore
batchingStrategy, embeddingModel -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected -
Method Summary
Modifier and TypeMethodDescriptionvoidbuilder(org.springframework.data.mongodb.core.MongoTemplate mongoTemplate, EmbeddingModel embeddingModel) Creates a new builder instance for MongoDBAtlasVectorStore.createObservationContextBuilder(String operationName) Create a newVectorStoreObservationContext.Builderinstance.voidPerform the actual add operation.voidPerform the actual delete operation.protected voiddoDelete(Filter.Expression filterExpression) Template method for concrete implementations to provide filter-based deletion logic.doSimilaritySearch(SearchRequest request) Perform the actual similarity search operation.<T> Optional<T> Returns the native client if available in this vector store implementation.similaritySearch(String query) Retrieves documents by query embedding similarity using the defaultSearchRequest's search criteria.Methods inherited from class org.springframework.ai.vectorstore.observation.AbstractObservationVectorStore
add, delete, delete, similaritySearchMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.ai.document.DocumentWriter
writeMethods inherited from interface org.springframework.ai.vectorstore.VectorStore
accept, delete, getName
-
Field Details
-
ID_FIELD_NAME
- See Also:
-
METADATA_FIELD_NAME
- See Also:
-
CONTENT_FIELD_NAME
- See Also:
-
SCORE_FIELD_NAME
- See Also:
-
DEFAULT_VECTOR_COLLECTION_NAME
- See Also:
-
-
Constructor Details
-
MongoDBAtlasVectorStore
-
-
Method Details
-
afterPropertiesSet
- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Throws:
Exception
-
doAdd
Description copied from class:AbstractObservationVectorStorePerform the actual add operation.- Specified by:
doAddin classAbstractObservationVectorStore- Parameters:
documents- the documents to add
-
doDelete
Description copied from class:AbstractObservationVectorStorePerform the actual delete operation.- Specified by:
doDeletein classAbstractObservationVectorStore- Parameters:
idList- the list of document IDs to delete
-
doDelete
Description copied from class:AbstractObservationVectorStoreTemplate method for concrete implementations to provide filter-based deletion logic.- Overrides:
doDeletein classAbstractObservationVectorStore- Parameters:
filterExpression- Filter expression to identify documents to delete
-
similaritySearch
Description copied from interface:VectorStoreRetrieverRetrieves documents by query embedding similarity using the defaultSearchRequest's search criteria.- Specified by:
similaritySearchin interfaceVectorStoreRetriever- Parameters:
query- Text to use for embedding similarity comparison.- Returns:
- Returns a list of documents that have embeddings similar to the query text embedding.
-
doSimilaritySearch
Description copied from class:AbstractObservationVectorStorePerform the actual similarity search operation.- Specified by:
doSimilaritySearchin classAbstractObservationVectorStore- Parameters:
request- the search request- Returns:
- the list of documents that match the query request conditions
-
createObservationContextBuilder
Description copied from class:AbstractObservationVectorStoreCreate a newVectorStoreObservationContext.Builderinstance.- Specified by:
createObservationContextBuilderin classAbstractObservationVectorStore- Parameters:
operationName- the operation name- Returns:
- the observation context builder
-
getNativeClient
Description copied from interface:VectorStoreReturns the native client if available in this vector store implementation. Note on usage: 1. Returns empty Optional when no native client is available 2. Due to Java type erasure, runtime type checking is not possible Example usage: When working with implementation with known native client: Optionalclient = vectorStore.getNativeClient(); Note: Using Optionalinvalid input: '<'?> will return the native client if one exists, rather than an empty Optional. For type safety, prefer using the specific client type. - Specified by:
getNativeClientin interfaceVectorStore- Type Parameters:
T- The type of the native client- Returns:
- Optional containing native client if available, empty Optional otherwise
-
builder
public static MongoDBAtlasVectorStore.Builder builder(org.springframework.data.mongodb.core.MongoTemplate mongoTemplate, EmbeddingModel embeddingModel) Creates a new builder instance for MongoDBAtlasVectorStore.- Returns:
- a new MongoDBBuilder instance
-