LangChain4j integration for Google Vertex AI models including chat, language, embedding, image, and scoring capabilities
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Text embeddings using Google Vertex AI embedding models for semantic search, retrieval, and similarity. Extends LangChain4j DimensionAwareEmbeddingModel.
public class VertexAiEmbeddingModel extends DimensionAwareEmbeddingModel {
public Response<List<Embedding>> embedAll(List<TextSegment> segments);
public String modelName();
public List<Integer> calculateTokensCounts(List<TextSegment> segments);
public static Builder builder();
// Public constants
public static final Integer DEFAULT_MAX_SEGMENTS_PER_BATCH = 250;
public static final Integer DEFAULT_MAX_TOKENS_PER_BATCH = 20000;
}import dev.langchain4j.model.vertexai.VertexAiEmbeddingModel;
import dev.langchain4j.model.vertexai.VertexAiEmbeddingModel.TaskType;
import dev.langchain4j.model.vertexai.VertexAiEmbeddingModelName;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.data.embedding.Embedding;
import dev.langchain4j.model.output.Response;VertexAiEmbeddingModel model = VertexAiEmbeddingModel.builder()
.endpoint("us-central1-aiplatform.googleapis.com:443")
.project("your-project-id")
.location("us-central1")
.publisher("google")
.modelName("text-embedding-004")
.build();
List<TextSegment> segments = List.of(
TextSegment.from("First document"),
TextSegment.from("Second document")
);
Response<List<Embedding>> response = model.embedAll(segments);
List<Embedding> embeddings = response.content();text-embedding-004 - Latest, 768 dimensionstextembedding-gecko@001/002/003 - Gecko models, 768 dimensionstext-multilingual-embedding-002 - Multilingual, 768 dimensionsmultimodalembedding - Multimodal, 1408 dimensionsendpoint - API endpoint (different format: {region}-aiplatform.googleapis.com:443)project - Google Cloud Project IDlocation - GCP regionpublisher - Model publisher ("google")modelName - Model name/versionmaxRetries (Integer) - Retry attempts (default: 2)maxSegmentsPerBatch (Integer) - Max segments per API call (default: 250)maxTokensPerBatch (Integer) - Max tokens per batch (default: 20,000)taskType (TaskType) - Optimization for specific taskstitleMetadataKey (String) - Metadata key for titles (default: "title")autoTruncate (Boolean) - Auto-truncate long texts (default: false)outputDimensionality (Integer) - Custom embedding dimensioncredentials (GoogleCredentials) - Custom authpublic enum TaskType {
RETRIEVAL_QUERY, // Query for retrieval
RETRIEVAL_DOCUMENT, // Document for retrieval
SEMANTIC_SIMILARITY, // Similarity comparison
CLASSIFICATION, // Text classification
CLUSTERING, // Text clustering
QUESTION_ANSWERING, // Question answering
FACT_VERIFICATION, // Fact verification
CODE_RETRIEVAL_QUERY // Code retrieval
}Usage: Use RETRIEVAL_DOCUMENT for indexing, RETRIEVAL_QUERY for searching.
Install with Tessl CLI
npx tessl i tessl/maven-dev-langchain4j--langchain4j-vertex-ai