Package com.redis.vl.utils.vectorize
Class LangChain4JVectorizer
java.lang.Object
com.redis.vl.utils.vectorize.BaseVectorizer
com.redis.vl.utils.vectorize.LangChain4JVectorizer
LangChain4J-based vectorizer that can work with any LangChain4J EmbeddingModel. This provides a
unified interface to all embedding providers supported by LangChain4J including OpenAI, Azure
OpenAI, HuggingFace, Ollama, and local models.
Example usage:
// Using OpenAI (API key from environment variable - recommended)
EmbeddingModel openAI = OpenAiEmbeddingModel.builder()
.apiKey(System.getenv("OPENAI_API_KEY"))
.modelName("text-embedding-3-small")
.build();
LangChain4JVectorizer vectorizer = new LangChain4JVectorizer(
"text-embedding-3-small",
openAI,
1536
);
// Using local model (no API key needed)
EmbeddingModel local = new AllMiniLmL6V2EmbeddingModel();
LangChain4JVectorizer vectorizer = new LangChain4JVectorizer("all-minilm-l6-v2", local);
// With cache for better performance
EmbeddingsCache cache = new EmbeddingsCache("my-cache", redisClient);
vectorizer.setCache(cache);
// Embed text
float[] embedding = vectorizer.embed("Hello world");
Security Best Practice: Always use environment variables or secure configuration management for API keys. Never hardcode keys in your source code.
-
Nested Class Summary
Nested classes/interfaces inherited from class com.redis.vl.utils.vectorize.BaseVectorizer
BaseVectorizer.BatchCacheResult -
Field Summary
Fields inherited from class com.redis.vl.utils.vectorize.BaseVectorizer
cache, dimensions, dtype, modelName -
Constructor Summary
ConstructorsConstructorDescriptionLangChain4JVectorizer(String modelName, dev.langchain4j.model.embedding.EmbeddingModel embeddingModel) Creates a new LangChain4JVectorizer with auto-detected dimensions.LangChain4JVectorizer(String modelName, dev.langchain4j.model.embedding.EmbeddingModel embeddingModel, int dimensions) Creates a new LangChain4JVectorizer with known dimensions.LangChain4JVectorizer(String modelName, dev.langchain4j.model.embedding.EmbeddingModel embeddingModel, int dimensions, String dtype) Creates a new LangChain4JVectorizer with known dimensions and data type.LangChain4JVectorizer(String modelName, dev.langchain4j.model.embedding.EmbeddingModel embeddingModel, EmbeddingsCache cache) Creates a new LangChain4JVectorizer with cache. -
Method Summary
Modifier and TypeMethodDescriptionbooleanCheck if dimensions have been auto-detected.protected float[]generateEmbedding(String text) Generate embedding for a single text (to be implemented by subclasses).protected List<float[]> generateEmbeddingsBatch(List<String> texts, int batchSize) Generate embeddings for multiple texts in batch (to be implemented by subclasses).dev.langchain4j.model.embedding.EmbeddingModelGet the underlying LangChain4J embedding model.getType()Get the vector type identifier.voidsetDimensions(int dimensions) Manually set the dimensions (useful if you know them ahead of time).Methods inherited from class com.redis.vl.utils.vectorize.BaseVectorizer
embed, embed, embedBatch, embedBatch, getCache, getDataType, getDimensions, getModelName, processEmbedding, setCache
-
Constructor Details
-
LangChain4JVectorizer
public LangChain4JVectorizer(String modelName, dev.langchain4j.model.embedding.EmbeddingModel embeddingModel) Creates a new LangChain4JVectorizer with auto-detected dimensions.- Parameters:
modelName- The name of the embedding modelembeddingModel- The LangChain4J embedding model instance
-
LangChain4JVectorizer
public LangChain4JVectorizer(String modelName, dev.langchain4j.model.embedding.EmbeddingModel embeddingModel, int dimensions) Creates a new LangChain4JVectorizer with known dimensions.- Parameters:
modelName- The name of the embedding modelembeddingModel- The LangChain4J embedding model instancedimensions- The dimension of the embedding vectors
-
LangChain4JVectorizer
public LangChain4JVectorizer(String modelName, dev.langchain4j.model.embedding.EmbeddingModel embeddingModel, int dimensions, String dtype) Creates a new LangChain4JVectorizer with known dimensions and data type.- Parameters:
modelName- The name of the embedding modelembeddingModel- The LangChain4J embedding model instancedimensions- The dimension of the embedding vectorsdtype- The data type for embeddings
-
LangChain4JVectorizer
public LangChain4JVectorizer(String modelName, dev.langchain4j.model.embedding.EmbeddingModel embeddingModel, EmbeddingsCache cache) Creates a new LangChain4JVectorizer with cache.- Parameters:
modelName- The name of the embedding modelembeddingModel- The LangChain4J embedding model instancecache- The embeddings cache to use
-
-
Method Details
-
generateEmbedding
Description copied from class:BaseVectorizerGenerate embedding for a single text (to be implemented by subclasses).- Specified by:
generateEmbeddingin classBaseVectorizer- Parameters:
text- The text to embed- Returns:
- The embedding vector
-
generateEmbeddingsBatch
Description copied from class:BaseVectorizerGenerate embeddings for multiple texts in batch (to be implemented by subclasses).- Specified by:
generateEmbeddingsBatchin classBaseVectorizer- Parameters:
texts- The texts to embedbatchSize- Number of texts to process per batch- Returns:
- List of embedding vectors
-
getEmbeddingModel
public dev.langchain4j.model.embedding.EmbeddingModel getEmbeddingModel()Get the underlying LangChain4J embedding model.- Returns:
- The embedding model instance
-
getType
Description copied from class:BaseVectorizerGet the vector type identifier.- Overrides:
getTypein classBaseVectorizer- Returns:
- The type of vectorizer
-
areDimensionsDetected
public boolean areDimensionsDetected()Check if dimensions have been auto-detected.- Returns:
- true if dimensions are known, false if still auto-detecting
-
setDimensions
public void setDimensions(int dimensions) Manually set the dimensions (useful if you know them ahead of time).- Parameters:
dimensions- The number of dimensions
-