Package com.redis.vl.langchain4j
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
ConstructorsConstructorDescriptionRedisVLEmbeddingStore(SearchIndex searchIndex) 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 TypeMethodDescriptionadd(dev.langchain4j.data.embedding.Embedding embedding) add(dev.langchain4j.data.embedding.Embedding embedding, dev.langchain4j.data.segment.TextSegment textSegment) voidvoidadd(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, 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.voidvoidremoveAll(dev.langchain4j.store.embedding.filter.Filter filter) voidremoveAll(Collection<String> ids) 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, waitMethods inherited from interface dev.langchain4j.store.embedding.EmbeddingStore
findRelevant, findRelevant, remove
-
Constructor Details
-
RedisVLEmbeddingStore
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 storagetextFieldName- Name of the field storing text contentmetadataFieldName- Name of the field storing metadata (JSON)vectorFieldName- Name of the field storing embeddings
-
-
Method Details
-
add
- Specified by:
addin interfacedev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
-
add
- Specified by:
addin interfacedev.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 embeddingembedding- The embedding vectortextSegment- The text segment with metadata
-
add
public String add(dev.langchain4j.data.embedding.Embedding embedding, dev.langchain4j.data.segment.TextSegment textSegment) - Specified by:
addin interfacedev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
-
addAll
- Specified by:
addAllin interfacedev.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:
addAllin interfacedev.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:
findRelevantin interfacedev.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:
searchin interfacedev.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:
findRelevantin interfacedev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
-
removeAll
- Specified by:
removeAllin interfacedev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
-
removeAll
public void removeAll(dev.langchain4j.store.embedding.filter.Filter filter) - Specified by:
removeAllin interfacedev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
-
removeAll
public void removeAll()- Specified by:
removeAllin interfacedev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
-
getSearchIndex
Gets the underlying SearchIndex.- Returns:
- The Redis search index
-