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