Class LangChain4JVectorizer

java.lang.Object
com.redis.vl.utils.vectorize.BaseVectorizer
com.redis.vl.utils.vectorize.LangChain4JVectorizer

public class LangChain4JVectorizer extends BaseVectorizer
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.

  • 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 model
      embeddingModel - 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 model
      embeddingModel - The LangChain4J embedding model instance
      dimensions - 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 model
      embeddingModel - The LangChain4J embedding model instance
      dimensions - The dimension of the embedding vectors
      dtype - 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 model
      embeddingModel - The LangChain4J embedding model instance
      cache - The embeddings cache to use
  • Method Details

    • generateEmbedding

      protected float[] generateEmbedding(String text)
      Description copied from class: BaseVectorizer
      Generate embedding for a single text (to be implemented by subclasses).
      Specified by:
      generateEmbedding in class BaseVectorizer
      Parameters:
      text - The text to embed
      Returns:
      The embedding vector
    • generateEmbeddingsBatch

      protected List<float[]> generateEmbeddingsBatch(List<String> texts, int batchSize)
      Description copied from class: BaseVectorizer
      Generate embeddings for multiple texts in batch (to be implemented by subclasses).
      Specified by:
      generateEmbeddingsBatch in class BaseVectorizer
      Parameters:
      texts - The texts to embed
      batchSize - 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

      public String getType()
      Description copied from class: BaseVectorizer
      Get the vector type identifier.
      Overrides:
      getType in class BaseVectorizer
      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