Class MongoDbEmbeddingStore

java.lang.Object
dev.langchain4j.store.embedding.mongodb.MongoDbEmbeddingStore
All Implemented Interfaces:
dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>

public class MongoDbEmbeddingStore extends Object implements dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
Represents a MongoDB indexed collection as an embedding store.

More info on using MongoDb vector search.

tutorial how to use vector search with MongoDB Atlas (great starting point).

To deploy a local instance of Atlas, see this guide.

If you are using a free tier, #createIndex = true might not be supported, so you will need to create an index manually. In your Atlas web console go to: DEPLOYMENT -> Database -> {your cluster} -> Atlas Search tab -> Create Index Search -> "JSON Editor" under "Atlas Vector Search" (not "Atlas Search") -> Next -> Select your database in the left pane -> Insert the following JSON into the right pane (set "numDimensions" and additional metadata fields to desired values)

{
  "fields" : [ {
    "type" : "vector",
    "path" : "embedding",
    "numDimensions" : 384,
    "similarity" : "cosine"
  }, {
    "type" : "filter",
    "path" : "metadata.test-key"
  } ]
}
-> Next -> Create Search Index
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    MongoDbEmbeddingStore(com.mongodb.client.MongoClient mongoClient, String databaseName, String collectionName, String indexName, Long maxResultRatio, com.mongodb.client.model.CreateCollectionOptions createCollectionOptions, org.bson.conversions.Bson filter, IndexMapping indexMapping, Boolean createIndex)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    add(dev.langchain4j.data.embedding.Embedding embedding)
     
    add(dev.langchain4j.data.embedding.Embedding embedding, dev.langchain4j.data.segment.TextSegment textSegment)
     
    void
    add(String id, dev.langchain4j.data.embedding.Embedding embedding)
     
    addAll(List<dev.langchain4j.data.embedding.Embedding> embeddings)
     
    void
    addAll(List<String> ids, List<dev.langchain4j.data.embedding.Embedding> embeddings, List<dev.langchain4j.data.segment.TextSegment> embedded)
     
     
    void
     
    void
    removeAll(dev.langchain4j.store.embedding.filter.Filter filter)
     
    void
     
    dev.langchain4j.store.embedding.EmbeddingSearchResult<dev.langchain4j.data.segment.TextSegment>
    search(dev.langchain4j.store.embedding.EmbeddingSearchRequest request)
     

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface dev.langchain4j.store.embedding.EmbeddingStore

    addAll, generateIds, remove
  • Constructor Details

    • MongoDbEmbeddingStore

      public MongoDbEmbeddingStore(com.mongodb.client.MongoClient mongoClient, String databaseName, String collectionName, String indexName, Long maxResultRatio, com.mongodb.client.model.CreateCollectionOptions createCollectionOptions, org.bson.conversions.Bson filter, IndexMapping indexMapping, Boolean createIndex)
  • Method Details

    • builder

      public static MongoDbEmbeddingStore.Builder builder()
    • add

      public String add(dev.langchain4j.data.embedding.Embedding embedding)
      Specified by:
      add in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • add

      public void add(String id, dev.langchain4j.data.embedding.Embedding embedding)
      Specified by:
      add in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • add

      public String add(dev.langchain4j.data.embedding.Embedding embedding, dev.langchain4j.data.segment.TextSegment textSegment)
      Specified by:
      add in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • addAll

      public List<String> addAll(List<dev.langchain4j.data.embedding.Embedding> embeddings)
      Specified by:
      addAll in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • removeAll

      public void removeAll()
      Specified by:
      removeAll in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • removeAll

      public void removeAll(Collection<String> ids)
      Specified by:
      removeAll in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • removeAll

      public void removeAll(dev.langchain4j.store.embedding.filter.Filter filter)
      Specified by:
      removeAll in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • search

      public dev.langchain4j.store.embedding.EmbeddingSearchResult<dev.langchain4j.data.segment.TextSegment> search(dev.langchain4j.store.embedding.EmbeddingSearchRequest request)
      Specified by:
      search in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • addAll

      public void addAll(List<String> ids, List<dev.langchain4j.data.embedding.Embedding> embeddings, List<dev.langchain4j.data.segment.TextSegment> embedded)
      Specified by:
      addAll in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>