Google Gen AI Embeddings(实验性)
https://github.com/googleapis/java-genai
本集成使用官方 Google Gen AI Java SDK(com.google.genai:google-genai)。标记为
实验性(Experimental):API 与实现可能在未来版本中变化。
Maven 依赖
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-google-genai</artifactId>
<version>1.18.1-beta28</version>
</dependency>
API Key
可在此免费获取 API key:https://ai.google.dev/gemini-api/docs/api-key 。
可用模型
参见可用嵌入模型,例如:
gemini-embedding-001— 仅文本;支持任务类型与输出维度(128–3072)。gemini-embedding-2— 原生多模态;不使用任务类型参数(关于 Gemini Embedding 2 的任务指令如何工作,参见 Google AI Gemini Embeddings)。
GoogleGenAiEmbeddingModel
基本用法
EmbeddingModel embeddingModel = GoogleGenAiEmbeddingModel.builder()
.apiKey(System.getenv("GOOGLE_AI_GEMINI_API_KEY"))
.modelName("gemini-embedding-001")
.build();
Response<Embedding> response = embeddingModel.embed("Hello, world!");
Embedding embedding = response.content();
配置嵌入模型
EmbeddingModel embeddingModel = GoogleGenAiEmbeddingModel.builder()
.apiKey(System.getenv("GOOGLE_AI_GEMINI_API_KEY"))
.modelName("gemini-embedding-001")
.taskType(GoogleGenAiEmbeddingModel.TaskTypeEnum.RETRIEVAL_DOCUMENT) // default task type
.outputDimensionality(768) // reduce the embedding size (for models that support it)
.titleMetadataKey("title") // metadata key used as the document title for RETRIEVAL_DOCUMENT
.maxRetries(3)
.timeout(Duration.ofSeconds(30))
.build();
请求/响应 API 与能力
除便捷方法与 builder 级的 taskType(...) 外,GoogleGenAiEmbeddingModel 还支持带每次调用参数的请求/响应 API:
- 输入类型:
EmbeddingInputType.QUERY/DOCUMENT映射到 SDK 的RETRIEVAL_QUERY/RETRIEVAL_DOCUMENT任务类型,因此无需配置两个模型实例即可区分查询与文档嵌入。(适用于支持任务类型的模型,如gemini-embedding-001。) - 维度:每次调用的
dimensions(...)会覆盖 builder 的outputDimensionality(对支持缩小输出尺寸的模型)。 - 多模态(
gemini-embedding-2):原生将交错的文本 + 图像嵌入为单个向量。 更早的模型(如gemini-embedding-001)仅支持文本。图像必须以 base64(ImageContent)提供。 - 监听器:通过
GoogleGenAiEmbeddingModel.builder().listeners(...)配置,以观察请求、响应与错误。
EmbeddingResponse response = embeddingModel.embed(EmbeddingRequest.builder()
.input("What is the capital of France?")
.inputType(EmbeddingInputType.QUERY) // embed as a query
.dimensions(256) // reduce output dimensionality
.build());
List<Embedding> embeddings = response.embeddings();
多模态示例(Gemini Embedding 2 — 文本与图像融合为单个嵌入):
EmbeddingModel embeddingModel = GoogleGenAiEmbeddingModel.builder()
.apiKey(System.getenv("GOOGLE_AI_GEMINI_API_KEY"))
.modelName("gemini-embedding-2")
.build();
EmbeddingResponse response = embeddingModel.embed(EmbeddingRequest.builder()
.input(TextContent.from("a photo of a cat"), ImageContent.from(base64Image, "image/png"))
.build());
Embedding embedding = response.embeddings().get(0);
关于请求/响应 API,参见 Embedding Model;关于监听器,参见 Observability。
了解更多
关于 Gemini 嵌入模型的更多细节,参见 文档。