Skip to content
LangChain4j 文档版本 1.22.0 源快照 1e9f49fb 更新于 2026-10-14

Google Gen AI 嵌入(实验性)

https://github.com/googleapis/java-genai

本集成使用官方的 Google Gen AI Java SDK(com.google.genai:google-genai)。它被标记为 实验性:其 API 与实现在未来版本中可能变化。

Maven 依赖

xml
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-google-genai</artifactId>
    <version>1.22.0-beta32</version>
</dependency>

API 密钥

在此免费获取 API 密钥:https://ai.google.dev/gemini-api/docs/api-key 。

可用模型

参见可用的嵌入模型, 例如:

  • gemini-embedding-001 —— 仅文本;支持任务类型与输出维度(128–3072)。
  • gemini-embedding-2 —— 原生多模态;不使用 task type 参数(关于任务指令如何 配合 Gemini Embedding 2 工作,参见 Google AI Gemini Embeddings)。

GoogleGenAiEmbeddingModel

基本用法

java
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();

配置嵌入模型

java
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(...) 配置,以观察请求、 响应与错误。
java
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 —— 文本与图像融合为一个嵌入):

java
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,参见嵌入模型; 关于监听器,参见可观测性。

了解更多

关于 Gemini 嵌入模型的更多细节,参见 文档。

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。