跳到主要内容

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 嵌入模型的更多细节,参见 文档