Class RedisVLEmbeddingStore

java.lang.Object
com.redis.vl.langchain4j.RedisVLEmbeddingStore
All Implemented Interfaces:
dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>

public class RedisVLEmbeddingStore extends Object implements dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
LangChain4J EmbeddingStore implementation using RedisVL as the backend.

This adapter allows using Redis as a vector store for LangChain4J applications, providing seamless integration between LangChain4J's RAG framework and RedisVL's vector search capabilities.

Example usage:


 // Create Redis index
 SearchIndex index = createEmbeddingIndex("my_embeddings", 384);

 // Create embedding store
 EmbeddingStore<TextSegment> embeddingStore = new RedisVLEmbeddingStore(index);

 // Use with LangChain4J
 EmbeddingModel embeddingModel = new AllMiniLmL6V2EmbeddingModel();
 embeddingStore.add(embeddingModel.embed("Hello").content(),
                    TextSegment.from("Hello world"));

 // Search
 List<EmbeddingMatch<TextSegment>> matches =
     embeddingStore.findRelevant(queryEmbedding, 10);
 

Score Conversion: Redis uses COSINE distance (0-2, lower is better), while LangChain4J uses similarity scores (0-1, higher is better). This class handles the conversion automatically using similarity = (2 - distance) / 2.

  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a new RedisVLEmbeddingStore with default field names.
    RedisVLEmbeddingStore(SearchIndex searchIndex, String textFieldName, String metadataFieldName, String vectorFieldName)
    Creates a new RedisVLEmbeddingStore with custom field names.
  • 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)
     
    void
    add(String id, dev.langchain4j.data.embedding.Embedding embedding, dev.langchain4j.data.segment.TextSegment textSegment)
    Adds an embedding with a specified ID and text segment.
    addAll(List<dev.langchain4j.data.embedding.Embedding> embeddings)
     
    addAll(List<dev.langchain4j.data.embedding.Embedding> embeddings, List<dev.langchain4j.data.segment.TextSegment> textSegments)
     
    List<dev.langchain4j.store.embedding.EmbeddingMatch<dev.langchain4j.data.segment.TextSegment>>
    findRelevant(dev.langchain4j.data.embedding.Embedding referenceEmbedding, int maxResults)
     
    List<dev.langchain4j.store.embedding.EmbeddingMatch<dev.langchain4j.data.segment.TextSegment>>
    findRelevant(dev.langchain4j.data.embedding.Embedding referenceEmbedding, int maxResults, double minScore)
     
    Gets the underlying SearchIndex.
    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 java.lang.Object

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

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

    findRelevant, findRelevant, remove
  • Constructor Details

    • RedisVLEmbeddingStore

      public RedisVLEmbeddingStore(SearchIndex searchIndex)
      Creates a new RedisVLEmbeddingStore with default field names.
      Parameters:
      searchIndex - The Redis search index to use for storage
    • RedisVLEmbeddingStore

      public RedisVLEmbeddingStore(SearchIndex searchIndex, String textFieldName, String metadataFieldName, String vectorFieldName)
      Creates a new RedisVLEmbeddingStore with custom field names.
      Parameters:
      searchIndex - The Redis search index to use for storage
      textFieldName - Name of the field storing text content
      metadataFieldName - Name of the field storing metadata (JSON)
      vectorFieldName - Name of the field storing embeddings
  • Method Details

    • 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 void add(String id, dev.langchain4j.data.embedding.Embedding embedding, dev.langchain4j.data.segment.TextSegment textSegment)
      Adds an embedding with a specified ID and text segment.
      Parameters:
      id - The unique identifier for the embedding
      embedding - The embedding vector
      textSegment - The text segment with metadata
    • 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>
    • addAll

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

      public List<dev.langchain4j.store.embedding.EmbeddingMatch<dev.langchain4j.data.segment.TextSegment>> findRelevant(dev.langchain4j.data.embedding.Embedding referenceEmbedding, int maxResults)
      Specified by:
      findRelevant 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>
    • findRelevant

      public List<dev.langchain4j.store.embedding.EmbeddingMatch<dev.langchain4j.data.segment.TextSegment>> findRelevant(dev.langchain4j.data.embedding.Embedding referenceEmbedding, int maxResults, double minScore)
      Specified by:
      findRelevant 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>
    • removeAll

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

      public SearchIndex getSearchIndex()
      Gets the underlying SearchIndex.
      Returns:
      The Redis search index